与会人员来自Voldemort,Cassandra, Dynomite, HBase, Hypertable, CouchDB, VPork, 以及MongoDB的公司。这个词迅速的被人们注意到,有人认为只有出席了这次会议的几个数据库公司的产品才是NoSQL。事实上,就是对NoSQL这个名字本身的理解也是有分歧的:很多NoSQL的倡导者认为它不仅仅指的是”No” to SQL,应该把它理解成Not Noly SQL才对。对于此,我认为,应该从目前的数据库生态环境中分离出一个独立的数据库类型,这样对NoSQL的未来更有好处。当我们说“x 是一个NoSQL数据库”时,我认为把NoSQL解释成“Not Only”是愚蠢的,因为这会让这个术语变得没有价值。(因为这样一来你实际上可以认为SQL Server也是一个NoSQL数据库)。我们应该把NoSQL的“not only”做另外一种理解——尽管这个时候我更愿意使用PolyglotPersistence这个词。虽然有这么多的讨论,定义如何才是一个NoSQL数据库仍然不那么容易。难道所有不使用SQL的数据库都有资格叫这个名字吗?那如何看待那些更老的数据库如IMS�0�2或�0�2MUMPS呢?如何看待那些没有SQL的关系型数据库系统(例如早期的Ingres)?如果有人试图在这最初的八种数据库上外挂一个SQL接口呢?所以,对于我们这本书来说,我们采取的观点是,NoSQL是目前的数据库家族的外来者。它们有些通用的特征,但没有一个是被明确定义的。不使用关系数据库模型(或SQL语言)开源针对大型集群而设计基于21世纪互联网特征的需求没有schema,可以在任何时候向一条记录添加新字段虽然在软件产业里我们已经习惯了这种模糊的边界定义,但我承认当看到又多了这样一个定义后,心里还是有些不爽。但重要的是,在我们以后数十年的开发工作中,这些数据库提供了我们重要的补充。在未来普遍使用的过程中,这些不清晰的定义顶多就像一个蚊子的叮咬。标签:定义, 数据库
创新互联公司主要业务有网站营销策划、成都网站设计、网站建设、微信公众号开发、微信平台小程序开发、H5技术、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、营销型网站资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。
什么是NoSQL数据库?从名称“非SQL”或“非关系型”衍生而来,这些数据库不使用类似SQL的查询语言,通常称为结构化存储。这些数据库自1960年就已经存在,但是直到现在一些大公司(例如Google和Facebook)开始使用它们时,这些数据库才流行起来。该数据库最明显的优势是摆脱了一组固定的列、连接和类似SQL的查询语言的限制。有时,NoSQL这个名称也可能表示“不仅仅SQL”,来确保它们可能支持SQL。 NoSQL数据库使用诸如键值、宽列、图形或文档之类的数据结构,并且可以如JSON之类的不同格式存储。
本文主要内容是测试了不同NoSQL数据库在测试工具YCSB中的表现。我们选取了3款流行的内存(in-memory)数据库管理系统:Redis,Tarantool 以及 CouchBase,还有缓存系统Memchached。Memchached虽然不属于数据库管理系统但常作为快速存储系统使用。
测试环境由4台在Microsoft Azure Cloud中的虚拟机组成的计算机组组成。这些虚拟机同属于一个数据中心。nosql-1和nosql-2用作测试Tarantool和CouchBase,nosql-3和nosql-4用作测试Redis,Azure Redis Cache 以及 Memcached。这些机器都安装和配置了相应数据库和测试项目。虚拟机的配置为4核A3 CPU,7GB RAM,120GB硬盘。
数据库及设置
内存数据库管理系统会存储所有在主内存中的数据并在磁碟上进行持续更新操作;透过日志记录每个数据的修改以确保连贯性。由于是以append-only方式进行日志写入,因此它很少遇到瓶颈问题;读取/写入都不会造成频繁的磁碟头移动。
Redis在2009推出,目前的最新版本是3.0.5。我们这里使用的版本是3.0.4,以append-only(只附加)方式进行数据管理,与其配合使用的是Microsoft Azure Redis Cache工具。
Tarantool是一款开源NoSQL数据库管理系统。我们使用的是Tarantool 1.6.7-126-gb35aff9,日志采用write-ahead(先写)模式。Memcached是一款分布式内存缓存系统,这里使用是Memcached 1.4.14-0ubuntu9。
Couchbase Server是开源分布式NoSQL面向文档数据库,这里使用的版本是Couchbase 4.0.0-4047-1。
YCSB测试工具
Yahoo! Cloud Serving Benchmark(YCSB)是功能强大的NoSQL数据库性能测试工具,它提供了6种主要的负载工作类型,以字母A到F来区分。
负载A负责更新操作,极值是50/50的读写操作,如用于进行新近操作记录。负载B负责读取操作,极值是95/5的读写操作,如用于进行图片标签管理,多进行标签读取操作。负载C负载100%的读取操作,如用于进行用户属性获取。负载D以先进先出方式进行插入操作,如用户进行最新数据读取。负载E负责小范围记录读取而不是单个记录读取,如线程会话。负载F负责记录的读取,修改和写入,如用户信息管理。
我们对配置文件作了两处参数修改:数据条目recordcount设为200000,操作条目operationcount设为5000000。YCSB是多线程工具,我们将以8, 16, 32, 64, 128 及256 线程来进行测试。详细的测试脚本请点击这里进行下载。
下列测试结果图以颜色进行测试对象区分,
Tarantool (HASH) (蓝)
Tarantool (TREE)(浅蓝)
Redis (红)
Azure Redis Cache (橙)
Memcached (绿)
CouchBase(黑)
更多图片请点击[这里]查看。
结论
Tarantool在所有负载类型测试中皆取得了最优成绩。它创建了一个无锁内存引擎,以协同多任务方式进行操作而不是互斥或并行处理方式。根据以下性能图表现,我们的结论是Tarantool的高吞吐量处理是其最大优势之一。因此在多数场合下,Tarantool是用户的最佳选择。
NoSQL 数据库因其功能性、易于开发性和可扩展性而广受认可,它们越来越多地用于大数据和实时 Web 应用程序,在本文中,我们通过示例讨论 NoSQL、何时使用 NoSQL 与 SQL 及其用例。
NoSQL是一种下一代数据库管理系统 (DBMS)。NoSQL 数据库具有灵活的模式,可用于构建具有大量数据和高负载的现代应用程序。
“NoSQL”一词最初是由 Carlo Strozzi 在 1998 年创造的,尽管自 1960 年代后期以来就已经存在类似的数据库。然而,NoSQL 的发展始于 2009 年初,并且发展迅速。
在处理大量数据时,任何关系数据库管理系统 (RDBMS) 的响应时间都会变慢。为了解决这个问题,我们可以通过升级现有硬件来“扩大”信息系统,这非常昂贵。但是,NoSQL 可以更好地横向扩展并且更具成本效益。
NoSQL 对于非结构化或非常大的数据对象(例如聊天日志数据、视频或图像)非常有用,这就是为什么 NoSQL 在微软、谷歌、亚马逊、Meta (Facebook) 等互联网巨头中特别受欢迎的原因。
一些流行的 NoSQL 数据库包括:
随着企业更快地积累更大的数据集,结构化数据和关系模式并不总是适合。有必要使用非结构化数据和大型对象来更好地捕获这些信息。
传统的 RDBMS 使用 SQL(结构化查询语言)语法来存储和检索结构化数据,相反,NoSQL 数据库包含广泛的功能,可以存储和检索结构化、半结构化、非结构化和多态数据。
有时,NoSQL 也被称为“ 不仅仅是 SQL ”,强调它可能支持类似 SQL 的语言或与 SQL 数据库并列。SQL 和 NoSQL DBMS 之间的一个区别是 JOIN 功能。SQL 数据库使用 JOIN 子句来组合来自两个或多个表的行,因为 NoSQL 数据库本质上不是表格的,所以这个功能并不总是可行或相关的。
但是,一些 NoSQL DBMS 可以执行类似于 JOIN的操作——就像 MongoDB 一样。这并不意味着不再需要 SQL DBMS,相反,NoSQL 和 SQL 数据库倾向于以不同的方式解决类似的问题。
一般来说,在以下情况下,NoSQL 比 SQL 更可取:
许多行业都在采用 NoSQL,取代关系数据库,从而为某些业务应用程序提供更高的灵活性和可扩展性,下面给出了 NoSQL 数据库的一些企业用例。
内容管理是一组用于收集、管理、传递、检索和发布任何格式的信息的过程,包括文本、图像、音频和视频。NoSQL 数据库可以通过其灵活和开放的数据模型为存储多媒体内容提供更好的选择。
例如,福布斯在短短几个月内就构建了一个基于 MongoDB 的定制内容管理系统,以更低的成本为他们提供了更大的敏捷性。
大数据是指太大而无法通过传统处理系统处理的数据集,实时存储和检索大数据的系统在分析 历史 数据的同时使用流处理来摄取新数据,这是一系列非常适合 NoSQL 数据库的功能。
Zoom使用 DynamoDB(按需模式)使其数据能够在没有性能问题的情况下进行扩展,即使该服务在 COVID-19 大流行的早期使用量激增。
物联网设备具有连接到互联网或通信网络的嵌入式软件和传感器,能够在无需人工干预的情况下收集和共享数据。随着数十亿台设备生成数不清的数据,IoT NoSQL 数据库为 IoT 服务提供商提供了可扩展性和更灵活的架构。
Freshub就是这样的一项服务,它从 MySQL 切换到 MongoDB,以更好地处理其大型、动态、非统一的数据集。
拥有数十亿智能手机用户,可扩展性正成为在移动设备上提供服务的企业面临的最大挑战。具有更灵活数据模型的 NoSQL DBMS 通常是完美的解决方案。
例如,The Weather Channel使用 MongoDB 数据库每分钟处理数百万个请求,同时还处理用户数据并提供天气更新。