Oralce/MYSQL database administrators are well aware of term named ACID
ACID stands for: Atomicity, Consistency, Isolation, Durability and it is at the foundation of RDBMS success.
ATOMICITY: If one part of transaction fails, the entire transaction will fail to maintain integrity of database
CONSISTENCY: Database will always be in a consistent state both at the beginning and at the end of a transaction
ISOLATION: No transaction has access to any other in-flight/unfinished transaction
DURABILITY: Database records the transaction in persistent storage/data files when it completes. Power/disk failure will not impact the completed transaction.
Above principal applies strictly to RDBMS databases but not to NoSQL databases.
Now let us understand the CAP Theorem
CAP theorem is also known as Brewer’s theorem after computer scientist Eric Brewer who gave this Theorem.
CAP stands for : Consistency, Availability, Partition Tolerance
CONSISTENCY: Somewhat similar to what it means in ACID terminology but NOT same. Every read receives the most recent write or an error
AVAILABILITY: Every request receives a (non-error) response BUT without the guarantee that it contains the MOST RECENT write
PARTITION TOLERANCE: Database will operate even if an arbitrary number of records are dropped/delayed by the network between nodes
Now important point here is that a distributed database system like Cassandra NoSQL can only have 2 out of above 3: Consistency, Availability and Partition Tolerance.
Cassandra offer availability and partition tolerance, sacrificing consistency.
Let us now go to next term which is applicable to NoSQL databases like Cassandra: BASE
BASICALLY AVAILABLE: System does guarantee availability in a reasonable amount of time
SOFT: State of the system may change over time to become consistent eventually
EVENTUALLY CONSISTENT: Not all nodes see the same version of the data. As the data is replicated, the latest version of the data may be sitting on some node in the cluster, but older versions are still out there on some other nodes, but at some point eventually all nodes will see the latest version
To re-iterate, Cassandra favors availability and partition tolerance and don’t concern much with consistency.
MongoDB is another popular NoSQL database, which favors consistency and partition tolerance over high availability.
In the coming posts our goal will be to learn more about Cassandra database and go in-depth on these terminology.
- Oracle Multitenant DB 4 : Parameters/SGA/PGA management in CDB-PDB - July 18, 2020
- Details of running concurrent requests in Oracle EBS - May 26, 2020
- Oracle Multitenant DB 3 : Data Dictionary Architecture in CDB-PDB - March 20, 2020