Noms vs Scylla: What are the differences?
# Introduction
1. **Data Model**: Noms utilizes a content-addressable data model, where each piece of data is uniquely identified by its content hash. On the other hand, Scylla follows a more traditional key-value data model, where data is stored and retrieved based on a primary key.
2. **Consistency**: Noms supports write-once semantics, ensuring that data is immutable once it is written. In contrast, Scylla offers tunable consistency levels, providing flexibility in balancing consistency and availability based on the application's requirements.
3. **Query Language**: Noms utilizes a graph-based query language called NomsQL, which allows for expressive queries on the data graph. Scylla, on the other hand, supports CQL (Cassandra Query Language), a SQL-like language for querying the data stored in the database.
4. **Partitioning**: Noms uses a sharding mechanism to partition data across multiple storage nodes, enabling horizontal scalability. Scylla employs a similar partitioning strategy but leverages consistent hashing for distributing data evenly across nodes.
5. **Indexing**: Noms uses indexes for efficient data retrieval and management, supporting both primary and secondary indexes. Scylla also supports indexing for faster data access, with wide-column indexes available for querying specific data columns efficiently.
6. **Consensus Algorithm**: Noms employs a unique consensus algorithm called RON (Replicated Object Notation) for handling concurrent updates and ensuring data consistency across replicas. In contrast, Scylla relies on the Paxos or Raft consensus protocols for achieving distributed consensus and maintaining data integrity.
In Summary, Noms and Scylla differ in data model, consistency, query language, partitioning strategy, indexing mechanism, and consensus algorithm.