---
# System prepended metadata

title: MongoDB vs Scylla

---

# MongoDB vs Scylla

## MongoDB

### Pros

- Simple data model
    - Single table (?) for data (messages) that supports protocol changes
    - Simple writes if so
- No need to maintain mongo lib

### Cons

- Bson type limitations
    - No support for `u64`, meaning message `nonce` cannot be represented properly
- Complicated read access
    - Dependent on protocol version as index locations will change
- May need additional index tables to support indexing arrays within messages
    - For instance, outputs (not messages) are indexed by address
- Need to ensure that your indexes are correctly implemented or in the correct order. Otherwise, MongoDB’s speed drops significantly
- Potentially higher space complexity
- Single point of failure due to master-slave architecture;

## ScyllaDB

### Pros
- Good for high-write workload
- It follows peer-to-peer architecture rather than master-slave architecture, so there isn’t a single point of failure;

### Cons
- Advanced data model
    - Data-modeling design cost;
    - Needs to know the access pattern in advance;
    - Cannot update the primary key schema;
- Wide column store
    - Wide-column store limited to adding/removing non-primary key columns
- No support for dynamic partitioning (yet)
    - Users have to ensure their data-model is well designed and safe to deply in production
- Cassandra query language
    - SQL-like DML and DDL statements;
    - User defined (function, aggregation, types);
- Data is modeled around queries and not structure, resulting in the same information stored multiple times
- Scylla was optimized from the start for fast writes, reading got the short end of the stick, so it tends to be slower

## Differences

- Scylla uses a traditional model with a table structure, using rows and columns. MongoDB employs an objective-oriented or data-oriented model;
- Scylla offers an assortment of master nodes, while MongoDB uses a single master node. As a result, Scylla provides higher availability, compared to MongoDB’s limited availability;
- While both offer better than average scalability, Scylla provides higher scalability thanks to the multiple master nodes;
- Scylla has a dedicated in-house query language, CQL, whereas MongoDB’s queries are structured into JSON fragments;
- Scylla has no internal aggregation framework, relying instead on tools such as Apache Spark and Hadoop. MongoDB has its own aggregation framework, though it’s best suited for small to medium-sized data traffic loads;
- MongoDB supports ad-hoc queries, aggregation, collections, file storage, indexing, load balancing, replication, and transactions; Cassandra offers core components like clusters, commit logs, data centers, memory tables, and Node;







