关系型数据库与Key

上传人:鲁** 文档编号:510808981 上传时间:2023-12-08 格式:DOCX 页数:3 大小:51.79KB
返回 下载 相关 举报
关系型数据库与Key_第1页
第1页 / 共3页
关系型数据库与Key_第2页
第2页 / 共3页
关系型数据库与Key_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《关系型数据库与Key》由会员分享,可在线阅读,更多相关《关系型数据库与Key(3页珍藏版)》请在金锄头文库上搜索。

1、关系型数据库与Key-value型数据库Mongodb模式设计对比MongoDb相比于传统的SQL关系型数据库,最大的不同在于它们的模式 设计(Schema Design )上的差别,正是由于这一层次的差别衍生出其它各方 面的不同。我们可以简单的认为关系型数据库由数据库、表(table)、记录(record)三 个层次概念组成,而在构建一个关系型数据库的时候,工作重点和难点都在数据 库表的划分与组织上。一般而言,为了平衡提高存取效率与减少数据冗余之间的 矛盾,设计的数据库表都会尽量满足所谓的第三范式。相对的,可以认为 MongoDb 由数据库、集合(collection)、文档对象(Docum

2、ent-oriented、BSON) 三个层次组成。MongoDb里的collection对应于关系型数据库里的表。当然,不 要期望collection会满足所谓的第三范式,因为它们根本就不在同一个概念讨论 之内。类似于表由多条记录组成,集合也包含多个文档对象,虽然说一般情况下, 同一个集合内的文档对象具有相同的格式定义,但这并不是必须的,即MongoDb 的数据模式是自由的(schema-free、模式自由、无模式)。以一实例来说,假设我们需要设计一个小型数据库来存储学生、地址、科目、 成绩这些信息,那么关系型数据库的设计如图1所示,而Key-value型数据库 的设计则可能如图2所示。id

3、Ll-itTlieScoresidstudcntidcoui-eldAddressiduddreshstateposialCoclcCours.es* idnam图1、关系型的数据库设计图2、Key-value型的数据库设计(直接借用的mongodb官方图)对比图1和图2,在关系型的数据库设计里划分出了 4个表,而在Key-value 型的数据库设计里却只有两个集合。如果说集合与表一一对应的话,那么图2 中应该也有4个集合才对,为什么可以把本应该是集合的address和scores直接 合入了集合students中?原因就在于在Key-value型的数据库里,数据模式是自 由的。以scores

4、来说,在关系型的数据库设计中将其单独成一个表是因为student与 score是一对多的关系,如果将score合入student表,那么就必须预留最多可能 的字段,这会存在浪费,并且当以后新增一门课程时扩展困难,因此一般都会将 score表单独出来。而对于Key-value型的数据库就不同了,其scores字段就是一 个BSON,该BSON可以只有一个for_course,也可以有两个、三个、任意个 for_course,其固有的模式自由特性使得它可以将score包含在内而无需另建一个 score集合。对于与student为一对一关系的address表也可以直接合入student,无需担心 a

5、ddress的扩展性,当以后需要给address新增一个province字段,直接在数据插 入时加上这个值即可。当然,对于与student成多对多关系course表,为了减少数据冗余,可以将 course建立为一个集合,同关系型的数据库设计中类似。对比于关系型的数据库,在Key-value型的数据库里将数据合入一起有几大 好处:首先,数据检索时没有了进行表间连接(join)的巨大开销(虽然目前 MongoDb中没有join的概念);其次,合入一起的数据在磁盘上的存放也更容 易在一起,因此数据的读取/写入都更快速。另外,无需担心扩展性问题,Key-value 型数据库的自身特性使得字段的增删改十分容易。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号