在本文中,我们将介绍如何根据需求进行分区,以及如何使用分区键将数据处理到表中。让我们一一讨论。
先决条件—数据建模概述
数据建模分区:
分区是一小组行,您可以说一个表被拆分为该表的一个小子集,该子集在基于分区的基础上共享相同的分区键。
让我们考虑一个示例,您要在其中存储用户登录信息,例如用户名,电子邮件,密码和电子邮件ID等。
Column Name | Data Type |
---|---|
Usr_Name | text |
Usr_Email | text |
Usr_password | text |
Usr_ID | UUID |
现在,您将看到如何根据用户信息访问来确定分区键,或者可以说出要对数据进行分区的顺序。让我们为这些特定需求编写cqlsh查询。
首先,只需使用以下cqlsh查询创建密钥空间,如下所示。
CREATE KEYSPACE User_Info
WITH
REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 2 };
要使用上面创建的键空间,请使用以下cqlsh命令。
user User_Info;
在这里,您将看到如何基于Usr_Info_by_email表创建分区。让我们一一讨论。
CREATE TABLE Usr_Info_by_email
(
Usr_Name text,
Usr_email text,
Usr_password text,
Usr_ID UUID, PRIMARY KEY(Usr_email)
);
在Cassandra中,表创建仅用于处理查询,并且取决于您的应用程序用例。根据查询,只需根据您的应用程序需求定义表。
现在,要将数据插入表中,请使用以下cqlsh查询。
Insert into Usr_Info_by_email (Usr_Name, Usr_email, Usr_password, Usr_ID)
values ('Ashish', 'a@gmail.com', '123', uuid());
Insert into Usr_Info_by_email (Usr_Name, Usr_email, Usr_password, Usr_ID)
values ('Aayush', 'ay@gmail.com', '124', uuid());
Insert into Usr_Info_by_email (Usr_Name, Usr_email, Usr_password, Usr_ID)
values ('Ashish', 'as@gmail.com', '123', uuid());
Insert into Usr_Info_by_email (Usr_Name, Usr_email, Usr_password, Usr_ID)
values ('Harsh', 'h@gmail.com', '125', uuid());
输出 :
cassandra@cqlsh:user_data> select * from usr_info_by_email;
usr_email | usr_id | usr_name | usr_password
--------------+--------------------------------------+----------+--------------
h@gmail.com | fa91d89e-a401-4f4e-93b4-2b6282af75e1 | Harsh | 125
ay@gmail.com | a27c955f-ddc1-4134-a1fa-0f65fd175ce7 | Aayush | 124
a@gmail.com | 9982a5a9-14ff-4caa-a6d2-8d6790853e8c | Ashish | 123
as@gmail.com | aaafc38b-7184-4f8e-a325-b43fedd91828 | Ashish | 123
(4 rows)
在这里,您可以在上面的示例中清楚地看到如何基于email访问和分区数据。