Cassandra is an Open-sourced distributed database management system developed at Facebook and implements a Dynamo-style replication model with no single point of failure, it's an Apache Software. In short Cassandra is an open source, distributed, decentralized, elastically scalable, highly available, fault-tolerant, tunably consistent, column-oriented database. In present time it is used in some of the most popular sites on the web like Facebook.
Cassandra has the following features:
-
Distributed And Decentralized
Cassandra is distributed, it means that it is capable of running on multiple machines at a time. It is made not only for many different machines, but also for optimizing performance across multiple data center racks. You can write data to anywhere in the cluster and Cassandra will get it.
Decentralized means there is no single point of failure. It has two advantages; first it's simpler to use maste/ slave which helps user to avoid outages and second it's easier to operate and maintain because all nodes are the same.
-
Elastic Scalability
If you add a new node you don't need reconfiguration of the entire cluster, don't have to restart your process and don't have to change your application queries. It finds a new machine automatically, adds it and starts sending work on it.
-
High Availability and Fault Tolerance
If one data center is failed in any condition you can replicate data to multiple data centers to improve your performance.
-
Tuneable Consistency
Consistency means that it writes and reads at a tunable level of consistency. It has two types of consistency, strong and eventual. First the ability to guarantee an update to all locations and second is that the clientis acknowledged as soon as part of the cluster acknowledges the write. Cassandra offers choices, use one andyou can even mix them.
-
Row-Oriented
Cassandra stores data in multidimensional hash tables, which means you don't have to decide ahead of time precisely what your data structure must look like, or what fields your records will need. This can be useful if you're in startup mode and are adding or changing features with some frequency. It is also attractive if you need to support an Agile development methodology and aren't free to take months for up-front analysis.
