📜  Apache Cassandra中的数据建模概述

📅  最后修改于: 2021-06-28 06:53:58             🧑  作者: Mango

在本文中,我们将学习Cassandra中的这三种数据模型:概念,逻辑和物理。

学习目标:

  • 使用Cassandra中的快速设计技术构建数据库。
  • 在Cassandra中使用查询驱动的方法来改进现有模型。
  • 通过Cassandra中的分析和验证技术来优化现有模型。

Apache Cassandra中的数据建模:
在Apache Cassandra中,数据建模在以正确的方法管理大量数据方面起着至关重要的作用。方法学是Apache Cassandra中的一个重要方面。数据建模描述了Apache Cassandra中的策略。

1.概念数据模型:
概念模型是您域的抽象视图。它与技术无关。概念模型并不特定于任何数据库系统。

目的:

  • 了解适用于数据建模的数据。
  • 定义基本对象。
  • 定义适用于数据建模的约束。

Cassandra中概念数据建模的优点是协作。

实体关系模型
ER图将表示数据模型的抽象视图,并提供一个图形视图。 ER图简化了数据模型。例如,让我们以m:n基数为例,在该基数中,学生与课程之间的多对多关系意味着许多学生可以注册多门课程,而许多课程又被许多学生注册。

图–具有M:N基数的Cassandra概念模型的ER图

在此示例中,s_id,s_name,s_course,s_branch是学生实体的属性,而p_id,p_name,p_head是项目实体的属性,并且“已注册”是学生记录中的关系。这就是我们将ER图转换为Conceptual数据模型的方式。

Student(S_id, S_name, S_branch, S_course)
Project(P_id, P_name, P_head)
enrolled in(S_id, P_id, S_name)

应用程序工作流程:
在每个应用程序中,都有工作流程,其中包含任务和依赖项,因此在应用程序中,许多学生想报名参加许多项目。

图–数据模型流程图

这是来自DataStax的实际数据模型流程图。

2.逻辑数据模型:
在逻辑数据模型中,我们将使用功能定义每个属性,字段或列,以使S_id是学生实体中的键分区,而P_id是项目实体中的分区键。分区键在Cassandra中起着至关重要的作用,在其中我们可以相应地执行查询。在Cassandra中,分区键在我们将执行CQL查询以及建立索引时非常有用。例如,在关系数据库中,此查询将起作用,但在Cassandra中,它将不这样。

Select * 
From student_data 
Where S_branch = 'CSE'; 

因为在Cassandra中,S_branch不是表分区键的一部分,所以首先在Cassandra中为此类查询定义分区键。

Select * 
From student_data 
Where S_id = '123'; 

此查询在Cassandra中可以正常工作。

数字 –

3.物理数据模型:
在此数据模型中,我们将描述表Query,并将编写查询以构建表,这是实际的数据模型之一,我们需要编写专门需要的Query并实现我们实际需要的数据库功能。例如,让我们使用CQL查询为Student_record数据库一张一张地定义表。

表:学生

CREATE TABLE student_record.student
 ( 
  S_id int,
  S_name text,
  S_branch,
  S_course,
  PRIMARY KEY((S_id), S_name),
 );

表:项目

CREATE TABLE student_record.Project
 ( 
  P_id int,
  P_name text,
  P_head,
  PRIMARY KEY(P_id),
 ); 

表格: Enrolled_in

CREATE TABLE student_record.Enrolled_in
 ( 
  S_id int,
  P_id int,
  S_name text,
  PRIMARY KEY((S_id, P_id), S_name)),
 );