NoSQL Benchmarks NoSQL use cases NoSQL Videos NoSQL Hybrid Solutions NoSQL Presentations Big Data Hadoop MapReduce Pig Hive Flume Oozie Sqoop HDFS ZooKeeper Cascading Cascalog BigTable Cassandra HBase Hypertable Couchbase CouchDB MongoDB OrientDB RavenDB Jackrabbit Terrastore Amazon DynamoDB Redis Riak Project Voldemort Tokyo Cabinet Kyoto Cabinet memcached Amazon SimpleDB Datomic MemcacheDB M/DB GT.M Amazon Dynamo Dynomite Mnesia Yahoo! PNUTS/Sherpa Neo4j InfoGrid Sones GraphDB InfiniteGraph AllegroGraph MarkLogic Clustrix CouchDB Case Studies MongoDB Case Studies NoSQL at Adobe NoSQL at Facebook NoSQL at Twitter



JavaScript: All content tagged as JavaScript in NoSQL databases and polyglot persistence

Couchjs: Drop-In Replacement Javascript V8 Engine for Apache CouchDB

By the Iris Couch guys that are also providing Apache CouchDB cloud hosting:

couchjs is a command-line Node.js program. It is 100% compatible with Apache CouchDB’s built-in JavaScript system.

By using couchjs, you will get 100% CouchDB compatibility (the test suite completely passes) but your JavaScript environment is V8, or Node.js.

Original title and link: Couchjs: Drop-In Replacement Javascript V8 Engine for Apache CouchDB (NoSQL database©myNoSQL)


CouchDB, TouchDB, PouchDB…

Calvin Metcalf writes about PouchDB, which is neither TouchDB nor CouchDB:

Before we discus PouchDB we’re going to need to talk about CouchDB which Pouch is based on. […] So one of the issues with CouchDB is that Erlang…well lets just say people have mixed feelings about it, which lead to pretty quickly, CouchDB compatible Databases, Big Couch from Cloudant which you can cluster, TouchDB is a version written in Objective-C targeting embedded apps, and then we have PouchDB.

Hurry as you may run out of names: AouchDB, BouchDB, DouchDB, EouchDB, FouchDB, GouchDB, HouchDB, IouchDB, JouchDB, KouchDB, LouchDB, MouchDB, NouchDB, QouchDB, RouchDB, SouchDB, UouchDB, VouchDB, WouchDB, XouchDB, YouchDB, ZouchDB. For special requests we could expand to using unicode and emoji.

Original title and link: CouchDB, TouchDB, PouchDB… (NoSQL database©myNoSQL)

Rickshaw: Interactive Time Series Graphs JavaScript Toolkit

Rickshaw is a JavaScript library providing the elements needed to create interactive time series graphs: renderers, legends, hovers, range selectors:

Rickshaw Scatter plot with multiple series

The Richshaw example page lists many other visualizations.

Original title and link: Rickshaw: Interactive Time Series Graphs JavaScript Toolkit (NoSQL database©myNoSQL)

MongoDB and Node.js With Geddy: Persisting a Todo List

In this three part tutorial, we’ll be diving deep into creating a to do list management app in Node.js and Geddy. This is the last entry in the series, where we’ll be persisting our todo items to MongoDB.

Nice intro to using MongoDB from GeddyJS1 on Node.js. But if you need a todo application just download one from the AppStore.

  1. GeddyJS: a simple, structured web framework for Node.js 

Original title and link: MongoDB and Node.js With Geddy: Persisting a Todo List (NoSQL database©myNoSQL)


Riak Performance of Link Walking vs MapReduce

If you are asked to compare (or you just wonder about) the performance of link walking and map-reduce in Riak keep in mind the following details of how the two mechanism are implemented:

The biggest difference I see is that the link-walk uses an Erlang function where your MapReduce query uses a Javascript function (link-walking is implemented as a MapReduce query internally).

Serializing/deserializing to JSON as well as contention for Javascript VMs likely accounts for the lost time.

My emphasis on Bryan Fink’s email from Riak’s mailing list.

Original title and link: Riak Performance of Link Walking vs MapReduce (NoSQL database©myNoSQL)

Attacking NoSQL and Node.js: Server-Side JavaScript Injection (SSJS)

Jeff Darcy has written a while back about the (lack of) security in NoSQL database. Unfortunately things haven’t changed much and if you check the NoSQL + Node.js applications I’ve posted lately you’ll notice that some of them are completely ignoring security.

And there are some people realizing the risks and starting to express their concerns:

Playing with MongoDB lately, I’m getting scared. Because I’m seeing some really bad practices out there. Seeing it in live code. In tutorials.

