Samba on Scale: Difference between revisions

From SambaWiki
(29 intermediate revisions by the same user not shown)
Line 1: Line 1:
= List of scalable Key/Value Stores =
= List of scalable Key/Value Stores =


For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia].
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Name !! Consistency Model || Transactions || C Client || Notes
! Name !! Type || Consistency Model || Transactions || C Client || Notes
|-
|-
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || [https://jepsen.io/consistency/models/sequential Volatile DBs: Sequential Consistency]<br />[https://jepsen.io/consistency/models/linearizable Persistent DBs: Linearizability] || No<br/>Yes || yes ||
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||
|-
|-
| [https://etcd.io/ etcd] || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || Yes ("mini") || yes || Performance?
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||
|-
|-
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || [http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || ? || yes ||
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||
|-
|-
| [https://www.yugabyte.com/ YugabyteDB] || Linearizability with LWT || ? || yes ||
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||

|-
|-
| [https://cassandra.apache.org/_/index.html Apache Cassandra] || Configurable: Linearizability with LWT<br />New: [https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||

|-
|-
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? ||

|-
|-
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? ||
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||
|-
|-
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]
| [https://www.foundationdb.org/ FoundationDB] || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||
|-
|-
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||
| [https://www.cockroachlabs.com/ CockroachDB] || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || ? || yes ||
|-
|-
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/cql/consistency.html#consistency-levels-reference Single-key Linearizability with LWT] || ? || yes ||
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||
|-
|-
| [https://tikv.org/ tikv] || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes || no (C++) ||
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||
|-
|-
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || no (C++) ||
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||
|-
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||
|}
|}

= Rapid Samba dbwrap backend prototyping =

A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:

* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]


= List of Opensource Clustered Filesystems =
= List of Opensource Clustered Filesystems =
Line 67: Line 79:
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]

Revision as of 17:55, 8 March 2023

List of scalable Key/Value Stores

For an overview of Consistency Models see Jepsen or Wikipedia. Note: LWT are defined as multiple operations on a single key.

Name Type Consistency Model Transactions C Client Notes
ctdb K/V Volatile DBs: Basically Sequential Consistency
Persistent DBs: Strict Serializability
No
Yes
yes
etcd K/V Linearizability LWT ("mini") yes
Ceph Rados K/V Linearizability LWT via Object Operations yes
YugabyteDB SQL Single-key Linearizability with LWT yes yes
Apache Cassandra 1-4 CQL Configurable, highest:
Single-key Linearizability with LWT
yes yes
Apache Cassandra 5 CQL Upcoming:
Strict Serializability [1]
yes yes
FoundationDB K/V Strict Serializability yes yes
CockroachDB SQL Serializable+, Strong Partition Serializability LWT yes 1
ScyllaDB CQL Single-key Linearizability with LWT LWT yes
tikv K/V Strong Consistency[2] yes (Percolator based) no (C++)
Apache Pegasus ? ? ? no (C++)
Apache HBase ? ? ? ?
Apache Ignite ? ? ? ?

Rapid Samba dbwrap backend prototyping

A new dbwrap backend called dbwrap_py that calls into Python for the database operations. Available backends:

List of Opensource Clustered Filesystems

Name Built on-top of Object Storage Notes
Ceph yes
GlusterFS no
JuiceFS yes
MooseFS no
ObjectiveFS yes
Lustre no
BeegFS no

Links