400 karma · joined October 22, 2013
This seems like trying to put tag on category entity instead of creating a tag hierarchy.
Those 2 should be stored using different relationship type mechanisms.
("categoryTag", <SourceTag>, <DestinationTag>)
ex: ("categoryTag", "Occupations", "Writers")
and
("parentTag",<tagName1>, <tagName2>)
ex: (("parentTag", "American writers" , "19th century American writers")
And to have good performance you should never join entity that have distinct partition key. Otherwise you end up reading too much data over the network.
I’m honestly very happy Cassandra will get real transaction. But i still need to understand the proposed design. Will it be possible to have serializability when doing Range scan query?
They probably just renamed it and are making a big deal about it but in the end will confuse all customers as to why it’s unrelated to cosmosdb and to cosmos datalake
Asp.net webform where not really interactive. Any change to the UI require reloading the page.
FoundationDB provide a Consistent databse but By default only a KeyValue API.
(CitusDB,Vitess..) give you Consistency but only within a partition, but also give a nice SQL API.
(Cockroachdb/Yugabyte) provide a sql api with a consistent database.
Cassandra gives you Eventual consistency with the Key-value API.
My experience has been that the performance penalty for using a Consistent database instead of one that will silently corrupt your data is small "less than 10% slower".
As for the cost of using Join and Index, no once is forcing you to create index and send query that use join. Its 100% opt-in.
But still Google Spanner and CockroachDB made it very cheap to do join between parent entity and a child entity table but using interleaved table. And using RocksDB and good SSD, the cost of index maintenance is not as bad as it appear to be.
But this Monotonic time server is not part of Cassandra itself and for this reason majority of the people using Cassandra will use the OS time without knowing this is silently corrupting the database.
Quorum Read-repair is only one reason for why the value would randomly disappear. Another one is periodic anti Entropy repair!
A prototype has been developed that has demonstrated its correctness against Jepsen.io’s Maelstrom tool
then later client B write value 2 on 2 of the 3 node with timestamp=1
then read repair happen and (value=1 timestamp=3) is written to all 3 nodes.
this is only one of many scenarios where this stupid design fail.
you are guaranteed to face the problem where the client machine clocks are not in sync.
just comparing timestamp is obviously a design from someone that didn’t review the academic literature on distributed transaction and consensus
LWT still have awful performance compared to a write request with same guarantee in any other database.
it mostly work but it’s extremely slow and still have many bugs.
https://www.datastax.com/blog/lightweight-transactions-cassa...
If a white people said this everyone would say he is a nazi.