返回介绍

3.1 NoSQL 分类

发布于 2024-09-26 01:07:03 字数 3874 浏览 0 评论 0 收藏 0

按照数据模型保存性质,将当前 NoSQL 分为四种类型 type:

  1. Key-value stores 键值存储,主要会使用到一个 哈希表 ,这个表中有一个特定的键和一个指针指向特定的数据。保存 keys+BLOBs (二进制大对象 Binary Large OBjects)

  2. Table-oriented 列存储,面向表,通常是用来应对分布式存储的海量数据。主要有 Google 的 BigTable 和 Cassandra.

  3. Document- oriented 面向文本,文本是一种类似 XML 文档,该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON。MongoDB 和 CouchDB

  4. Graph-oriented 面向图论. 如 Neo4J.

表格 17 NoSQL 比较表 1

Data modelPerformanceScalabilityFlexibilityComplexityFunctionality
Relational databasevariablevariablelowmoderaterelational algebra
Key–value storehighhighhighnonevariable (none)
Graph databasevariablevariablehighhighgraph theory
Document-oriented storehighvariable (high)highlowvariable (low)
Column-oriented storehighhighmoderatelowminimal

表格 18 NoSQL 四种类别比较表 2

分类Examples 举例典型应用场景数据模型优点缺点
键值(key-value)Redis, Tokyo Cabinet/Tyrant, Voldemort, Oracle BDB内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。Key 指向 Value 的键值对,通常用 hash table 来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据
列存储数据库 TableHBase, Cassandra, Riak分布式的文件系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限
文档型数据库 DocumentMongoDB, CouchDB,Web 应用(与 Key-Value 类似,Value 是结构化的,不同的是数据库能够了解 Value 的内容)Key-Value 对应的键值对,Value 为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法。
图形数据库 (Graph)Neo4J, InfoGrid, Infinite Graph社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N 度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

对于 NoSQL 并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:

  • 不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。
  • 无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL 往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。
  • 弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。
  • 分区:相对于将数据存放于同一个节点,NoSQL 数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。
  • 异步复制:和 RAID 存储系统不同的是,NoSQL 中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。
  • BASE:相对于事务严格的 ACID 特性,NoSQL 数据库保证的是 BASE 特性。BASE 是最终一致性和软事务。

MongoDB 和 OrientDB 包含许多常见功能,但引擎是根本不同的。 MongoDB 是纯文档数据库,OrientDB 是一个具有图形引擎的混合文档。

表格 19 MongoDB 和 OrientDB 比较

特性MongoDBOrientDB
关系使用 RDBMS JOINS 创建实体之间的关系。 它具有高运行时成本,并且当数据库规模增加时不扩展。嵌入和连接文档,如关系数据库。 它使用从图形数据库世界采取的直接,超快速链接。
Fetch Plan成本高的加入操作。轻松返回带有互连文档的完整图形。
事务不支持 ACID 事务,但它支持原子操作。支持 ACID 事务和原子操作。
查询语言具有基于 JSON 自己的语言。查询语言是建立在 SQL。
索引对所有索引使用 B 树算法。支持三种不同的索引算法,使用户可以实现最佳性能。
存储引擎使用内存映射技术。使用存储引擎名称 LOCAL 和 PLOCAL。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文