What you can’t do with Cassandra
- Multi-model: Cassandra is a partitioned row-store database. It does not support any other data model. If your application requires a graph or key/value store, you would have to use a second database technology like Titan or DataStax Enterprise Graph to support graphs, thereby adding complexity and costs. Being native multi-model, ArangoDB allows you to use one database for both and also run queries efficiently on data stored in different models.
- Unified Query Language: ArangoDB Query Language (AQL) supports all three data models (k/v, document, graph) with their respective data access patterns (Projections, Joins, Traversals, more). In addition, querying special data types like text or geo-spatial is natively supported by AQL. All data models and data types can be freely combined in a single AQL query. To do the same in Cassandra, one would have to learn CQL and Gremlin for graphs.
- Joins: Also various join operations are supported natively in AQL. ArangoDB even supports join operations at scale with the Satellite Collection feature. With Cassandra, these operations are not possible natively and have to be done client-side with all its security and performance impacts.
- Complex Transactions: Cassandra does not support ACID transactions. With ArangoDB, developers can use complex transactions to span multiple documents and collections, or to run aggregations. ArangoDB supports multi-document & multi-collection transactions (single instance; single document transactions in cluster setting).
- Scalability needs and ArangoDB: ArangoDB is cluster-ready for each model and multi-model usage. Unlimited scale-up capabilities thanks to C++ core balanced with scale-out. ArangoDB cluster architecture supporting independent scaling for serving high read/writes volumes and data storage, if needed.
- Extensibility: Use existing data-centric microservices or run your own in a dedicated JavaScript framework Foxx within ArangoDB, providing e.g. a single API call for complex graph traversals.
- Lower TCO: Knowing a multi-model database means applying the same knowledge to diverse use cases and lets developers move much faster. ArangoDB can be used for a broad range of different use cases with native multi-model approach and thereby simplify the needed tech stack and operational footprint.
Feature | MongoDB | ArangoDB |
---|---|---|
General |
||
Initial Release | 2009 | 2012 |
License | AGPLv3 / Commercial | Apache 2 / Commercial |
Commercial Friendly License | no | yes |
Written in | C++ | C++ |
Data-Model | document | multi-model documents, graphs, key-value |
Schema free | yes additional schema validation | yes schema validation with Foxx |
Data format | JSON / BSON | JSON / VelocyPack |
Data Storage | MMAPv1/WIREDTIGER | MMFiles/RocksDB |
Persistence to disk | yes | yes |
Journaling | yes | yes |
Cluster | ||
Auto-Sharding | yes | yes |
Replication | async | sync / async |
Replication conflict resolution | Master/Agent | Master/Master Master/Agent |
Elastic Scalability | no | yes (also on K8s) |
Zero Configuration | no | yes |
native Apache Mesos Support | no | yes, including persistent primitives |
Transactions | ||
Transaction Model | ACID | ACID |
Multi-Document Transactions | yes | yes* |
Multi-Collection Transactions | yes | yes* |
Querying | ||
Declarative Query Language | No | AQL One sql-like query language for all data-models |
Joins | Aggregation Framework | no |
Advanced path-finding with multiple algorithms | no | yes |
TinkerPop Support | no | yes |
Text search (indexing / queries) | yes / yes | yes / yes |
Geospatial (indexing / queries) | yes / yes | yes / yes |
Extensibility | ||
Microservice Support | No (only JS for map/reduce jobs) | Microservice framework Foxx based on Google V8 ** |
Server-Side Functions | yes | yes |
Security | ||
Encryption | TLS / SSL | TLS / SSL |
Authentication | yes | yes |
Role-based access control | yes | yes *** Attribute level via Foxx framework |
Auditing | yes (enterprise version) | yes (enterprise version) |
Administration | ||
Web-based GUI (self-contained) | no | yes |
Cluster friendly GUI | no | yes |
* In single server setups, ArangoDB supports full ACID transactions for multi-document & multi-collection transactions. In a cluster setup, ArangoDB only supports multi-document & multi-collection transactions for non-sharded collections. Single document transactions are supported for shared collections.* In single server setups, ArangoDB supports full ACID transactions for multi-document & multi-collection transactions. In a cluster setup, ArangoDB only supports multi-document & multi-collection transactions for non-sharded collections. Single document transactions are supported for shared collections.
** Including full-text search for arbitrary strings, prefix searches as well more advanced functionality like relevance, ranking, word normalization, removing stop-words, identifying word-boundaries that work across multiple collections. multiple collections.
*** Easily create a REST API for data centric use cases and add any missing functionality.
**** ArangoDB supports all basic security requirements. This includes LDAP-based authorization and User Management at database and collection levels. By using ArangoDB’s Foxx microservice framework, users can create even field-based access control.