在本文中,我们将学习 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;