background preloader

NoSQL

Facebook Twitter

A MongoDB Guy Learns CouchDB. I use and contribute to MongoDB a lot.

A MongoDB Guy Learns CouchDB

But one thing that NoSQL has taught us is the importance and benefits of exploring and experimenting with different data storage (oftentimes within the same project). So I decided to build a sample application using CouchDB. It's safe to call me biased. I even have some loose ties to 10gen (the makers of MongoDB). Inevitably, I'll favor things I already know and understand, especially when you consider that what I know of CouchDB might be wrong, so take this with a grain of salt. MongoDB and CouchDB are both document-oriented databases. Installation Installation of both CouchDB and MongoDB is pretty straightforward. 30 Seconds In So you have MongoDB and CouchDB installed and running, what's the first thing you do? I honestly think some people will prefer the mongo shell and some will prefer Futon.

Protocol MongoDB uses a custom binary protocol. I'm just not sold on doing these kind of things over HTTP. Organization Querying How does CouchDB do this? NoSQL. "Structured storage" redirects here.

NoSQL

For the Microsoft technology also known as structured storage, see COM Structured Storage. A NoSQL (often interpreted as Not Only SQL[1][2]) database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Motivations for this approach include simplicity of design, horizontal scaling and finer control over availability. The data structure (e.g. key-value, graph, or document) differs from the RDBMS, and therefore some operations are faster in NoSQL and some in RDBMS. There are differences though, and the particular suitability of a given NoSQL DB depends on the problem it must solve (e.g. does the solution use graph algorithms?). History[edit] There have been various approaches to classify NoSQL databases, each with different categories and subcategories.

A more detailed classification is the following, by Stephen Yen:[9] Performance[edit] Examples[edit] Graph[edit] MongoDB. MongoDB (from "humongous") is a cross-platform document-oriented database.

MongoDB

Classified as a NoSQL database, MongoDB eschews the traditional table-based relational database structure in favor of JSON-like documents with dynamic schemas (MongoDB calls the format BSON), making the integration of data in certain types of applications easier and faster. Released under a combination of the GNU Affero General Public License and the Apache License, MongoDB is free and open-source software. First developed by the software company 10gen (now MongoDB Inc.) in October 2007 as a component of a planned platform as a service product, the company shifted to an open source development model in 2009, with 10gen offering commercial support and other services.[1] Since then, MongoDB has been adopted as backend software by a number of major websites and services, including Brave Collective, Craigslist, eBay, Foursquare, SourceForge, Viacom, and the New York Times, among others.

Licensing and support[edit] TokuMX. TokuMX is and open source, high-performance distribution of MongoDB.[2] It is a drop-in replacement for MongoDB with added performance and scalability, as well as support for document-level locking, transaction support with MVCC, and replication optimization; it does not support full-text search or geospatial indexing.

TokuMX

Most TokuMX source files are made available under the terms of the GNU Affero General Public License (AGPL). The TokuKV Fractal Tree Indexing library is made available under the terms of the GNU General Public License (GPL) version 2, with an additional grant of a patent license. B-trees[edit] Most relational databases use indexes to increase query performance. Databases can leverage indexes to significantly reduce the amount of data they examine while responding to queries.

With the advent of Big Data and the ever increasing database needs of the 21st century, many niche databases have been created to get around the limitations of 50-year-old B-tree indexing. Uses[edit]