5 ms·
Does anyone know a comparison between this and CockroachDB? Or have experience running either in production? They seem to compare against other databases, but
by lukeqsee 8y ago
Does anyone know a comparison between this and CockroachDB? Or have experience running either in production?
They seem to compare against other databases, but not against Cockroach which seems to be the biggest competitor. I'm looking at implementing a global-scale database cluster with very specific requirements, and YugaByte seems to meet those but a comparison against CockroachDB seems warranted.
Edit: just noticed they do compare features against CockroachDB: https://docs.yugabyte.com/latest/comparisons/#distributed-sql-databases https://docs.yugabyte.com/latest/comparisons/#distributed-sq..., but they don't have an in-depth comparison.
- ddorian43 8y agoPostgres layer is still extremly beta (has no update support etc.) But it should become good fast since they use fdw api (storage engine api in pg12) and reuse most of pg code.
- rkarthik007 8y agoHi @lukeqsee, we are working on just this, please stay tuned!
- atombender 8y agoYugaByte only added distributed transactions in the new 1.1 release (previously, it only supported single-row transactions). The architecture is a variation on 2PC and seems sound, but I think it's fair to say that it's early days. Meanwhile, Cockroach and TiDB both have battle-tested implementations. YugaByte is pretty quirky. Rather than settle on a native data model, they offer several "personalities" that mimic other products (Cassandra, Redis and PostgreSQL), and you can mix and match them. But they've implemented each API with their own set of weird warts. For example, their CQL implementation has CREATE INDEX, but it does not index existing data [1]. You have to either create the secondary index before inserting data, or force a reindex of everything with a dummy UPDATE statement. Who would ship such a product? More warts/Cassandraisms: UPDATE is actually an upsert; an update that doesn't match a row will insert it. And SELECT ... WHERE expressions can only use AND expressions (!) [2]. Hopefully the forthcoming SQL API should be saner, but it's very limited at the moment. It does not seem to support joins, transactions or indexes, for example. Meanwhile, CockroachDB and TiDB both have rich SQL implementations, including joins and aggregations, with cost-based query optimizers that can take advantage of multiple indexes and table statistics. It seems more appropriate to compare YugaByte with distributed key/value stores like FoundationDB, Cassandra, Scylla and Redis. [1] https://docs.yugabyte.com/latest/explore/transactional/secondary-indexes/ https://docs.yugabyte.com/latest/explore/transactional/secon... [2] https://docs.yugabyte.com/v1.0/api/cassandra/dml_select/#root https://docs.yugabyte.com/v1.0/api/cassandra/dml_select/#roo...
- lukeqsee 8y agoThanks atombender! This is helpful.
- manigandham 8y agoThose things you mentioned are just how Cassandra works. It's a wide-column key/value store and everything is an upsert because that's how the write path is designed, there is no read-then-write (other than LWTs). If you're using an application that expects Cassandra then this is normal so why would Yugabyte change the semantics? It's true that indexing is unfinished but they've also long been problematic in the CQL data model so Yugabyte is moving faster and actually releasing something for those who can work with it. Cassandra took years to come up with several types of indexes that all have problems and Scylla is overdue by 18 months on their implementation.
- atombender 8y agoThat's why I referred to the behaviour as Cassandraisms. The question was posed in the context of CockroachDB, so my answer stands -- CDB vs. YugaByte is an apples to oranges comparison, seeing as YugaByte isn't an RDBMS by any useful measure, and has a very long way to go to get there.
- zenithm 8y agoIn the NoSQL space, FaunaDB indexes are very powerful. They are term partitioned and sharded and have compound terms, covered values, transformations, etc.
- manigandham 8y agoCockroach treats the entire installation as one giant cluster, with optional 'locality' feature for each node to distribute data. Yugabyte has regional clusters, which can replicate from a single master write cluster. CRDB is working on ways to get fast local reads for different regions. Other than that, Yugabyte also supports more protocols like Redis and Cassandra, and enhancements within them. It's really more of a distributed key/value store like FoundationDB but with protocol layers on top included out of the box.