期刊发表网电话

全国热线
022-83699069

基于文档模型的Nosql数据库逻辑建模

作者: 发布时间:2020-01-21 09:25:14 阅读: 48 次

摘要:非关系数据库(Nosql)是一种针对大规模数据应用的新型数据库技术,其中文档模型Nosql数据库以其容易理解、功能丰富的特点得到广泛的应用。在关系数据库建模的基础上,文中提出一种对E-R图三要素的处理方法,并在此基础上构建出文档模型非关系数据库的逻辑模型。

关键字:非关系数据库;逻辑模型;MongoDB;文档模型;E-R图;大规模数据

 

1引言

传感器的发展、带宽的增加以及手持设备的流行,使数据库技术在信息管理系统中的应用越来越广泛,即使小的Web应用也有了大规模存储的需要,TB级别数据库的应用已经很常见[1]。大规模数据需求的出现,使Web应用由集中式、向上扩展的系统架构向分布式、横向扩展的系统架构转变,云计算技术为大规模数据提供了一个分析处理平台,与此同时,新的系统架构对数据库技术也提出了新的要求,关系数据库在并发读写、横向扩展方面的不足日益凸显,在这样的环境下,非关系数据库(Nosql)以其高效、易扩展等特性受到人们的广泛关注[2]

Nosql数据库使用更为松散的数据模式,便于非结构化数据的存储,与关系数据库相比,数据组织更为灵活,数据不再以关系为中心,而是更多地考虑应用的实际需要,因此,在数据库的建模过程中,Nosql与关系数据库存在较大差异。为了更加充分地利用Nosql灵活的数据模式,构建合理的数据库模型,文中在对非关系数据库研究的基础上,以MongoDB为例,对Nosql文档模型的建模过程进行研究。

2 Nosql概述

典型的Web应用是采用三层架构构建的,应用程序向外扩展时,只需要负载均衡之后,添加更多的Web服务器,但是在数据层,关系数据库很难向外扩展,数据模型不够灵活,随着负载的增加,需要用更为大型的服务器,而大型服务器复杂度高且昂贵。Nosql技术就是在这样的环境下产生的,它是一种以给Web应用提供更高效、易扩展的数据层为目的的新型数据库模型。

常见的Nosql数据库模式有[3]:Key-value存储模式、Key-结构化数据存储模式、Key-文档存储模式,除了这三种常见的存储模型之外还有列式存储模式、图结构存储模式、对象存储模式等。与关系型数据库相比,Nosql数据库与关系数据库在众多数据库核心机制方面有着显著的不同[4][5]

3文档模型建模过程

3.1 MongoDB文档模型

MongoDB是一种常见的Nosql数据库,因其高效的性能和丰富的使用功能在生产中得到非常广泛的应用。MongoDB使用自动分片实现数据的分布,支持全类型索引,使用的查询语言语法类似面向对象査询语言,可以实现类似关系数据库单表查询的绝大部分功能,支持主/从和复制集两种数据复制机制,而且具有跨平台的特性,方便数据库的移植[6]

MongoDB支持的数据结构非常松散,是类似jsonbjson格式,因此可以存储比较复杂的数据类型,它的逻辑结构是一种层次结构主要由数据库、集合、文档组成[7]

MongoDB支持的数据类型有:NullBooleanStringSymbolObjectIddateregular expressioncodearrayembeded document[8]。与关系数据库的数据类型相比,它的特点在于支持数组和文档。

3.2 MongoDB数据库逻辑建模

在逻辑结构设计阶段,MongoDB使用文档模型组织数据,与关系数据库的二维表元组有很大不同,MongoDB灵活的数据模式主要体现在对数组和文档类型的支持,通过合理使用数组和文档,可以合并不必要的集合,减少多集合操作,提高数据库的效率。

在概念结构设计过程中,关系数据库通常是以E-R图的形式将用户需求抽象为信息结构,MongoDB数据库同样可以使用这种方法,因为MongoDB数据库数据组织形式的不同,这里E-R图向逻辑模型的转换方法不同于关系数据库。如图2所示,对学生选课和亲属关系的E-R图进行转换,具体的转换过程分为下面几个步骤:

 

2 学生选课和亲属关系E-R

1.属性的处理

多值属性:可以用数组类型表示,作为文档的一个数据项。图中电话是一个多值属性,用数组表示为tel:[tel1,tel2,...]

复合属性:使用嵌套的文档类型或数组类型表示,作为文档的一个数据项。图中的地址属性是一个复合属性,、城市、街道属性都有明确的标识,所以地址属性可以表示为address:{state:state,

city:city,street:street}

