NoSQL Document Database comparison

Business > IT development > Databases
5
2017-11-30 01:17:02

Nowadays applications move very fast having new features every now and then. Software needs to process more and more data. So there is a need for alternatives to SQL databases, where we are not linked to a fixed database schema; where the amount of data will not reduce the performances. For all these reasons, NoSQL started to make it's way. And it's now part of the backend of most big websites like Facebook or Twitter.

With SQL you can almost switch from one database vendor to another with little to no effort thanks to SQL standard. With NoSQL databases there is no standard way to access these databases, so you need to consider twice your choice to make sure you will go for the solution that best fit your needs and not have to start all over your integration in a few months.

This comparison is inspired from Kristof Kovacs article:
http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

CassandraCouchDBClusterpointDocumentDBDynamoDBHBaseMongoDBRedis
Best usedWhen you write more than you read (logging). If every component of the system must be in Java. ("No one gets fired for choosing Apache's stuff.")For accumulating, occasionally changing data, on which pre-defined queries are to be run. Places where versioning is important.Primarily offered as Database as a Service, allows you to operate 50-node cluster at a fraction of a cost (Pay per CPU). Most suitable for Web-based ACID-compliant solutions, but can be used for many other tasks.When you have a lot of simple records.If you're in love with BigTable. :) And when you need random, realtime read/write access to your Big Data.If you need dynamic queries. If you prefer to define indexes, not map/reduce functions. If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks.For rapidly changing data with a foreseeable database size (should fit mostly in memory)
Usage exampleBanking, financial industry (though not necessarily for financial transactions, but these industries are much bigger than that.) Writes are faster than reads, so one natural niche is real time data analysis.CRM, CMS systems. Master-master replication is an especially interesting feature, allowing easy multi-site deployments.Feature-wise sits between SQL and MongoDB offering great horizontal scaling in combination with transaction support, Geo, Full-text searches, group-by.Facebook Messaging DatabaseFor all things that you would do with MySQL or PostgreSQL, but having predefined columns really holds you back.Stock prices. Analytics. Real-time data collection. Real-time communication.
Known ShortcomingsLacks embedded language.No ordering.No embedded language. Multiple index queries. Lacks features.Sizes limited by amount of RAM.
Main focusBest of BigTable and DynamoDB consistency, ease of useSimple setup. Features. Horizontal scaling.Billions of rows X millions of columnsRetains some friendly properties of SQL. (Query, index)Speed
LicenseApacheApacheProprietary, but available as free download.Proprietary. Cloud-only.Proprietary. Cloud-only.ApacheAGPL (Drivers: Apache)BSD
PricingFree download or pay per resource (CPU, Traffic, Storage)Pay per requests / traffic.Free download or Pay per instance + Service (MongoLab)
Projects using it
  • Cisco's WebEx: to store user feed and activity
  • Digg
  • Twitter: local trends, analytics...
http://wiki.apache.org/couchdb/CouchDB_in_the_wild
  • Facebook: messages infrastructure
  • Twitter: read/write backup of mysql tables; for people search...
  • Yahoo!: to detect document duplication based on fingerprint

http://wiki.apache.org/hadoop/Hbase/PoweredBy
  • bit.ly
  • diaspora
  • Shutterfly
  • foursquare
  • SourceForge
  • craigslist.org
  • github.com
  • guardian.co.uk
  • Disqus
  • stackoverflow.com
  • flickr.net
  • tweetdeck.com
  • blizzard.com
Technical details
Latest version2.1.41.6.13.00.98.43.0.33.0.1
Release date2015-04-012014-09-032015-02-152014-07-212015-05-122015-05-05
Initial release date200820052006201220092009
ConsistencyStrongStrong/EventualEventual (strong with flag)
ReplicationMulti-master replicationMulti-masterMaster/slaveMaster/slave
ProtocolThrift (Binary)HTTP/RESTHTTP/RestRESTHTTP/REST (and Thrift)BSON (Binary)Telnet-like
Data PresentationXML / JSONJSONJSONJSON
Development languageJavaErlangC++JavaC++C/C++
PlatformsCross-platformCross-platformCloud or LinuxCloud onlyCloud only
"DynamoDB Local" cross-platform (single instance for development)
Cross-platformCross-platformCross-platform
API Language
Embedded LanguageNoneJavaScriptNoneJavaScriptNone
Additional
Websitehttp://cassandra.apache.org/http://couchdb.apache.org/http://clusterpoint.com/http://azure.microsoft.com/en-us/services/documentdb/http://aws.amazon.com/dynamodb/http://hbase.apache.org/http://www.mongodb.org/http://redis.io/
Wikipediahttp://en.wikipedia.org/wiki/Cassandra_(database)http://en.wikipedia.org/wiki/CouchDBhttp://en.wikipedia.org/wiki/Clusterpointhttp://en.wikipedia.org/wiki/DocumentDBhttp://en.wikipedia.org/wiki/Amazon_DynamoDBhttp://en.wikipedia.org/wiki/Hbasehttp://en.wikipedia.org/wiki/MongoDBhttp://en.wikipedia.org/wiki/Redis_(data_store)
Additional linkhttp://justazure.com/mongodb-vs-azure-documentdb/http://wiki.apache.org/hadoop/Hbase
Features
Cloud DBYesYesYesThird Party
Transaction supportNoNoYesNoNoNoNoYes
AggregationYesNoNoYes
GeoSpatialYesNoYesYes
FullTextYesNoNo
Commercial SupportIncluded into DB-ServiceThird parties.
Embed

Comments

  • voted for this Comparison (Like)
    Posted 2015-06-03 12:11:43 by Romans Malinovskis
  • Great comparison. I've added 3 more databases and also proposed change for the title. Looks like this comparison focuses on document-oriented databases only (http://en.wikipedia.org/wiki/Document-oriented_database). Can anyone populate DynamoDB and DocumentDB (from microsoft), those two are great databases.
    Posted 2015-06-03 11:51:28 by Romans Malinovskis
  • suggested to set Name to NoSQL Document Database Comparison
    There are many other types for storing trees, key-value, or column-based and it would be difficult to compare them properly.
    Posted 2015-06-03 11:35:32 by Romans Malinovskis
  • voted for this Comparison (Like)
    Bien
    Français Posted 2012-04-02 16:05:07 by colors
  • voted for this Comparison (Like)
    Good diff for NoSQL~
    Posted 2012-02-28 07:51:29 by kingofhawks
  • voted for this Comparison (Like)
    I was looking for something like this for various comparing NoSQL solutions. Knew I will find something here.
    Posted 2012-02-23 22:45:49 by Shravan (Sean) Kumar
  • voted for this Comparison (Like)
    Posted 2011-05-09 21:19:34 by Alexis

Leave a comment

Build comparison tables or lists about everything !

It's free and fast to publish data into original tables

Create a table