AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

NoSQL 数据库面面观

  • 2013-11-16
  • 本文字数:2673 字

    阅读完需:约 9 分钟

Alexey Vasiliev 是一位知名的 Web 开发者与 Linux 系统管理员,曾参与开发过多个项目,如 falcon mongodb_logger sht_rails piro 等项目。近日,Vasiliev 就当前各种 NoSQL 数据库的优势与劣势撰文进行了详尽的分析。这些分析与比较将会对广大开发者项目的NoSQL 数据库选型提供一定的帮助与指导作用。

NoSQL 数据库现在已经变得非常流行了,在 NoSQL 这个大概念下实际上包含了大量的方式与项目,旨在实现各种数据库模型,他们与传统的关系型数据库管理系统存在着非常大的差别,而传统的关系型数据库系统是通过 SQL 的方式来访问数据的。在 NoSQL 领域中,传统观念中的模式可以通过不同的数据结构来实现,如散列表、数组、树、图等等。

术语“NoSQL”最早出现在上个世纪 90 年代末期,然而真正为大家所熟知则是在 2009 年中期。起初,它只是由 Carlo Strozzi 创建的一个小型开源数据库,将所有数据以 ASCII 文件的形式存储,并使用 shell 脚本而非 SQL 来访问这些数据。这个数据库与当前的“NoSQL”概念并没有任何相似之处。

Johan Oskarsson 在 2009 年 6 月于旧金山组织了一场会议,讨论 IT 市场的新技术、数据存储与处理等主题。之所以会举办这场会议的主要原因在于 BigTable 和 Dynamo 等新产品的出现。“NoSQL”这个术语则是由来自 RackSpace 的 Eric vans 提出的。这个术语原本就是用在这场会议当中的,也没有什么更深层次的含义。不过最后的结果却是它迅速在互联网上蔓延开来,成为 IT 领域的一个新趋势。随后,Pramod J.Sadalage 与 Martin Fowler 编写了“ NoSQL Distilled ”一书,旨在对日益庞大的 NoSQL 世界进行组织。

现在大约有 150 多种 NoSQL 数据库( nosql-database.org ),下面就来探讨一下 NoSQL 的主要发展方向。

列簇存储

面向列的 DBMS 是这样一种数据库管理系统,它将数据表存储为数据列而非行的形式。从物理上来说,表是列的集合,每一列从本质上来说都是只有一个字段的表。这些数据库通常用于分析系统、商业智能与分析型数据存储。

优点:

  • 可以比较数据,因为在表的一列中,数据通常都是同种类型的。
  • 可以通过便宜、性能一般的硬件实现高速的查询性能;由于压缩的原因,相对于关系型数据库来说,这种方式磁盘上的数据所占据的空间要少 5 到 10 倍。

缺点:

  • 通常没有事务。
  • 对于熟悉传统 RDBMS 的开发者来说存在不少限制。

典型代表:

  • HBase
  • Cassandra
  • Accumulo
  • Amazon SimpleDB

键值存储

你可以通过这种数据库将键值对存储到持久化存储中,随后使用键来读取值。那么对于这种初看起来用途非常有限的解决方案来说有哪些好处呢?在根据键来保存 / 读取值时,系统是非常高效的,因为它没有 SQL 处理器、索引系统以及分析系统等诸多限制。这种解决方案提供了最高效的性能,代价最低的实现以及可伸缩性。

优点:

  • RDBMS 太慢了,SQL 游标的负担过于沉重。
  • 采用 RDBMS 的解决方案来存储少量数据的代价有些大。
  • 没必要使用 SQL 查询、索引、触发器、存储过程、临时表、表单以及视图等等。
  • 由于其轻量级的设计,键值数据库可以很容易实现可伸缩性以及高性能。

缺点:

  • 关系型数据库的限制可以从底层就确保数据的完整性,而键值存储就没有这些限制,数据的完整性是由应用来控制的。在这种情况下,数据的完整性可能会由于应用代码的错误而做一些妥协。
  • 在 RDBMS 中,如果模型设计良好,那么数据库的逻辑结构就能完全反映出存储数据的结构,并且与应用的结构有所不同(数据是独立于应用的)。对于键值存储来说,要想取得这种效果是非常困难的事情。

典型代表:

  • Amazon DynamoDB
  • Riak
  • Redis
  • LevelDB
  • Scalaris
  • MemcacheDB
  • Kyoto Cabinet

文档存储

文档存储指的是用于存储、搜索与管理面向文档的信息(半结构化数据)的程序,其中心概念就是文档。具体的面向文档数据库的实现是不同的,不过总的来说,他们都会以各种标准化格式对数据(文档)进行封装与加密,主要格式有 XML、YAML、JSON、BSON、PDF 等等。

优点:

  • 足够灵活的查询语言。
  • 易于水平扩展。

缺点:

在很多时候原子性是得不到保障的。

典型代表:

  • MongoDB
  • Couchbase
  • CouchDB
  • RethinkDB

图型数据库

图型数据库指的是使用图结构的数据库,通过结点、边与属性来表示和存储数据。根据定义,图型数据库是一种提供了无需索引而彼此邻接的存储系统。这意味着每个元素都包含了直接指向邻接元素的指针,因此没必要再通过索引进行查找了。

优点:

  • 对于关联数据集的查找速度更快。
  • 可以很自然地扩展为更大的数据集,因为他们无需使用代价高昂的连接运算符。

缺点:

  • RDBMS 可以用在更为通用的场景下,图型数据库只适合类似于图的数据。

