基于MongoDB构建的非关系型存储中医养生知识库研究
2016-05-30齐帅彬胡晨骏胡孔法
齐帅彬 胡晨骏 胡孔法
摘 要:文章通过对关系型数据库目前出现的问题和NoSQL数据库的特点的分析,研究了MongoDB数据库的特性,试图建立一个基于MongoDB数据库的非关系型存储中医养生知识库,以便使用者通过网页或移动媒体更加高效、动态地查找和获取中医养生知识。
关键词:MongoDB;NoSQL;中医养生;知识库
在当今时代,人们对健康养生日益重视,中国传统中医药养生更是成为了人们养生保健的首选方式。屠呦呦因青蒿素获得诺贝尔奖将中国传统中医药的神奇展示于国际舞台,她在颁奖典礼的演讲上提到“中国医药学是一个伟大宝库,应当努力发掘,加以提高。”传统中医药越来越以她独特的魅力和疗效得到海内外各界人士的普遍关注和认可。而构建体系结构完善合理的中医养生知识库对中医事业的发展起着至关重要的推动作用。
本文试图探讨构建的中医养生知识库是以中医养生保健为目的,对中医养生理论基础、方法和应用以一定的组织结构进行存储的数据集合。使用者可通过网页或移动媒体在此知识库上查找和获取中医养生知识。目前,各大机构和院校都致力于构建合理、全面的中医养生知识库,已建成大量基于关系型存储的不同领域的知識库。随着Web2.0的兴起,传统的关系型数据库因自身局限面临挑战,而NoSQL以它的结构简单愈来愈显现出优势,本文将以MongoDB数据库为例对构建非关系型存储中医养生数据库作出研究和探讨。
1 关系型数据库的局限以及NoSQL的崛起
1.1 关系型数据库的局限
随着Web2.0的兴起,很多大型网站用到的关系型数据库逐渐暴露出很多自身难以克服的缺点,主要有如下几项:(1)扩展性和可用性不高。随着数据量越来越大,关系型数据库无法通过添加更多的硬件和服务节点来扩展性能和负载能力,它只能把数据纵向扩展,造成数据库的高负载,最后可能导致数据库的崩溃。(2)数据结构变更困难。由于表之间存在关联性,为数据做新建索引和数据结构的变更存在困难。(3)并发负载高。由于海量的用户动态数据,数据库的并发负载非常高,往往每秒达到上万次读/写请求。因此关系型数据库面临海量数据的高效率存储、访问和高并发读/写问题。(4)多表关联和读/写实时性功能的忽略。多表关联查询和读/写实时性是关系型数据库最突出的特征,然而对于目前的很多网站而言,这2个功能发挥不出它的作用。
1.2 NoSQL的崛起
NoSQL目前普遍的定义是Not Only SQL,即不仅仅是SQL,是对非关系型数据存储的广义定义。相比较于关系型数据库而言,NoSQL的优势有以下几点:(1)数据库表之间没有关系性,这样数据的存储就非常易于扩展。具有良好的读/写和查询性能。(2)NoSQL不需要提前为要存储的数据建立字段。(3)NoSQL可以在不太影响性能的情况下,非常方便地实现高可用性的架构。
2 MongoDB数据库的特点
MongoDB作为目前使用最广泛的NoSQL数据库,它在具备NoSQL数据库的基本特性的同时也具备了它本身的特有个性。主要有如下几点:(1)文档性。MongoDB是一个面向集合的、模式自由的文档型数据库,它支持的数据结构非常自由,类似于JSON的BSON格式,可以存储结构非常复杂的数据。它采用高效的二进制数据存储,可以将视频、图片等大型对象转换成二进制的数据存储到数据库中。(2)查询效率高。MongoDB具有完整的索引支持和查询功能。它是NoSQL数据库中最像关系型数据库的,它保留了SQL中的“索引”这一友好特性,不仅可以对内嵌文档创建索引,还可以对内嵌文档中的数组创建索引。MongoDB的查询指令使用JSON形式,使查询表达式变得非常丰富。由于MongoDB数据库结构非常简单,免去了表与表之间的关联查询,因而MongoDB的数据查询效率和并发读/写性能相比于关系型数据有较大优势。(3)扩展性。MongoDB是一种分布式数据库,当实时数据量非常大的时候,MongoDB采用Sharing技术(自动分片技术)将数据水平扩展至不同节点,可动态的添加额外的硬件和服务节点,很好地解决了关系型数据库无法横向扩展的问题。(4)复制及自动故障转移。MongoDB数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。
3 基于MongoDB的非关系型中医养生知识库结构设计
在MongoDB数据库中,数据的逻辑结构被分为3个层次:文档(Document)、集合(Collection)和数据库(Database),文档相当于关系型数据库中的一行记录,多个文档组成一个集合相当于数据库中的表,多个集合逻辑上组织在一起就是数据库。
本文研究的中医养生知识库在集合与数据库这2个层次上的结构关系如图1所示。
至于在集合和文档这2个层次的存储结构,本文以中医养生方法(Collection1)中的饮食起居养生为例列出该集合在数据库中的存储结构如图2所示。
“饮食养生”这一集合的具体的BSON格式数据如图3所示。通过上文的分析,本文可以看到已采用MongoDB实现的非关系型存储的中医养生知识库有如下几个优势:(1)数据存储易于水平扩展。由于MongoDB数据库的本身特性,即文档可以内嵌文档,使得数据的水平扩展非常容易实现,并且这样的分节点挂载方式使得服务器的负载大大减小。
(2)查询效率高。中医养生知识库的需要解决的主要问题是针对高并发的数据查询功能,MongoDB数据库在这方面具有独特的优势。(3)数据文档型存储。中医养生知识基本都以文本形式保存,MongoDB数据库对数据的文档型存储与这一特点恰好吻合。(4)并发读/写性能良好。NoSQL数据库在应对高并发读/写上性能优于关系型数据库。(5)数据库复制及自动故障转移。MongoDB数据库本身的这一特性为中医养生知识库的安全性提供了保障。
4 存在的挑战
(1)NoSQL技术目前发展的不够成熟。(2)MongoDB对CPU的占有率太大,且MongoDB数据库对内存的要求比较高。(3)目前MongoDB对每个数据文件的最大数据容量为2G,当访问量达到一定限制后数据库的并发处理性能就会下降。
5 未来的展望
随着该中医养生知识库的不断充实和发展,不仅可以把古今医学名家所著的各类中医养生经典名著整理存入数据库,还可以将各类医案信息和通过可穿戴设备实时获取的如睡眠、血压、脉搏等健康数据存入数据库,通过对大量数据的分析和挖掘可得出对于某些疾病的防治措施,之后将中医养生健康建议及时反馈给用户,从而提高人们的身体健康水平。
6 结语
随着现在大数据的发展,数据指数型增长的趋势已势不可挡,通过上文对NoSQL以及MongoDB数据库的分析可以看出MongoDB在構建中医养生知识库具有一定优势和前瞻性。
MongoDB数据库构建的NoSQL型中医养生知识库在并发读写,对海量数据的高效率存储和访问,对数据库的高可扩展性和高可用性存在无可比拟的优势,而且对于Web2.0网站来说,关系型数据库的很多主要特性都发挥不出作用。因此,构建非关系型存储的中医养生知识库在提高存储和查找性能上相比于关系型数据库有一定优势,对于中医药事业的发展有积极意义。
[参考文献]
[1]邹贵金.深入理解云计算(MongoDB管理与开发实战详解)[M].北京:中国铁道出版社,2013.
[2]于琦,于彤,高宏杰.中医养生知识库构建方法研究[J].世界科学技术·中医药现代化,2015(8):1612-1616.
[3]于琦,李敬华,高宏杰.中医养生数据库建设[J].中国数字医学,2015(8):73-75.
[4]黄贤立.NoSQL非关系型数据库的发展及应用[J].福建电脑,2010(7):30.
[5]吾木提·那合曼.NoSQL数据库综述[J].电子世界,2015(17):146-147.
[6]南敬宇.浅谈NoSQL数据库[J].电子技术与软件工程,2013(19):229.
[7]权治,宋晶晶.基于NoSQL的数据库技术分析[J].无线电工程,2013(9):4-6.
[8]王振辉,王振铎.MongoDB中数据分页优化技术[J].计算机系统应用,2015(6):243-246.
[9]王光磊.MongoDB数据库的应用研究和方案优化[J].中国科技信息,2011(20):93-94.
[10]张文盛.基于MongoDB构建高性能网站技术研究[J].吉林师范大学学报:自然科学版,2013(1):123-127.
[11]陈涤平.中医养生大成[M].北京:中国中医药出版社,2014.
Study on Building a Non-Relational Storage for Health Preservation of Traditional Chinese Medicine Knowledge Based on Mongodb Database
Qi Shuaibin, Hu Chenjun*, Hu Kongfa
(College of Information Technology, Nanjing University of Chinese Medicine, Nanjing 210029, China)
Abstract: This research was to study the characteristics of the MongoDB Database by the current problems on Relational Database and the analysis on the features of NoSQL Database. We try to build a non-relational storage for health preservation of Traditional Chinese Medicine knowledge based on MongoDB Database. The research makes it convenience for users to obtain the knowledge of keeping good health by Traditional Chinese Medicine more dynamically.
Key words: MongoDB; NoSQL; regimen of traditional chinese medicine repository; knowledge database