论文部分内容阅读
随着Web2.0兴起,关系数据库面临海量、高并发、高扩展性的数据的挑战,非关系型数据库NoSQL能够很好地解决这些问题。MongoDB作为一种典型的NoSQL,但是MongoDB处理较复杂的关系操作性能不好。本论文研究MongoDB数据结构化存取,便于多文档之间的复杂关系操作。MongoDB数据结构化存取,是将数据之间的关系按照一定的数据结构存储在数据库中,并且在数据模型上进行关系操作。MonogDB官方文档对于一对一、一对多和树形结构的数据分别给出了多种关系模型,有很多的问题,如其中一对多模型没有考虑数据模型的适用场景,没有提出多对多的数据模型等问题。为了解决上述问题,本文主要做了如下工作:(1)改进和补充MongoDB结构化存储数据模型。改进官方文档中的一对多数据模型,分适用场景讨论,补充了一对大量数据的数据模型。对于多对多关系,补充一种适用场景广泛的双数组相互关联的模型。对于树型结构关系,补充了3种数据模型,孩子数组模型,父亲孩子id关联模型,DBRefs关联模型。(2)给出改进数据模型上进行关系操作的接口。分别对前面提出的改进数据模型实现和SQL相同功能的关系操作,总结抽象出在数据模型上进行关系操作的接口。然后,将这些接口进行优化化简,得到一组接口。调用这些接口操作MongoDB,能够实现在这些改进数据模型上的关系操作。(3)补充一种MongoDB事务处理解决方案。基于MongoDB单文档能够保持事务的特性,类比关系数据库,补充一种简单又适用广泛的MongoDB事务处理解决方案。论文给出解决方案流程图和解决方案实现。(4)验证模型与性能分析。设计测试实验,验证这一组接口的功能,并且调用这些接口操作MongoDB实现与MySql相同的功能,对比消耗时间。采用控制变量法,从读写速度和并发两方面对比分析两者性能。研究成果表明:论文中提出的MongoDB结构化存储数据模型,能够较好地实现模型上的关系操作,而且在小数据量低并发的情况下,性能优异。