派生属性:根据应用实际需要,如果数据以查询操作为主,派生属性能够提高查询效率,可以作为文档的一个数据项,如果数据更新频繁,可以直接从文档中去除。图中年龄是一个派生属性,它会经常用到,且一年更新一次,因此将它存储到数据库中。

2.实体的转换

每个实体作为一个集合。E-R图中有三个实体:学生、亲属和课程,每个实体作为一个集合,分别转换成StudentCourse、和Relatives三个集合,数据库的集合结构如表2所示。

2 实体转换后的集合结构

实体集合

文档格式

学生:Student

{ID:ID,birth:birth,tel:[ tel1,tel2,],address:

{state:state,city:city,street:street}}

课程:Course

{ID:ID,hours:hours}

亲属:Relatives

{name:name,relationship:relationship}

3.实体间关系的转换

一对一关系:根据应用需求,可以将相关的两个实体合并成一个实体,作为一个集合,关系本身的属性也并入到该集合。一般情况下,实体的一对一关系可以将一个实体作为另一个实体的属性看待。

一对多关系:根据应用需求,可以将多端实体嵌套到单端实体的集合中,也可以分别建立集合,单端实体集合的主键作为多端实体集合的外键。图中学生和亲属之间是一对多关系,一个学生的亲属数量有限,而且亲属数据通常作为学生大框架下的一部分,所以,可以将Relatives集合嵌套进Student集合中,多个亲属用数组的形式表示,修改后的数据库的集合结构如表3所示。

3 一对多关系转换后的集合结构

实体集合

文档格式

学生:Student

{ID:ID,birth:birth,tel:[ tel1,tel2,],

address:{state:state,city:city,street:street},

Relatives:[ {name:name,relationship:relationship},]}

课程:Course

{ID:ID,hours:hours}

多对多关系:与关系数据库类似,实体分别作为集合,关系本身和实体集合主键构成新的集合。学生和课程实体间是多对多关系,分别是StudentCourse集合,为选课关系建立一个集合Elective,数据库的集合结构如表4所示。

4 多对多关系转换后的集合结构

实体集合

文档格式

学生:Student

{ID:ID,birth:birth,tel:[ tel1,tel2,],

address:{state:state,city:city,street:street},

Relatives:[ {name:name,relationship:relationship},]}

课程:Course

{ID:ID,hours:hours}

选修:Elective

{S_ID:S_ID,C_ID:C_ID,”grade:grade}

逐步对属性、实体和关系转换为相应的集合,再加上该模型的数据字典,就得到数据库的逻辑结构。关系数据库在E-R图的转换过程中有很明确的标准,通过规范的设计,能够得到一个清晰的数据库逻辑结构,而MongoDB数据库不同,在转换过程中,不仅要考虑数据的组织形式,还要根据应用需求,在不同需求下要使用不同的转换方式,这样才能充分利用灵活的数据模式,提高数据库的性能。

4结束语

文档模型是一种常见的非关系数据库存储模式,它采用松散的数据组织形式,在数据库逻辑结构设计阶段,不同于关系数据库的范式设计思想。文中根据文档模型自身特点,对E-R图向集合的转换过程进行研究,根据应用具体需求构建数据库逻辑模型。

参考文献:

[1]黄贤立.NoSQL非关系型数据库的发展及应用初探[J].福建电脑.2010(7):30-31.

[2]范凯.NoSql数据库综述[J].程序员.2010(6):76-78.

[3]Nishtha Jatana,Sahil Puri,Mehak Ahuja,et al. A Survey and Comparison of Relational and Non- Relational Database[J]. International Journal of Engineering Research & Technology, 2012, 1(6).

[4]Giuseppe D,Deniz H,Madan J,et al. Dynamo: Amazon's highly available key-value store[J]. ACM, 2007, 205-220.

[5]沈姝. NoSQL数据库技术及其应用研究[D].南京:南京信息工程大学,2012.

[6]颜开.NoSQL数据库笔谈v2[EB/OL]. http://www.yankay.com/nosql/. 20122月访问.

[7]Kristina Chodorow,Michael Dirolf. MongoDB: the definitive guide[M]. O'Reilly Media. 20109.

[8]MongoDB官方网站[EB/OL]. http://www.mongodb.org/. 201211月访问.

[9]Kristina Chodorow. 50 Tips and Tricks for MongoDB Developers[M]. O'Reilly Media. 20114.