典型代表:

  • Neo4j
  • FlockDB
  • InfoGrid
  • OrientDB

多模数据库

这些数据库包含了多种数据库的特性。

有两种不同的产品分组可以认为是多模的:

  • 支持多种数据模型和用例的多模数据库。 比如说,ArangoDB 宣称它拥有键值存储的好处,同时还提供了面向文档以及图型数据库的支持。
  • 支持多种模式的通用目的的数据库。 比如说,Oracle 的 MySQL 5.6 支持 SQL 方式的访问,也可以通过 Memcached API 实现键值访问。

典型代表:

  • ArangoDB
  • Aerospike
  • Datomic

对象数据库

数据库中的数据都建模为对象、属性、方法以及类。面向对象的数据库通常适合于需要高性能数据处理的应用,这种应用一般都有非常复杂的结构。

优点:

  • 相比于关系元组来说,对象模型最适合于展现现实世界,对于复杂、多方位的对象来说尤为如此。
  • 使用层次特性来组织数据。
  • 访问数据时并不需要专门的查询语言,因为访问是直接面向对象的。然而,有时也是需要使用查询的。

缺点

  • 在 RDBMS 中,由于表的创建、修改或是删除而导致的模式修改通常并不依赖于应用。在使用对象数据库的应用中,模式修改类通常意味着还要对与当前类关联的其他应用类进行修改。这会导致对整个系统进行修改。
  • 对象数据库通常会通过单独的 API 与特定的语言绑定,只有通过该 API 才能查询数据。在这方面,RDBMS 就做得很好,这要归功于它所使用的通用查询语言。

典型代表:

  • VelocityDB
  • Objectivity
  • ZODB
  • Siaqodb
  • EyeDB

多维数据库

这是针对在线分析处理的一种数据库,它可以从各种关系型数据库中检索数据,并且以某种方式将信息组织为类别和段当中。

典型代表:

  • GlobalsDB
  • Intersystems Cache
  • SciDB
  • Rasdaman

多值数据库

多维数据库的变种。主要的特性是支持使用属性来存储值的列表。

典型代表:

  • Rocket U2
  • OpenInsight
  • Reality

总结

NoSQL 的发展速度异常迅猛,不过这并不意味着关系型数据库就没落了。他们还会在很多场景下发挥着巨大的作用,并且与 NoSQL 数据库共存。我们现在处在多种持久化存储共存的时代,并不存在处于垄断地位的关系型数据库与 NoSQL 数据库。架构师们对数据库的选择将会基于数据存储本身的特性,以及所预估的数据量。

2013-11-16 12:006760
用户头像

发布了 88 篇内容, 共 266.7 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

“仍有 5 亿人坚持用 QQ”;马斯克:本周开源 xAI 人工智能助手丨 RTE 开发者日报 Vol.162

声网

AI时代的API新经济:程序员如何利用API轻松实现月收数万?

幂简集成

API 接口 API 策略 API创新

低代码与AIGC实战:引领软件开发的新风潮

不在线第一只蜗牛

低代码 AIGC

图像处理-Java-以图搜图

alexgaoyh

Java lucene OpenCV 以图搜图 KNN算法

观测云产品服务引领监控观测服务新高度

可观测技术

Linux常用统计命令大全

霍格沃兹测试开发学社

今天来聊聊Hybird app技术

FinFish

小程序容器 跨端框架 Hybird App Hybird开发

Graph+LLM 更进一步|悦数图数据库推出 AI 知识图谱构建器及图语言生成助手

最新动态

图像处理-Java-OpenCV-水印编码/解码

alexgaoyh

OpenCV java 数字版权保护 图像水印 基于离散余弦变换

鞋服品牌如何计算门店盈亏平衡?

第七在线

深入理解 Nginx:原理和基础介绍

霍格沃兹测试开发学社

《实现领域驱动设计》-聚合

不在线第一只蜗牛

DDD

甲骨文云中的区间管理:从基础到策略

极客天地

走进甲骨文云服务器:打造专属的云资源管理空间

极客天地

IT驻场外包能提供哪些类型的服务?

Ogcloud

IT IT外包 IT外包公司 IT外包服务 IT驻场外包

全新体验:借助海外云手机畅玩TikTok

Ogcloud

云手机 海外云手机 tiktok云手机 电商云手机 跨境云手机

Vue3中computed、watch、watchEffect的区别

互联网工科生

如何在 Windows 系统电脑中安装 CentOS 7 虚拟机

霍格沃兹测试开发学社

【FAQ】推送获取push token报错6003,如何排查?

HarmonyOS SDK

HarmonyOS

革命性创新:聚道云软件连接器如何为企业重塑财务管理流程?

聚道云软件连接器

案例分享

探索TikTok云手机在社交媒体营销的作用

Ogcloud

TikTok 云手机 海外云手机 tiktok云手机 tiktok运营

一“云”在手,监控无忧——为何一个观测云即可满足全方位监控需求

可观测技术

可观测性

v1.8.1🔥httpsok一分钟搞定SSL证书自动续期

物有本末

运维 SSL证书 免费SSL证书

观测云赋能云计算服务商,提升监控观测服务价值与竞争力

可观测技术

COB封装小间距LED可在哪些领域发挥潜能?

Dylan

技术 cobra LED LED display LED显示屏

从ESB总线到iPaaS集成平台,如何选择最佳集成方案

RestCloud

ESB 系统集成 ipaas

NoSQL数据库面面观_DevOps & 平台工程_张龙_InfoQ精选文章