📜  Apache Cassandra(NOSQL 数据库)

📅  最后修改于: 2021-09-08 15:59:58             🧑  作者: Mango

在本文中,我们将学习 Apache Cassandra 的基础知识和 CQL(Cassandra 查询语言)操作的基础知识,如创建、插入、删除、选择等。

阿帕奇卡桑德拉:
Apache Cassandra 是一个开源的无 SQL 数据库,用于处理大数据。 Apache Cassandra 能够处理结构化、半结构化、非结构化数据。 Apache Cassandra 最初由 Facebook 开发,2008 年开源,2010 年成为顶级 Apache 项目之一。


图 1: Cassandra 的 Masterless Ring 架构

Apache Cassandra 是高度可扩展的分布式数据库,它严格遵循 CAP(一致性可用性和分区容错性)定理的原则。


图 2: CAP 定理

在 Apache Cassandra 中没有主客户端架构。它具有点对点架构。在 Apache Cassandra 中,我们可以在创建密钥空间时创建多个数据副本。我们可以简单地定义复制策略和RF(Replication Factor)来创建数据的多个副本。

例子:

CREATE KEYSPACE Example
WITH replication = {'class': 'NetworkTopologyStrategy', 
                             'replication_factor': '3'}; 

在此示例中,我们将 RF(复制因子)定义为 3,这仅意味着我们在此处以顺时针方向跨多个节点创建了 3 个数据副本。


图 3: RF = 3

cqlsh:CQL 外壳
cqlsh 是一个命令行 shell,用于通过 CQL(Cassandra 查询语言)与 Cassandra 交互。

基本操作的 CQL 查询:
步骤 1:使用以下 CQL 查询创建键空间。

CREATE KEYSPACE Emp
WITH replication = {'class': 'SimpleStrategy', 
                             'replication_factor': '1'}; 

Step2:使用keyspace的CQL查询

Syntax: 
USE keyspace-name 
USE Emp;

第 3 步:使用以下 CQL 查询创建表。

Example:
CREATE TABLE Emp_table (
    name text PRIMARY KEY,
    Emp_id int,
    Emp_city text,
    Emp_email text,
    );

第 4 步:使用以下 CQL 查询插入 Emp_table。

Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('ashish', 1001, 'Delhi', 'ashish05.rana05@gmail.com');
Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('Ashish Gupta', 1001, 'Bangalore', 'ashish@gmail.com');
Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('amit ', 1002, 'noida', 'abc@gmail.com');
Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('dhruv', 1003, 'pune', 'xyz@gmail.com');
Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('shivang', 1004, 'mumbai', 'test@gmail.com');
Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('aayush', 1005, 'gurugram', 'cass_write@gmail.com');
Insert into Emp_table(name, Emp_id, Emp_city, Emp_email) 
  VALUES ('bhagyesh', 1006, 'chandigar', 'welcome@gmail.com'); 

步骤 5:使用以下 CQL 查询读取数据。

SELECT * FROM Emp_table;