版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章数据建模与管理配套教材教学演示概述数据建模基础关系型数据的存储管理非关系型数据的存储管理案例实践4.1概述数据建模、数据管理4.1概述数据建模数据模型是对现实世界中的数据及其相互关系的抽象表示。它定义了数据的结构、类型、关系和约束,以支持大规模、高速和多样化的数据处理。在数据管理领域,数据模型可以分为概念模型、逻辑模型与物理模型。1概念模型概念模型是数据库设计的起点,它通过定义核心数据对象(实体)、其特性(属性)以及它们之间的关联,来抽象描述业务需求中的信息结构,而不涉及具体的技术实现细节2逻辑模型逻辑模型是将概念模型转化为具体的数据结构(如数据库的表、字段和键)并规划其关联规则与规范化过程,从而形成不依赖特定系统的、可实现的技术蓝图。3物理模型物理模型是针对特定数据库系统的最终技术实现方案,它详细设计数据存储的具体细节(如索引、分区和存储格式),以直接优化系统的存取效率与性能。概念模型定义业务需求逻辑模型设计数据结构物理模型实现技术存储4.1概述数据建模例4.1以“学生选课”为例,图4-1给出了相应的概念模型、逻辑模型与物理模型。数据建模是一个始于需求分析的迭代过程,其核心是通过“概念-逻辑-物理”三层建模及后续验证来系统构建数据模型,若验证不通过,则将问题转化为新需求重新进入建模循环。图4-2展示了这一数据建模的基本过程。4.1概述数据管理广义数据管理是覆盖数据全生命周期、兼顾技术实现与数据资源资产化,并关注数据流通与价值变现的综合体系。狭义数据管理则聚焦于技术层面,主要负责数据的存储、访问、维护和安全等基础操作。数据科学对数据管理提出了六点基本要求。1能留存通过设计合适的存储介质与架构(如内存、硬盘、云存储等)实现数据的持久化长期保存。2能访问利用查询语言(如SQL)和索引优化等技术,确保数据能够被便捷、高效地查询与获取。3高可用通过数据复制、备份恢复及系统容错设计,保证数据在需要时持续可访问,不因故障中断。4高质量建立数据治理与质量评估体系,借助清洗、规范及元数据管理等方法,保障数据的准确、完整与一致。5能聚集依托ETL、数据仓库或数据湖等技术,将多源数据集成融合,为人工智能训练等提供大数据基础。6能扩展利用云计算与大数据技术(如Hadoop、Spark),设计可扩展的处理方法,以适应数据量的快速增长。4.2数据建模基础关系模型、文档模型、列族模型、图模型、多维模型4.2数据建模基础关系模型关系模型是一种用于管理结构化数据的数学模型。其核心思想是用二维表格(关系)表示数据,并通过数学理论定义数据的结构和操作。关系模型的核心组成包含关系和键。这是一个学生登记表如表4-1所示,包含学生的学号、姓名、年龄、性别和籍贯等信息。例4.2关系是模型的核心单元,每个表代表一个实体或实体间的联系。关系模式是对关系的描述。其中每一列称为属性,具有唯一的名称和数据类型如“学号”为整数,“姓名”为字符串;每一行称为元组,表示实体的一个具体实例。4.2数据建模基础关系模型键(Key)键是维护数据逻辑完整性的核心机制主键是由一个或多个属性组成的唯一标识符,其值不可重复且非空,确保每个元组可被唯一识别;外键则是表中引用其他表主键的属性,通过这种引用约束建立表间的关联,保证数据关系的有效性。例4.3在表4-1中,关系模式为:学生登记表(学号,姓名,年龄,性别,籍贯)。下划线标注的“学号”为主键,用于唯一标识每个学生。实例4.4假设有另一张表,其模式为(学号,课程名,成绩),记录了学生各门课程的成绩信息。在该表中,“学号”是外键,因为它是表4-1的主键。通过学号,可以将处在不同表中的学生课程成绩和年龄、性别等属性合并在一起。4.2数据建模基础关系模型关系的基本操作关系模型以集合论和一阶谓词逻辑为数学基础,通过其形式化、闭合的运算体系,为二维表结构数据提供了完备的操作能力,并在此框架下定义了六类基本关系运算。基本关系运算1选择(Selection)从关系中提取满足特定条件的行(元组)对应SQL中的WHERE子句。2投影(Projection)从关系中选取指定属性并自动去除重复结果对应SQL中显式列出目标列的SELECT语句3并(Union)通过合并两者的所有元组并去重实现数据整合在SQL中通过UNION关键字实现4差(Difference)找出仅存在于第一个关系而排除第二个关系中的元组SQL通过EXCEPT关键字支持5笛卡尔积(cartesianproduct)无条件组合两个关系的所有元组对应SQL的CROSSJOIN操作6连接(Join)匹配条件关联两个关系的元组4.2数据建模基础关系模型例4.5(a)、(b)给出了两个关系R和S,(c)、(d)表示交和差操作;(e)表示笛卡儿积操作;(f)表示投影操作;(g)表示选择操作R∪SR—
SR×
SπC,A(R)δB>4(R)4.2数据建模基础文档模型JSONJSON是一种轻量级的数据格式,易于阅读、编写,也易于机器解析和生成其基本结构包括对象(字典)、数值和值一个典型的JSON如下所示:{"name":"JohnDoe","age":30,"city":"NewYork","hobbies":["reading","swimming"],"married":false}XMLXML的一个示例如下:XML的特点1.高度可扩展,允许自定义标签2.严格的语法规则,确保文档结构良好3.支持命名空间,避免名称冲突4.广泛用于配置文件和数据交换文档模型以可独立存储复杂层级结构的文档(如JSON/XML)为基本单元,无需固定表结构,非常适合动态或异构数据。它通过键值对和嵌套机制实现灵活表达与高效查询,广泛应用于内容管理、日志存储及实时分析等场景。以MongoDB为代表的此类数据库,通过突破传统关系型数据库的刚性限制,在可扩展性和开发效率之间取得了平衡,因而成为现代分布式应用的热门选择。BSON在JSON基础上进一步提供了对二进制编码序列化支持:{"name":"JohnDoe","age":30,"city":"NewYork","hobbies":["reading","swimming"],"married":false,"photo":b"fa11d123ff1123f112f……"}XML是一种可扩展标记语言,用来存储和传输数据。它使用标签来定义元素,类似于HTML,但XML的标签是可自定义的。<?xmlversion="1.0"encoding="UTF-8"?><person><name>JohnDoe</name><age>30</age><city>NewYork</city><hobbies><hobby>reading</hobby><hobby>swimming</hobby></hobbies><married>false</married></person>4.2数据建模基础文档模型嵌套文档模型文档模型允许嵌套数据结构和支持动态增减属性,因此其具有无需预定义框架、便于开发者理解、适合处理大规模数据、查询效率高等优点其嵌套表示的一个示例如下,其中“address”“employees”分别对应一个树形子结构:{"id":"store1","name":"DowntownStore","address":{"street":"123MainSt","city":"Anytown","state":"CA","zip":"12345"},"employees":[{"id":"emp1","name":"Alice","position":"Manager"},{"id":"emp2","name":"Bob","position":"Clerk"}]}基于文档模型,文档数据库是一种非关系数据库,属于NoSQL数据库。它的基本元素就是文档,通常以类似JSON的格式存储。4.2数据建模基础列族模型列族模型是一种为应对大规模、高维度数据而设计的NoSQL数据模型,它通过将相关数据列组合成“列族”来组织数据,而非使用平铺的大表。这种设计有效解决了传统关系模式在处理海量易变列时的困难,也克服了文档模型在列检索上的低效问题。图书管理系统的列族模型数据库建模如下:列族模型的特点列族模型以强大的横向扩展能力高效处理海量数据,尤其适合日志、物联网等写入密集型场景,但代价是牺牲了灵活性,不适用于需要复杂关联查询的情况。1组织方式灵活2支持高效查询3易于扩展行键:每本书都有一个唯一的识别号列族:可以将书的相关信息分组列:在每个列族中,有具体的数据项值:每个列存储实际的数据值1234例4.6在物联网领域,列族模型的应用尤为广泛。以智能家居系统为例,可以组合设备ID和时间戳组合作为行键,不同的传感器数据(如温度、湿度、电量)作为列族。这种设计允许快速记录和检索单个设备的历史数据,同时支持跨设备的聚合分析。例4.6在内容管理系统中,列族模型可以有效处理大量的写入操作。例如,社交媒体平台可以使用用户ID作为行键,将不同类型的内容(帖子、评论、点赞)存储在不同的列族中。这样不仅支持快速的用户个人页面加载,还便于进行大规模的数据分析。4.2数据建模基础图模型传统数据库在处理复杂关系时,依赖表连接操作,这可能导致查询复杂化并在大数据量时影响效率。图模型则采用“顶点”表示实体、“边”表示实体间关系的方式,直观地展现复杂的网络化连接。图模型有多种不同的表示方式,其中最常见的包括属性图模型和资源描述框架模型。例4.7当查询用户购买的商品详情时,用户表存储了基本的用户信息,而购买记录表记录用户的购买行为。如果想要了解某个用户购买了哪些商品,就需要通过用户ID在这两个表之间进行关联。然而,商品的详细信息又存储在另一个商品表中,这意味着必须再次进行表连接以获取完整的信息。随着需求的增加,例如想要知道商品的类别或供应商信息,还需要引入更多的表格进行连接。4.2数据建模基础图模型属性图模型由节点、关系、标签和属性四个核心元素构成,其中节点和关系均可通过属性(键值对)进行详细描述,标签则用于节点分类。该模型因其直观、灵活的结构和对复杂关系的强大表达能力,在图数据库领域应用广泛,并常辅以Cypher等高效的查询语言进行数据遍历。资源描述框架模型例4.8图4-5包含标签为作者、书籍和出版社的三个节点,每个节点都通过键值对形式的属性来描述其具体特征,例如作者的姓名(name,“张三”)、书籍的主题(topic,“传记”)以及出版社的名称(name,“A出版社”)。这些节点由带方向的关系连接,以表示它们之间的语义联系,如从作者指向书籍的关系就代表了“创作”这一行为。属性图模型的一个核心特性在于,关系本身也可以拥有属性。如图4-5所示,连接书籍与出版社的出版关系(published_by)就携带了(year,2025)这一属性,它精确记录了该书的出版年份,而非节点自身的属性(如出版社的成立时间)。将关键的上下文信息直接附加于关系之上,正是属性图模型表现力丰富和应用灵活的关键所在。例4.9图4-6展示了如何使用RDF模型来表示与例4.8相同的场景。与属性图模型不同,RDF的核心数据结构是三元组,其关系本身不能直接携带属性。因此,为了描述“出版”这一事件发生在2025年,引入一个全新的资源节点,即“张三故事出版”,来代表这个出版这件事。然后,通过一系列三元组将相关信息连接起来:该出版方是“A出版社”,事件涉及的书籍是“张三故事”,而关键的年份信息则通过一个指向“2008”的三元组附加到该节点上。通过这种方式,原本在属性图中作为关系属性的信息,在RDF中被转换为一个独立资源节点的属性。属性图模型资源描述框架是语义网的标准数据模型,其核心是通过由URI保证唯一性的主谓宾三元组来表示原子事实,从而实现数据的无歧义交换。尽管其关系无法直接附加属性(需通过具体化技术),但RDF因其严格的标准化特性,在数据集成、知识图谱构建和逻辑推理方面具有独特优势,并拥有专用的查询语言SPARQL。4.3关系型数据的存储管理关系数据库设计、索引与查询优化、SQL语言基础4.3关系型数据的存储管理关系数据库设计实体关系模型由陈品山于1976年提出,它通过由矩形(实体)、菱形(关系)和椭圆形(属性)构成的E-R图来抽象描述现实世界的数据结构。该模型的图形规范包括用下划线标注关键属性,并通过连接线明确实体间的对应关系类型(如1:1、1:N、M:N)。将E-R模型转换为关系模型涉及以下两类元素的处理1在数据库设计中将E-R模型转换为关系模式时,每个实体类型会转换为一个单独的关系表,其实体的属性对应表的字段,而实体的唯一标识符则成为该表的主键例4.10以大学教务管理系统为例(如图4-9所示),该系统主要涉及学生、课程和教师等核心数据对象。在E-R图中,首先定义了三个基本实体类型:STUDENT(学生)、COURSE(课程)和TEACHER(教师)。学号(S#)、课程编号(C#)和教师工号(T#)是这三个实体的关键属性。这些实体之间通过两种重要的关联关系相互连接:其一是学生与课程之间的多对多(M:N)选课关系(SC),即每位学生可以选修多门课程,同时每门课程也可以被多名学生选修;其二是教师与课程之间的一对多(1:N)授课关系(TC),规定每门课程由一位教师负责讲授,而一位教师可以承担多门课程的教学任务。在属性定义方面,学生实体包含学号(S#)、姓名(SNAME)、年龄(AGE)和性别(SEX)等特征;课程实体则具有课程编号(C#)和课程名称(CNAME)两个属性;教师实体记录了教师工号(T#)、姓名(TNAME)和职称(TITLE)等信息。特别地,选课关系(SC)中还包含了学生选修课程后产生的成绩属性(SCORE),而授课关系(TC)则不需要额外定义属性。2第二类在关联关系的转换方面,需要根据不同的基数约束采取差异化的处理策略对于一对一关联,转换时可在任一实体对应的表中添加指向另一方主键的外键,并可同时记录该关联本身的属性。对于一对多关联,标准的转换方法是在代表“多”方的表中添加一个引用“一”方主键的外键,并可包含关联属性。对于多对多关联,则需要创建一个独立的关联表,该表至少包含分别指向两个实体主键的外键,这两个外键共同构成其主键,并可添加描述关联的属性。123例4.11该转换过程严格遵循E-R模型到关系模型的映射规则:首先,所有独立定义的实体类型(包括学生、课程和教师)都转换为对应的关系模式;其次,对于多对多的选课关系(SC),需要单独创建一个关联表来实现。4.3关系型数据的存储管理关系数据库设计数据库规范化理论是关系数据库设计的核心指导原则1通过将原模式分解为R1(S#,C#)和R2(C#,CNAME,TNAME)两个关系模式(如表4-5、表4-6所示),上述问题得到根本解决。更新异常:修改课程教师信息时,需要同时更新所有相关记录,否则会出现数据不一致;插入异常:新增未开课课程时,由于学生学号为主键且不能为空,导致无法插入;删除异常:删除学生选课记录时,会连带删除课程信息。123例4.12考虑一个教学管理系统中存在的关系模式R(S#,C#,CNAME,TNAME),其中各属性分别表示学生学号、课程编号、课程名称和任课教师。具体实例见表4-4。该模式存在明显的设计缺陷,首先数据冗余问题突出,其次该设计会引发三类操作异常:4.3关系型数据的存储管理索引与查询优化1B+树索引:B+树索引是数据库中一种广泛应用的索引结构,它既能作为单列索引加速对特定列的查询,也能作为复合索引来优化涉及多个列的查询条件。;空间索引:空间索引是一种专为地理信息和空间数据设计的数据库索引,它基于R树或四叉树等数据结构实现,能够高效支持邻近查询、范围查询和包含查询等空间查询操作。;全文索引:全文索引是一种通过构建记录词条、文档列表及词频等信息的倒排索引,来提升对大规模文本数据(如大字符串或文本大对象列)进行关键词或短语搜索效率的数据库索引技术;123位图索引:位图索引是专为低基数列设计的索引结构,它通过位图表示数据的存在状态,并利用高效的位运算来处理查询,在需要组合多个条件的场景下性能优于传统索引,但更适合读多写少的分析型系统;4索引的应用数据库中常见索引类型1提高查询速度2优化排序和分组3多表关联查询优化数据库查询优化器通过智能地将原始查询转换为利用索引的查询计划,避免低效的全表扫描,从而将查询时间复杂度从O(n)降至O(logn),实现从小时级到秒级的性能飞跃。索引凭借其有序存储的特性,可直接被数据库引擎用来加速ORDERBY排序和GROUPBY分组操作,从而显著提升这类查询的执行效率。通过在连接字段上建立索引,可以显著降低多表关联查询中连接操作的复杂度,从而突破性能瓶颈并提升整体查询效率。14数据完整性保障索引是实现数据库约束(如主键约束、唯一约束)的基础技术,通过这些约束索引可以有效维护数据的完整性和一致性,为数据质量提供保障。4.3关系型数据的存储管理索引与查询优化1B+树索引1所有数据都存储在叶子节点中2叶子节点形成一个有序链表:B+树的所有叶子节点都通过指针相互连接,形成一个有序的双向链表3平衡性:B+树是平衡的,这意味着从根节点到任何一个叶子节点的路径长度都是相同的14高扇出:由于内部节点不存储数据,只存储键和指针,因此在固定的节点大小(通常对应于一个磁盘页的大小,如4KB或8KB)内可以容纳更多的键和指针。B+树索引是数据库管理系统中一种高效的核心数据结构,它作为自平衡的有序树,支持在对数时间内完成数据的搜索、顺序访问、插入及删除操作。在B+树中进行精确匹配查询(例如,WHEREid=100)是一个从根节点开始,逐层向下遍历的过程。在每个内部节点上,查询的值会与节点中的键进行比较,以确定下一步应该访问哪个子节点。对于范围查询(例如,WHEREage>25),B+树首先会像精确匹配查询一样,查找到范围的起始点所在的叶子节点。一旦定位到该叶子节点,就可以利用叶子节点之间的链表结构,向右(或向左)顺序扫描,直到范围结束,从而高效地检索出所有符合条件的记录。4.3关系型数据的存储管理SQL语言基础数据定义在关系数据库系统中,数据库是由相互关联的基本表及其相关对象(如索引、视图)组成的逻辑集合,其结构可通过数据定义语言来描述,其层级关系可形象地类比为Excel的工作簿(数据库)与工作表(基本表)的对应。11数据库的创建和删除使用CREATEDATABASE语句可以建立新的数据库实例:CREATEDATABASE<数据库名>使用DROPDATABASE语句可以永久移除数据库及其所有包含对象:DROPDATABASE<数据库名>2SQL的基本数据类型SQL定义了三大类数据类型:数值型(包括整型、浮点型和精确小数)、字符型(分为定长和变长)以及日期时间型(包含日期、时间和时间戳)。3基本表的创建和删除在数据库系统中,表是存储数据的基本结构单元,通过CREATETABLE语句可以定义新表。CREATETABLE<表名>(<列名1><数据类型>[列级约束],<列名2><数据类型>[列级约束],...[表级约束]);SQL提供了三种主要的完整性约束机制来确保数据的准确性和一致性:主键约束(PRIMARYKEY)是关系数据库最基本的约束条件;外键约束(FOREIGNKEY)用于维护不同表之间的关联关系,确保引用完整性;检查约束(CHECK)则允许定义更复杂的业务规则来验证数据的有效性。4.3关系型数据的存储管理SQL语言基础例4.13对于教学数据库中的四张表:教师表TEACHER(ID,NAME,TITLE)课程表COURSE(ID,NAME,TEACHER_ID)学生表STUDENT(ID,NAME,AGE,SEX)选课表STUDENT_COURSE(STUDENT_ID,COURSE_ID,SCORE)用下列语句创建基本表STUDENT_COURSE:CREATETABLESTUDENT_COURSE(STUDENT_IDCHAR(4)NOTNULL,COURSE_IDCHAR(4)NOTNULL,SCOREINTEGER,PRIMARYKEY(STUDENT_ID,COURSE_ID),FOREIGNKEY(STUDENT_ID)REFERENCESSTUDENT(ID),FOREIGNKEY(COURSE_ID)REFERENCESCOURSE(ID));用下列语句创建基本表STUDENT_COURSE:该表采用复合主键(STUDENT_ID,COURSE_ID)来确保每条选课记录的唯一性。同时通过两个外键约束建立了与STUDENT和COURSE表的关联:STUDENT_ID字段参照STUDENT表的ID主键,COURSE_ID字段参照COURSE表的ID主键。在空约束方面,特别将STUDENT_ID和COURSE_ID字段设置为NOTNULL,强NULL,强制要求这两个关键字段必须提供具体值,从而避免了因空值导致的参照完整性问题。使用DROPTABLE语句可以永久删除指定的数据表及其所有数据:DROPTABLE<基本表名>使用CREATEINDEX语句创建索引:CREATE[UNIQUE]INDEX<索引名>ON<基本表名>(<列名序列>)当索引不再需要时,可以使用DROPINDEX语句将其删除:DROPINDEX<索引名>14数据表的删除5索引创建6索引删除4.3关系型数据的存储管理SQL语言基础1数据查询1SELECT<目标表的列名或列表达式序列>
FROM<基本表名和(或)视图序列>[WHERE<行条件表达式>][GROUPBY<列名序列>[HAVING<组条件表达式>]][ORDERBY<列名[ASC|DESC]>,…]SQL的数据查询功能主要通过SELECT语句实现,这是数据库操作中最常用且功能最强大的命令方括号[]内的子句为可选参数FROM子句指定的数据源获取原始数据集WHERE子句对原始数据进行过滤GROUPBY子句将数据按指定列的值进行分组聚合HAVING子句可以进一步筛选符合条件的分组结果SELECT子句确定最终结果集需要输出的列或计算表达式ORDERBY子句对结果集进行排序例4.14基于教学数据库中四个基本表可完成如下操作。11检索学习课程号为C2的学生学号与成绩SELECTSTUDENT_ID,SCOREFROMSTUDENT_COURSEWHERECOURSE_ID='C2';12检索学习课程号为C2课程的学生学号与姓名。SELECTSTUDENT.ID,STUDENT.NAMEFROMSTUDENT,STUDENT_COURSEWHERESTUDENT.ID=STUDENT_COURSE.STUDENT_ID
ANDSTUDENT_COURSE.COURSE_ID='C2';3求男学生的总人数和平均年龄SELECTCOUNT(*),AVG(AGE)FROMSTUDENTWHERESEX='M';14统计每门课程的学生选修人数,要求显示课程号、课程名和学生人数SELECTCOURSE.ID,COURSE.NAME,COUNT(STUDENT_COURSE.STUDENT_ID)FROMCOURSE,STUDENT_COURSEWHERECOURSE.ID=STUDENT_COURSE.COURSE_IDGROUPBYCOURSE.ID,COURSE.NAME;5求每一教师每门课程的学生选修人数(超过50人),要求显示教师工号、课程号和学生人数。显示时,查询结果按人数升序排列,人数相同按工号升序、课程号降序排列SELECTCOURSE.TEACHER_ID,COURSE.ID,COUNT(STUDENT_COURSE.STUDENT_ID)FROMCOURSE,STUDENT_COURSEWHERECOURSE.ID=STUDENT_COURSE.COURSE_IDGROUPBYCOURSE.TEACHER_ID,COURSE.IDHAVINGCOUNT(STUDENT_COURSE.STUDENT_ID)>50ORDERBYCOUNT(STUDENT_COURSE.STUDENT_ID)ASC,COURSE.TEACHER_IDASC,COURSE.IDDESC;4.3关系型数据的存储管理SQL语言基础SQL的数据更新包括数据插入、数据删除和数据修改。数据插入可以使用INSERT语句向基本表中插入数据INSERTINTO<基本表名>[(<列名序列>)]
VALUES(<行值>)[,(<行值>),……,(<行值>)]例4.15向教学数据库的基本表STUDENT_COURSE中插入一条选课记录(S5,C8),此处成绩值为空值,可用下列语句实现:INSERTINTOSTUDENT_COURSE(STUDENT_ID,COURSE_ID) VALUES('S5','C8'); 数据更新数据删除可以使用DELETE语句从基本表中删除数据DELETEFROM<基本表名>[WHERE<条件表达式>]例4.16把课程名为MATH的成绩从基本表STUDENT_COURSE中删除:DELETEFROMSTUDENT_COURSEWHERECOURSE_IDIN(SELECTIDFROMCOURSEWHERENAME='MATH');
数据修改可以使用UPDATE语句对基本表中符合条件的数据行的列值进行修改UPDATE<基本表名>SET<列名>=<值表达式>[,<列名>=<值表达式>…][WHERE<条件表达式>]例4.17在基本表COURSE中,把C5课程的课程名改为DB:UPDATECOURSESETNAME='DB'WHEREID='C5'; 4.4非关系型数据的存储管理文档数据库管理、图数据库管理、分布式文件系统管理4.4非关系型数据的存储管理文档数据库用于存储半结构化的JSON格式数据非关系型数据则包括树结构、图结构和键值对等,适合存储在NoSQL数据库中。NoSQL数据库是一类非关系数据库,用于处理大规模、高变异性的数据。NoSQL数据库通常具备较强的可扩展性、灵活的模式设计,以及快速的数据访问能力。图数据库擅长处理图模型中顶点和关系的复杂查询分布式文件系统管理用于存储和管理海量非结构化数据4.4非关系型数据的存储管理文档数据存储和检索文档数据库采用半结构化数据模型,没有固定的模式约束,允许同类实体的属性存在差异且顺序无关。以MongoDB为例,它作为典型的文档数据库,使用BSON格式存储数据,并通过集合来组织由键值对构成的文档。文档数据检索文档数据库查询语句直接针对文档中的字段进行匹配,无须像关系数据库那样通过表格和行的形式构建查询。用如下的数据库数据作为案例来展示MongoDB的查询:{"_id":"joe","name":"JoeBookreader","addresses":[{"street":"123FakeStreet","city":"Faketon","state":"MA","zip":"12345"},{"street":"1SomeOtherStreet","city":"Boston","state":"MA","zip":"12345"}]}1数据库:存储数据的容器,类似于关系数据库中的数据库2集合:数据库中的一个集合,类似于关系数据库中的表3文档:集合中的一个数据记录,类似于关系数据库中的行文档数据存储查询_id为"joe"的文档:db.collection.find({_id:"joe"});查询name为"JoeBookreader"的文档:db.collection.find({name:"JoeBookreader"});查询addresses中包含city为"Faketon"的文档:db.collection.find({"addresses.city":"Faketon"});查询包含addresses数组的文档(不限内容)db.collection.find({addresses:{$exists:true}});4.4非关系型数据的存储管理图数据库管理图数据库采用图结构来存储数据,通过顶点和边直接建模现实世界中的各种关系。主流的图数据库主要包含以下三类数据:图数据查询?m的学生是?s,而?s的出生地是?x。查询符合上述条件的?x以及与?x相关的其他宾语?y顶点:每个顶点代表一个实体,具有唯一标识符边:每条边连接两个顶点,表示它们之间的关系。边既可以是有向的,也可以是无向或双向的属性:顶点和边的属性用于存储更多的细节信息123图数据储存图数据库的存储通常基于邻接表(adjacencylist)或邻接矩阵邻接表:为每个顶点维护一个边的列表,表示每个顶点参与了哪些边邻接矩阵:通过二维数组表示顶点之间的连接关系,表示任意两个顶点间是否存在边图查询语言分为声明式和命令式两类,前者如SPARQL、Cypher,用户只需描述所需模式;后者如Gremlin,用户需指定匹配过程。在图查询中,结点和边用于结构匹配,而属性通常作为过滤条件。下面是一个声明式的SPARQL查询:SELECT?x,?yWHERE?m学生?s?s出生地?x?x?p?y该查询也可以用一个Cypher查询表达。圆括号表示节点,方括号表示边,短横和箭头表示边的方向:MATCH(:)–[:学生]->(:)–[:出生地]->(x:)–[:]->(y:)RETURNx,y
同样的查询,使用Gremlin可以表达为:G.V().out(‘学生’).out(‘出生地’).As(‘x’).out().as(‘y’).select(‘x’,‘y’)
4.4非关系型数据的存储管理分布式文件系统管理HDFS是Hadoop的存储模块,它可以存储海量数据,并在多台机器上实现分布式存储和数据备份。HDFS将文件切割成固定大小的块,并复制多份副本,存储在不同的服务器上:分布式计算HDFS能够处理从GB到TB级别的大规模数据集,通过扩展到数百个节点提供高聚合带宽,并作为高性能计算的基础,尤其通过与MapReduce框架结合为分布式计算提供支撑。分布式文件存储MapReduce是Hadoop的计算模块,对存储在HDFS上的大量数据进行分布式处理。MapReduce是一种编程模型,最初由谷歌提出,用于处理和生成大型数据集。MapReduce的核心思想是将一个大任务分解为若干个子任务,然后并行处理这些子任务,最后合并结果。这种模型非常适合在分布式系统中运行,因为它能够有效地利用集群中的多台计算机来加速数据处理的速度。第5章将更深入地介绍MapReduce。HDFS采用主从架构,其中主节点NameNode负责管理文件系统的元数据,而从节点DataNode负责存储实际的数据块,并通过心跳机制与NameNode保持通信以进行状态监控和数据管理。4.5案例实践需求分析、数据建模、数据管理4.5案例实践在线教育平台的业务需求如下:物理建模·用户可以注册、登录,浏览课程,并报名课程。·课程包含基本信息,如名称、讲师、类别、价格等。·用户可以在报名的课程下提交作业,讲师可以对作业进行评分。·需要支持查询功能,如查找用户信息、课程报名情况、作业提交状态等。需求分析根据业务需求,设计如下实体·用户(Users):存储用户的基本信息·课程(Courses):存储课程信息·报名(Enrollments):记录用户报名课程的情况·作业(Assignments):存储作业提交及评分信息物理建模的主要目标是将逻辑模型转换为数据库中的实际表结构,包括创建数据库、表、字段、数据类型、主键、外键等。创建用户(users)、课程(courses)、报名(enrollments)和作业(assignments)四个核心表:概念建模根据上述需求,构建如图4-12所示的E-R图:--创建用户表(users)CREATETABLEusers(user_idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(100)NOTNULL,emailVARCHAR(100)UNIQUENOTNULL,passwordVARCHAR(255)NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);--创建课程表(courses)CREATETABLEcourses(course_idINTPRIMARYKEYAUTO_INCREMENT,titleVARCHAR(255)NOTNULL,instructorVARCHAR(100),categoryVARCHAR(50),priceDECIMAL(10,2),created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);--创建报名表(enrollments)CREATETABLEenrollments(enrollment_idINTPRIMARYKEYAUTO_INCREMENT,user_idINT,course_idINT,enrolled_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(user_id),FOREIGNKEY(course_id)REFERENCEScourses(course_id));--创建作业表(assignments)CREATETABLEassignments(assignment_idINTPRIMARYKEYAUTO_INCREMENT,user_idINT,course_idINT,su
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境物体表面消毒规范
- 2026年烘干机进料口检修考核试题及答案
- 学校校园暴力预防主题教育手册
- 架体荷载管控安全约束规则
- 2025-2026年企业安全生产管理人员法律法规知识测试卷
- 2025-2026年化工设备安全维护知识点巩固习题
- 2025-2026年考研政治思想道德修养与法律基础模拟试卷
- 2025-2026年考研计算机科学与技术网络编程模拟试题
- 2025-2026年医学专业内科学复习题库
- 建设法规全套课件
- 2026年风机故障检修考试题库(附答案)
- 【新教材】2026年秋季学期人教PEP版(2024)四年级上册英语教学计划
- 苏州工业园区斜塘街道2026年社工招聘考试【结构化面试题库+高分答题模板】(含考官评分要点)
- 浙教版一年级英语上册English for kids Grade 1A教案
- 2026年全国房地产经纪人之业务操作考试历年考试题(附答案)
- 钢结构网架加固改造施工方案
- 2026年度医师定期考核【执业-5】
- 2026年建筑起重机械司机(施工升降机)试题库(含答案)
- 电化学测量方法
- 2026年上海市安全员C3证模拟试题及答案
- 2026年长沙电力职业技术学院单招职业技能考试题库及参考答案详解一套
评论
0/150
提交评论