Comparing Cassandra Structure with Relational Databases

A few days ago I read about the wide format stored type NoSql and exclusively Apache-Cassandra. I understand that Kassandra consists of:

Key space (for example, a database in relational databases) and support for many families of columns or tables (same as a table in relational databases) and unlimited rows.

From the Stackoverflow tags:

Extensive column storage is a type of key database. It uses tables, rows, and columns, but unlike a relational database, the names and format of columns can vary from row to row in the same table.

In Cassandra, all rows (in a table) must have a row key, then each row key can have multiple columns. I read about the differences in the implementation and storage of relational database data and NoSql (Cassandra).

But I do not understand the difference between the structure:

Imagine a scenario in which I have a table (or a column family in Cassandra):

When I execute a query (Cql) as follows:

Select * from users;

It gives me the result, as you can see:

lastname | age  | city          | email               
----------+------+---------------+----------------------
      Doe |   36 | Beverly Hills |   janedoe@email.com       
    Jones |   35 |        Austin |     bob@example.com        
    Byrne |   24 |     San Diego |  robbyrne@email.com         
    Smith |   46 |    Sacramento |   null                      
  Jones2  | null |        Austin |     bob@example.com       

Therefore, I execute the above script in a relational database (MsSql) with a hit request:

select * from [users] 

And the result:

lastname    age      city              email                    
    Doe     36       Beverly Hills     janedoe@email.com          
    Jones   35       Austin            bob@example.com             
    Byrne   24       San Diego         robbyrne@email.com         
    Smith   46       Sacramento        NULL                 
   Jones2   NULL     Austin            bob@example.com              

I know that Cassandra supports a dynamic column, and I can accomplish this using sth like:

ALTER TABLE users ADD website varchar;

But it is available in the relational model, for example, in mssql the above code can also be implemented. Sth like:

ALTER TABLE users 
ADD website varchar(MAX) 

, . Cassandra (lastname) , , (, ID ) mssql ( ), , Cassandra ( varchar), , Stackoverflow.

, :

  • ?!

  • , ?! , .

  • - ( Json), , Cassandra ? (, , Cassandra.)

, .

+10
2

, :)

:

  • Thrift API
  • CQL API

" ".

" " Thrift API. cql -, .

SQL CQL. SQL . CQL , . CQL , (, ) . , , Thrift " ". , , , , , .

:

  • CQL , - , , , . 1: N
  • CQL - , ,
  • ( , , address , ), .
  • CQL JOIN, SQL, , ( cassandra , ). , , .

, . ( ) " Datastax", .

+9

, CQL . , :

SELECT * FROM a_table_here; 

Cassandra, , . 10000 "".

, Cassandra , :

, lastname, , , , ( ).

, , , PRIMARY KEY ((lastname),age, city). , , .

Cassandra , :

Doe → 36:Beverly Hills → janedoe@email.com

"Doe" - , , . 36:Beverly Hills - ( ). , , janedoe@email.com - ( ) .

, , , : http://www.planetcassandra.org/making-the-change-from-thrift-to-cql./

+4

All Articles