没有合适的资源?快使用搜索试试~ 我知道了~
沙特国王大学沙特国王大学学报www.ksu.edu.sawww.sciencedirect.comJournal of King Saud University内存数据库Abdullah Talha Kabakusa,*, Resul KarabaAbant Izzet Baysal University,IT Center,14030 Bolu,TurkeybDuzce University,Faculty of Engineering,Department of Computer Engineering,81620 Duzce,Turkey接收日期:2016年4月1日;修订日期:2016年5月6日;接受日期:2016年6月29日2016年7月2日在线发布摘要NoSQL数据库的流行是由于以下需求而增加的:(1)通过利用高度可扩展的架构,比关系数据库管理系统更快地处理大量数据;(2)灵活的(无模式)数据结构;(3)低延迟和高性能。尽管内存使用率不是评估算法性能的主要标准,但由于这些数据库从内存中提供数据,因此还对它们的内存使用率进行了实验,同时完成论文中的每个操作所需的时间,以揭示哪一个最有效地使用内存。目前有超过225个NoSQL数据库提供不同的功能和特性。因此,有必要揭示哪一个为不同的数据操作提供更好的性能在本文中,我们对广泛使用的内存数据库进行了实验,以测量它们在以下方面的性能:(1)完成操作所需的时间,(2)在操作过程中如何有效地使用内存。根据本文报告的结果,没有数据库可以为所有数据操作提供最佳性能。这也证明了,即使RDMS将其数据存储在内存中,其整体性能也比NoSQL数据库差©2016作者。制作和主办由爱思唯尔B.V.代表沙特国王大学。这是CC BY-NC-ND许可下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍将“数据存储机制”作为企业软件系统的核心的主要原因可以列举如下:(1)它是软件中最主要的部分,决定了应用程序响应请求的速度;(2)由于关键业务操作,数据丢失大多是不可接受的。直到*通讯作者。传真:+90 3742534526。电子邮件地址:talha. ibu.edu.tr(A.T. Kabakus)。沙特国王大学负责同行审查随着NoSQL(非唯一SQL)数据库的兴起,关系数据库管理系统(RDBMS)是唯一和唯一的补救措施。然而,随着存储数据的不断增长,关系数据库管理系统的局限性,例如可扩展性和存储,以及由于大量数据而导致的查询效率损失,以及更大数据库的存储和管理变得具有挑战性(Abramova等人, 2014年)。在撰写本文时,有超过225个NoSQL数据库提供不同的功能和特性(Edlich,2016)。与RDMS相比,NoSQL数据库具有更高的横向可扩展性和灵活性在利用无模式数据结构和分布式架构快速处理大量数据时,NoSQL数据库比RDMShttp://dx.doi.org/10.1016/j.jksuci.2016.06.0071319-1578© 2016作者制作和主办由爱思唯尔B.V.代表沙特国王大学。这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。制作和主办:Elsevier关键词NoSQL数据库;内存数据库;数据库性能内存数据库521Manoharan,2013)。此外,RDMS的性能随着数据大小的增加而降低,这导致死锁和并发问题(Han等人, 2011年)。RDMS依赖于ACID(原子性,一致性,隔离性,持久性)一致性模型,确保所有事务都正确提交,不会损坏数据库,并且数据一致,NoSQL数据库基于BASE(基本可用,软状态,最终一致)一致性模型,以实现可扩 展性, 高可 用性和 高性能 (Bartholomew ,2010;Carro , 2014; Cook , 2009; Gajendran , 2012; Pritchett ,2008)。NoSQL数据库从易失性存储器(即随机存取存储器- RAM)而不是非易失性存储器(即硬盘驱动器)提供数据,以便提高查询速度,因为I/O(输入/输出)数据访问缓慢(Abramova等人, 2014年)。本文的其余部分组织如下:第2节描述了内存数据库的类别及其差异。第三节介绍相关工作。第4节讨论了拟议的实验装置。第5节给出了实验结果和讨论。最后,第6节对本文进行了总结。2. NoSQL数据库NoSQL 数 据 库 可 以 根 据 不 同 的 优 化 分 为 四 类(Indrawan-Santiago,2012):键值存储:数据存储为键值对。 这种数据结构也被称为“哈希表”,其中的数据是通过键检索的。最著名的键值存储的例子是Redis1,Memcached2。文档存储:数据存储在包含键值对的集合中,这些键值对封装在JSON (JavaScript对象表示法)或JSON类文档中(Hecht和Jablonski,2011)。最著名的文档存储示例是MongoDB3,CouchDB4。由于值对系统来说不是不透明的,因此可以通过值和键来查询数据(Hecht和Jablonski,2011)。列族:数据被存储为一组行和列,其中列根据数据的关系被分组(Abramova等人, 2014年)。最著名的文档存储示例是Cassandra5和HBase6。图形数据库:这种类型的数据库最适合用于以图形的 形 式 表 示 数 据 。 图 数 据 库 最 著 名 的 例 子 是Neo4j7。3. 相关作品Bartholomew ( Bartholomew , 2010 ) 比 较 了 SQL 和NoSQL数据库,并提供了每个数据库的简要历史和用例。Tiwari详细介绍了NoSQL数据库,并根据以下特性进行了比较:(1)可扩展性,(2)事务完整性,一致性,(3)数据建模,(4)查询支持,以及(5)访问和接口可用性(Tiwari,2011)。Hecht和Jablonski提出了一个关于NoSQL数据库的面向用例的调查(Hecht和Jablonski,2011)。他们通过数据模型、查询可能性、并发控制、分区和复制机会来比较Abramova et al. ( 2014 ) 使 用 Yahoo ! 云 服 务 基 准(Cooper等人,2010),以评估和比较NoSQL数据库的性能。他们随机生成60万条记录,并通过改变读取、更新和插入操作的比率,将它们用于不同的工作负载。实验评估中使用的数据库是Redis,Cassandra,HBase,MongoDB和OrientDB8。他们报告说,总的来说,内存数据库Redis提供了最好的性能。此外,他们报告说,列族数据库Cassandra和HBase显示出良好的更新性能,因为它们针对更新操作进行了优化。Li和Manoharan(2013)通过五个实验比较了NoSQL数据库的性能:(1)实例化数据库桶的时间,(2)读取与给定键对应的值的时间,(3)写入键值对的时间(4)删除键值对的时间,以及(5)获取所有键的时间这些实验还测试了从10个记录到100,000个记录的各种 数 据 。 他 们 测 试 的 数 据 库 包 括 MongoDB 、RavenDB9 、 CouchDB 、 Cassandra 、 Hypertable10 、Couchbase11 和 MS SQL Express12 。 他 们 报 告 说 ,Couchbase和MongoDB是读、写和删除操作最快的两个他们还指出,Couchbase缺乏从数据库中获取所有键。Boicea等人(2012)通过三个实验比较了MongoDB和Oracle13数据库,以比较NoSQL和SQL数据库的性能:(1)插入数据所用的时间,(2)更新数据所用的时间,以及(3)删除数据所用的时间。这些实验还针对从10个记录到1,000,000个记录的各种数据他们报告说,对于所有操作,MongoDB 提供了比Oracle更好的性能。我们在本文中的贡献是开发我们自己的软件来测量广泛使用的内存数据库的各种实验的性能。尽管内存使用率不是评价算法性能的主要标准,但由于这些数据库从内存中提供数据,因此有必要揭示它们的内存使用率,特别是当数据量变大时。基于这个原因,不同于相关的工作,我们还深入研究了内存数据库的内存使用情况,以及它们在完成不同数据库操作所花费的时间方面的性能4. 实验装置表1中列出了本文中实验的内存数据库及其数据库模型和版本。每个NoSQL数据库类别(键值存储,文档存储,列族,1http://redis.io。2https://memcached.org。3https://www.mongodb.org。4http://couchdb.apache.org。5http://cassandra.apache.org。6https://hbase.apache.org。7http://neo4j.com。8http://orientdb.com。9https://ravendb.net。10http://www.hypertable.org。11http://www.couchbase.com。12https://www.microsoft.com/en-us/server-cloud/products/sql-ser-ver/overview.aspx。13https://www.oracle.com/database/index.html。●●●●522A.T.卡巴库斯河卡拉表2用于评估实验的机器规格。表5每个数据库读取给定键对应值所用的时间(ms)。数据库记录表1本文中实验的内存数据库。数据库名称数据库模型版本MongoDB文档存储3.2.4Redis键值存储3.0.7Memcached键值存储1.4.14Cassandra列存储2.2.5H2关系数据库1.4.191表3写入键值对的计算时间(毫秒)。数据库记录1,00010,000100,0001,000,000Redis34214166614.638MongoDB904348226.030253.898Memcached231002762813Cassandra1202448715.482140.842H214747516487394图 数 据 库 ) , 除 了 图 数 据 库 之 外 , 因 为 它 是 由Armstrong等人(2013)讨论的,所以图数据库不能与使用相同实验的其他NoSQL数据库兼容。实验设置中使用的所有数据库都是NoSQL数据库,除了H2。我们 故 意 将 H2 包 括 在 这 个 列 表 中 , 尽 管 它 是 一 个RDMS,H2与其他RDMS的不同之处在于将其数据存储在内存中而不是硬盘中。因此,实验结果揭示了数据库模型对数据库性能的影响我们开发了自己的基于Java的软件来测量各种实验的内存数据库的性能。每个操作的执行时间通过使用java.lang. System类确定方法开始和结束时的系统时间来记录。类似地,每个操作消耗的内存是通过使用java.lang.java类确定方法开始和结束时的可用内存(以字节为单位)来记录的,java. lang. java类允许Java应用程序与它们运行的环境进行交互(Ricca,2003)。Bergmann等人也以这种方式计算执行时间和消耗的内存。(2010年)。在实验过程中,操作系统的所有其他进程(强制进程除外)都按顺序停止来揭示数据库的性能。所有实验均在同一台机器上进行评价,其规格见表2。5. 实验结果与讨论内存数据库的性能通过四个实验来衡量:(1)写入键-值对的性能,(2)读取对应于给定键的值的性能,(3)移除对应于给定键的键-值对的性能,以及(4)获得所有数据的性能。对于每个实验,数据的大小呈指数级增加,以揭示数据的大小如何影响每个数据库的性能。5.1. 实验1-实现了生成随机键值对的服务,以测量内存中数据库。表3列出了每个数据库写入生成的键值对的计算时间。如结果所示,数据库列表可以按写操作的总 体 性 能 排 序 : Memcached , H2 , Redis ,Cassandra,MongoDB。应该注意的是,Memcached和MongoDB之间存在显著差异。随着数据大小的增加,数据库之间的性能差异变得明显。MongoDB的性能在数据大小增加时会显著下降,因为MongoDB使用了Abramova等人讨论的锁定机制。(2014年)。由于内存数据库从内存中提供数据,因此有必要确定它们在写操作期间消耗了多少内存。表4显示了每个数据库用于写操作的内存使用情况。正如结果所示,与运行时间结果不同,Redis在高效使用内存方面提供了最佳性能。5.2. 实验2我们的第二个实验测量读取与给定键对应的值所需的时间和消耗的内存。由于实验结果列于表5中,因此H2提供表4用于写入操作(MB)。数据库数量记录1,00010,000100,0001,000,000Redis2.53.84.362.7MongoDB56.9263.6365155.9Memcached5.327.2211264.9Cassandra5.37.5208.1102.6H22.333.2103.4540操作系统Ubuntu 14.04(64-bit)1,00010,000100,0001,000,000存储器16 GBRedis8688CPU英特尔酷睿i7- 4710 MQ 4核; 6 MB L3;MongoDB81011132.50 GHz> 3.50 GHzMemcached9141430Java版本1.8.0_60Cassandra2236文件系统ext4H2252660171内存数据库523表7每个数据库删除与给定键对应的数据所用的时间(ms)。数据库记录表8用于删除操作(MB)。数据库记录表10内存数据库获取所有数据所使用的内存(MB)。数据库记录1,00010,000100,0001,000,000Redis0100MongoDB758892355Memcached17171613Cassandra2212H21013681741,00010,000100,0001,000,000Redis2.12.12.22.2MongoDB1.31.31.10.8Cassandra0.60.61.31.3H21.21.19.710.6在经过的时间方面最差的读取性能。尽管H2也像其他数据库一样将数据存储在内存中,但关系数据库管理系统的数据库体系结构降低了读操作的性能。如结果所示,数据库列表可以按读取操作的整体性能排序:Cassandra,Redis,Memcached,MongoDB,H2。Cassandra在高效内存使用方面提供了最佳的读取性能。除了H2之外,其他数据库之间的内存使用没有显著差异。 当数据大小增加时,H2的读取性能会显著降低(见表6)。5.3. 实验3 -我们的第三个实验测量删除与给定键对应的数据所需的时间正如表7总结的结果,Redis显然提供了最好的性能,在不到1 ms的时间内完成操作,而MongoDB提供了最差的性能。Cassandra删除操作的性能计算与Redis非常相似。在高效的内存使用方面,Cassandra和Redis提供了比其他内存数据库更好的性能,而H2提供了最差的删除操作(见表8)。5.4. 实验4我们的第四个实验在获取整个数据时测量数据库性能。这个实验与实验2不同,因为只要找到与给定密钥对应的数据,读查询就会结束。尽管在实验2中密钥是随机选择的,但我们认为获取整个数据使这些度量更清晰:(1)有多快1,00010,000100,0001,000,000Redis0000MongoDB10101011.3Memcached2.22.12.22.2Cassandra0000H21.21.84.962.9是数据库,同时获取所有可用的数据,以及(2)数据库消耗多少内存来存储和获取整个数据。结果如表9和表10所示,MongoDB显然提供了最佳性能,与Redis和H2 相 比 消 耗 了 更 少 的 内 存 。 随 着 数 据 量 的 增 加 ,MongoDB和其他数据库之间的性能差异变得明显。Memcached被排除在这个实验之外,因为它不支持获取整个数据(Stackoverflow,2016)。根据作为ACID和BASE一致性模型的基础的CAP(一致性、可用性、分区容限)定理,只能实现三个保证中的两个(Han等人,2011; Rahman等人,2015年)。虽然RDMS主要关注一致性,但NoSQL数据库背后的主要思想是放弃一些一致性,以提供更多的可用性,可伸缩性和高性能(Bartholomew,2010)。使用RDMS的另一个优点是,由于它们使用通用语言(SQL结构化查询语言),因此与NoSQL数据库相比,从一个关系数据库管理系统迁移到另一个关系数据库管理系统总是更有可能,NoSQL数据库有自己的一组API来交互它们包含的数据(Bartholomew,2010)。表6用于读取操作(MB)。数据库记录表9获取每个数据库的所有数据所用的时间(ms)。1,00010,000100,0001,000,000数据库数量记录Redis1.31.31.31.31,00010,000100,0001,000,000MongoDB1.32.52.51.3Redis1091111Memcached1.32.51.32.5MongoDB91598Cassandra0000Cassandra9322454H21.21.29.860H29141820524A.T.卡巴库斯河卡拉6. 结论NoSQL数据库基于BASE一致性模型而不是ACID一致性模型,ACID一致性模型的思想是放弃一些一致性,以提供更高的可用性,可扩展性和高性能。NoSQL数据库(目前有超过225个NoSQL数据库提供不同的功能和特性。在本文中,我们评估了每种类型中至少一个内存数据库:Redis和Memcached作为键值存储,MongoDB作为文档存储,Cassandra作为列族,H2作为内存关系数据库管理系统。与相关工作不同,除了完成各种数据操作所花费的时间外,还对内存数据库的内存使用情况进行了实验,以揭示每个数据库的内存使用情况。从实验中获得的结果可以列出如下:虽然Memcached在运行时间方面提供了最好的写入性能 , 但 Redis 比 其 他 人 更 有 效 地 使 用 内 存 。 由 于MongoDB 的 锁 定 机 制 , 当 数 据 大 小 增 加 时 ,MongoDB的性能会显着下降。Redis在读操作方面提供了比Memcached和MongoDB更好的性能。H2显然提供了最差的读取性能。我们认为H2的体系结构是关系数据库,这是这种差异背后的主要原因。当涉及到删除与给定键对应的键值对时,Redis显然提供了最好的性能,而MongoDB提供了最差的性能。Redis和Cassandra比其他数据库更有效地消耗内存进行删除操作。H2使用内存的效率低于其他人,当数据大小增加时,差异变得明显。MongoDB提供了最好的性能来获取整个数据,而Cassandra提供了最差的性能。使用H2的缺点是,由于它将数据存储在内存中,因此它是易失性的。Redis和MongoDB(当为查询创建索引)从内存中提供数据,而硬盘用于存储。当涉及到获取整个数据的内存消耗时,MongoDB比其他数据库更有效地使用内存H2使用的内存比其他的要多得多,Mem- cached不支持获取整个数据。SQL和NoSQL数据库提供了不同的特性,一个不能取代另一个。如果系统在一致性方面不够灵活,那么关系数据库管理系统是正确的选择。如果系统可以放弃一些一致性,那么NoSQL数据库可以是一个很好的选择,以提供更多的可用性,可扩展性和高性能。作为未来的工作,文档类型对每个数据库的性能的影响可以进行实验。还有,在实验过程中所经历的疲劳的原因可以通过检查它们的结构来详细解释。分布式和并行环境对数据库性能的影响是另一个要研究的主题。引用Abramova,V., Bernardino,J., Furtado,P., 2014. 什么是NoSQL数据库?性能概述。打开J。数据库1,17-24。阿姆斯特朗,T.G.,Ponnekanti,V.,Borthakur,D., 卡拉汉,M., 2013. LinkBench:基于Facebook社交图谱的数据库基准。2013年ACM SIGMOD数据管理国际会议的SIGMOD '13会议 记 录 。ACM , New York , NY , USA , pp. 1185-1196.http://dx.doi.org/10.1145/2463676.2465296.Bartholomew,D.,2010. SQL与NoSQL。Linux J.,54-59(doi:FacetMap:可扩展的搜索和浏览可视化)Bergmann,G., Horva'th,A'., 拉斯岛, Varro',D.,Balogh,A.,巴洛,Z.,Oékroés,A.,2010年。EMF模型上的模型查询的增量评估在:佩特里乌,哥伦比亚特区,Rouquette,N.,Haugen,P. (编),模型驱动工程语言与系统,计算机科学讲义。Springer,BerlinHeidelberg , Berlin , Heidel-berg , pp.76-90.http://dx.doi.org/10.1007/978-3-642-16145-2网站。Boicea,A.,Radulescu,F.,阿加平,L. I.,2012. MongoDB vsOracle在:会议记录-330-335.http://dx.doi.org/10.1109/EIDWT.2012.32(罗马尼亚布加勒斯特)。Carro,M.,2014. NoSQL数据库。CoRR绝对值/1401.2。库克,J.D.,2009.数据库事务的ACID与BASE [WWW文档]。网 址 http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/>(2016年3月29日查阅)。库珀,B.F.,Silberstein,A.,Tam,E.,Ramakrishnan河,西尔斯河,2010.使用YCSB对云服务系统进行基准测试。在:第一届ACM云计算研讨会论文集- SoCC'10。ACM,New York,NY,USA,pp.143-154。http://dx.doi。org/10.1145/1807128.1807152。艾德里希 美国, 2016.NoSQL数据库 [WWW文件]。URL(2016年3月28日查阅)。Gajendran,S.K.,2012.关于NoSQL数据库赫克特河,Jablonski,S.,2011. NoSQL评估:面向用例的调查。在:会议记录336-341.http://dx.doi.org/10.1109/CSC.2011.6138544.Indrawan-Santiago,M.,2012.数据库研究:我们正处于十字路口吗?关于NoSQL的思考2012年第15届基于网络的信息系统国际会议论文集,NBIS 2012,墨尔本,澳大利亚,pp。45-51. 得双曲正切值. doi.org/10.1109/NBiS.2012.95网站。Jing,Han,Haihong,E.,Guan,Le,Jian,Du,2011. NoSQL数据库综述。2011年第六届普适计算与应用国际会议。IEEE,PortElizabeth,SouthAfrica,pp.363-366.http://dx.doi.org/10.1109/ICPCA.2011.6106531网站。李,Y.,Manoharan,S.,2013. SQL和NoSQL数据库的性能比较 。 IEEE 太 平 洋 RIM 通 信 、 计 算 机 和 信 号 处 理 会 议15http://dx.doi.org/10.1109/PACRIM.2013.6625441Pritchett ,D. , 2008.碱: 酸的替代 品。 6号线 ,48-55. 得双dx.doi.org/10.1145/1394127.1394128值.Rahman,M.R.,曾湖,Nguyen,S.,古普塔岛Vaidya,N.,2015. 分布式键值存储中一致性-延迟权衡的特征化和适应。分布式、并行和集群计算。Ricca,F.,2003. DLV java wrapper答案集编程:理论与实现的进展。意大利,P. 305- 316●●●●内存数据库525Stackoverflow,2016.在java中检索所有对象的key存储在memcached中-StackOverflow[WWW文 档 ] 。 URLhttp : //stackover-www.example.comflow.com/questions/8487153/retrieve-all-objects-key-store-in-mem-cached-in-java>(2016年3月30日访问)。Stonebraker,M.,2010. SQL数据库v. NoSQL数据库。通讯员。ACM 53,10-11。http://dx.doi.org/10.1145/1721654.1721659网站。Tiwari,S.,2011年。Professional NoSQL,第1版 约翰· 威利&父子公司,印第安纳州,印第安纳波利斯。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功