Cassandra Tutorial | Data Types | Why Cassandra for Big Data


   What is Apache Cassandra?

Apache Cassandra is an open-source, NoSQL, wide column data store that can quickly take and process huge amounts of data.
It is decentralized, distributed, scalable, highly available, and fault-tolerant, , with identical nodes that are clustered together for eliminating  single points of failure.

    Evolution of Cassandra?
                                        

   Why is it so Special ?

1.      Decentralized
2.      Distributed
3.      Scalable
4.      Highly Available

    Why Cassandra for Big data?

1.     Handles high velocity data with ease
2.     Uses schema that support broad varities of data
3.     Is designed for continous availability
4.     Offers quick installation and configuration for multi-node clusters.
5.     It is open source and reduces cost as compared to RDBMS.

    Apache Cassandra Data Types?

1. It supports the most common data types including  ASCII, Bigint , BLOB, Boolean counter,decimal, double, float, int , text, timestamp, UUID, varchar etc
2. Its data model offers the convenient of the column indexes with the performance of log structured updates, strong support for denormalization and materialized views and built in caching.
3.  Data access is performed using CQL ( Cassandra Query Language )which is resembled to SQL (Structured Query Lanuage).

       Data Distribution in Apache Cassandra

Cassandra uses a peer-to-peer model for distributing the data , which enables it to fully distribute data in the form of variable-length rows, stored by partition keys.  Cassandra is built for its scalability, continuous availability, and has having no single point of failure.
Many Different databases, such as Postgre SQL, use a master-slave replication model, in which the writes go to a master node and reads are executed on slaves. To provide high availability, fault tolerance, and scalability, Cassandra’s peer-to-peer distribution model  provides nodes with open channels of communication. Cassandra uses Tokens ( a 64 bit integer) for determining which node holds what data.

       How to add data ?

      You can insert data into the columns of a row in a table using the command INSERT.
       Syntax for creating data in a table is shown below.

      INSERT INTO <tablename>
     (<column1 name>, <column2 name>....)
    VALUES (<value1>, <value2>....)
      USING <option>

     Let us assume there is a table called std with columns (std_id, std_name, std_city, std_phone, std_fee) and you have to insert the following data into the std table.

std_id
        std_name
             std_city
               std_phone
           std_fee
1
Ramesh
                  Hyderabad
             9191234566
            55000
2
Pavan
            Visakhapatnam
            9191234567
            45000
3
Gayatri
               Vizainagaram
             9191234568
              47000

Use the commands given below to fill the table with required data.

   cqlsh:project1> INSERT INTO std (std_id, std_name, std_city,
   std_phone, std_fee) VALUES(1,'Ramesh', 'Hyderabad', 9191234567,     55000);

     cqlsh:project1> INSERT INTO std (std_id, std_name, std_city,
   std_phone, std_fee) VALUES(2,'Pavan', 'Visakhapatnam',           9191234567, 45000);

  cqlsh:project1> INSERT INTO std (std_id, std_name, std_city,
   std_phone, std_fee) VALUES(3,'Gayatri', 'Vizainagaram',     9191234567, 47000);

    Data reading in Cassandra?

 SELECT clause is used to read data from a table in Cassandra. By Using this clause, you can read a  whole table, a single column, or a particular cell.

 The syntax of SELECT clause is given below

  SELECT FROM <tablename>

  Assume there is a table in the key space named std with the following details −

std_id
        std_name
             std_city
               std_phone
           std_fee
1
Ramesh
                  Hyderabad
             9191234566
            55000
2
Pavan
            Visakhapatnam
            9191234567
            45000
3
Gayatri
               Vizainagaram
             9191234568
              47000

   How to delete data from Cassandra ?

      You can delete data from a table using the command DELETE.
       The syntax  is given below


   DELETE FROM <identifier> WHERE <condition>;

std_id
        std_name
             std_city
               std_phone
           std_fee
1
Ramesh
                  Hyderabad
             9191234566
            55000
2
Pavan
            Visakhapatnam
            9191234567
            45000
3
Gayatri
               Vizainagaram
             9191234568
              47000

   The following statement deletes the std_fee column of last row –

   cqlsh:project1> DELETE std_fee FROM std WHERE emp_id=3;
 
     Deletion of Entire row
 
 The following command deletes an entire row from a table.

cqlsh:project1> DELETE FROM std WHERE emp_id=3;

  Use cases for Cassandra ?

1.     Mobility
2.     Security and Fraud Detection
3.     Personalization and Recommendation
4.     IOT
5.     Cloud Operations

Advantages ?

1.     Open source
2.     Peer to peer Architecture
3.      Elastic Scalability
4.     High Availability and Fault Tolerence
5.     High performance
6.     Column oriented
7.     Tunable Consistency
8.     Schema-Free

  Limitations of Apache Cassandra:-

          1.     A single column value may not be larger than 2 Giga Bytes.
          2.     The maximum number of column per row is 2 billion.
          3.     All data read should fit in memory due to thrift streaming support lack.
          4.     The key must be less than 64k bytes.

Conclusion:-

This brings us to the end of this article on Apache Cassandra In this article you have learnt What is Cassandra Why it is so special , How to add, read and delete data in Cassandra data base. We have also come up with a curriculum that covers exactly what you would need to be expertise in Cassandra! You can have a look at the course details for Apache Cassandra


Comments

Popular posts from this blog

How to Install Spring Framework|Set up & Configuration Guide

5 Major Things To Learn To Become A Successful DevOps Engineer