Bryan Sullivan (Senior Security Researcher, Adobe Secure Software Engineering Team) has published a paper (PDF) explaining some of the possible server-side JavaScript injection attacks and the risks the apps and the data are exposed to. Teaser: he can do pretty much everything.

It should be noted that exploitation of server-side JavaScript injection vulnerabilities is more like that of SQL injection than of cross-site scripting. SSJS injection does not require any social engineering of an intermediate victim user the way that reflected XSS or DOM-based XSS do; instead, the attacker can attack the application directly with arbitrarily created HTTP requests.

Because of this, defenses against SSJS injection are also similar to SQL injection defenses:

  • Avoid creating “ad-hoc” JavaScript commands by concatenating script with user input.
  • Validate user input used in SSJS commands with regular expressions.
  • Avoid use of the JavaScript eval command. In particular, when parsing JSON input, use a safer alternative such as JSON.parse.

Remember there’s no such thing as security through obscurity.

Original title and link: Attacking NoSQL and Node.js: Server-Side JavaScript Injection (SSJS) (NoSQL database©myNoSQL)

Using GeoCouch for Serving-Up GeoJSON

Todd Jackson:

It took around 30 minutes for my 2.5 million records to load, which isn’t too bad considering it took about 20 minutes in PostGIS.  My PostGIS table is approximately 950MB in size, while my CouchBase database, with just the data is 3.7GB, so there is a fairly large difference there. […] While the size/time to create spatial indexes in CouchDB is much larger/longer than PostGIS, I think it is a platform that will improve over time.

CouchDB has other benefits such as the distributed architecture that allows it to scale out, as well as Couchbase having a mobile solution as well, which when combined with the master-master replication scheme could enable some compelling mobile solutions.

For this use case another advantage is that both data and the code (server and client side) are all JavaScript. No impedance mismatch.

Original title and link: Using GeoCouch for Serving-Up GeoJSON (NoSQL database©myNoSQL)


Node.js + MongoDB = Love

Pair Joyent Cloud’s hosted node.js SmartMachine Appliance with MongoLab’s hosted MongoDB and the integration becomes downright operatic. Angels sing. Trumpets blare. Grey storm thunderheads of object-relational-mapping haze part. Revealed are golden rays of low-impedance JSON object storage and query. All in the fertile green valley of asynchronous JavaScript on the unflappable, cool bedrock of Joyent’s SmartMachine hosting platform. Songbirds tweet. Life is good. Metaphors strain.

All that until you have to debug your code to find a missing var or purely drown under a pile of unmaintainable async Javascript code.

Original title and link: Node.js + MongoDB = Love (NoSQL database©myNoSQL)


Lamer News: A Redis-Sinatra-JQuery HN-like News Site

Salvatore antirez Sanfilippo has published on GitHub Lamer News a Hacker News like social site built on top of Redis, Sinatra, and jQuery—when writing this I’ve already checked out the code. For a long time Twitter-related and blog-related projects have been the favorite demos for NoSQL solutions, so its nice to see more serious applications featured.

The project is also running live at lamer It could benefit of a bit of UI liftup though.

Original title and link: Lamer News: A Redis-Sinatra-JQuery HN-like News Site (NoSQL database©myNoSQL)

Minimalistic CouchDB Client for node.js

Nuno Job’s NanoCouch Node.js driver for CouchDB:

After doing development like this for a while some obvious patterns started to emerge, as well as some code duplication. So the idea of nano was born: Build the minimal abstraction possible that allows you to use CouchDB from nodejs while preserving stream#pipe capabilities.

NanoCouch was well received by the CouchDB community with comments like:

Mikeal Rogers: this post is really good because it doesn’t assume you know all the little things i always forget to explain, like how the callback arguments are structured. perfect beginner article! :)

Joe McCann: This is why CouchDB and Node.js are made for each other

Original title and link: Minimalistic CouchDB Client for node.js (NoSQL database©myNoSQL)


A Javascript Blog With CouchDB and Node.js

I won’t say that everyone should do like Oren Eini and migrate his own blog to using a NoSQL engine, but I agree that NoSQL-based blogs are usually a better version of “hello world” apps.

In the two screencasts embedded after the break, Mark Cotton demonstrates how to build a Javascript based blog using CouchDB and Node.js.

Limitations of MongoDB

Some limitations and bugs in MongoDB, mostly related to its MapReduce and import/export:

There’s still plenty to like in Mongo, but at this point, I feel like Mongo’s mapReduce functionality is better suited to running queries which are too big to fit in memory, rather than serious data crunching. Perhaps my difficulties have been due to getting sharding involved with mapReduce. It’s also possible I’ve made a crucial mistake in configuring sharding, but I think I followed the directions pretty closely.

Original title and link: Limitations of MongoDB (NoSQL databases © myNoSQL)