Outgrowing MongoDB

Zohar Arad. © 2015

About Me

Outgrowing MongoDB

This isn't a criticism of MongoDB, or a DB competition. MongoDB is great and you should keep using it!

But... sometimes your use-case isn't a perfect fit for MongoDB, and you might be able to employ more modern DBs for your cause.

Outgrowing MongoDB

We're going to look at a few new NoSQL databases and their use-cases.

We're not going to compare performance, just features (well mostly).

When not to Mongo?

Before we start

When I use the term "Easy Admin / Scaling", I mean it in a subjective way, hinting at the expected complexity of adding more capacity to the cluster by adding nodes, and administering the cluster as a whole.

ArangoDB

ArangoDB is perhaps MongoDBs closest cousin, sharing a very similar feature set and aiming at some of the same use-cases.

ArangoDB uses its own query language called AQL which tries to be closer to SQL

ArangoDB - Notable Features

ArangoDB - Pitfalls

Choosing ArangoDB

RethinkDB

RethinkDB is a distributed Document DB with parallel query execution and easy admin. RethinkDB offers a programmatic query language called RQL that is developer-oriented rather than DBA oriented.

RethinkDB is very transparent in it's release process and shares information about performance degradation and feature implementation road-map, making it easy for us to decide if and when to adopt or upgrade.

RethinkDB - Notable Features

RethinkDB - Pitfalls

Choosing RethinkDB

ArangoDB or RethinkDB?

ArangoDB seems to be a better fit for a multi-model use-case (graphs, K/V, document) or when you want to bind your API layer to your DB (Foxx).

RethinkDB's strongest feature IMHO is easy admin and scaling and would be most suitable when you don't need to worry about the complexities of your cluster.

FoundationDB

FoundationDB is a scalable, fault-tolerant, transactional and ACID compliant Key/Value store.

One of FoudnationDB's most interesting concepts is the separation of the storage layer from the data-model layer, which makes it extremely flexible, without sacrificing performance and scalability.

FoundationDB - Notable Features

FoundationDB - Pitfalls

FoundationDB - Some Thoughts

ElasticSearch

ElasticSearch is a scalable, fault-tolerant, distributed search-engine and document store

One of ElasticSearch's most compelling features is its aggregation framework which makes it easy to generate real-time analytics from semi-structured data.

ElasticSearch - Notable Features

ElasticSearch - Pitfalls

ElasticSearch - Some Thoughts

HyperDex

HyperDex is a distributed, fault-tolerant K/V and document store, offering ACID compliance, strong-consistency and transactions.

One of HyperDex's most notable features is it's data-sharding algorithm, which places data in the cluster while retaining its locality, which aids both ACID compliance and search speed.

HyperDex - Notable Features

HyperDex - Pitfalls

HyperDex - Some Thoughts

Closing Thoughts

Links to the DBs we talked about

If we have time

Replacing MongoDB with ElasticSearch - The story of how Quiclizard replaced MongoDB & HBase with ElasticSearch

Thank You!
Quesions?