- 1 数据库概述
- 1.1 DBMS 简史
- 1.2 数据库理论
- 1.3 事务 Transaction
- 1.4 SQL
- 1.5 数据库接口
- 本章参考
- 2 Relational 关系数据库
- 2.1 关系理论
- 2.2 Oracle
- 2.5 Microsoft SQL Server
- 2.6 DB2
- RDBS 比较
- 本章参考
- 3 NoSQL 非关系数据库
- 3.1 NoSQL 分类
- 3.2 键值 key-value 数据库
- 3.3 列存储数据库
- 3.4 图形数据库
- 本章参考
- 4 NewSQL
- 4.1 NewSQL 分类
- 4.2 分布式数据库 Distributed
- 本章参考
- 5 时序数据库 TSDB
- 5.1 简介
- 5.2 时序数据库比较
- 本章参考
- 6 SQL 引擎
- 6.1 SQL 引擎分类
- 6.2 SQL On Hadoop
- 本章参考
- 7 其它数据库
- 7.1 内存数据库 In-memory
- 7.2 嵌入式数据库 Embed
- 7.3 搜索引擎
- 本章参考
- 8 各种数据库分析比较
- 8.1 数据库排行 db-engines
- 8.2 数据库技术选型
- 8.3 DB 性能比较
- 8.4 国产数据库产品列表
- 8.5 DB 常用 SQL 比较
- 本章参考
- 9 SQL 调优
- 9.1 SQL JOIN
- 9.2 SQL 执行流程
- 10 数据库大型应用实例
- 10.1 负载均衡技术
- 10.2 数据库的高可用 HA
- 10.3 数据库的读写分离
- 10.4 数据库拆分(分布式)
- 10.5 跨库查询
- 本章参考
- 参考资料
- 附录
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.1 NoSQL 分类
按照数据模型保存性质,将当前 NoSQL 分为四种类型 type:
Key-value stores 键值存储,主要会使用到一个 哈希表 ,这个表中有一个特定的键和一个指针指向特定的数据。保存 keys+BLOBs (二进制大对象 Binary Large OBjects)
Table-oriented 列存储,面向表,通常是用来应对分布式存储的海量数据。主要有 Google 的 BigTable 和 Cassandra.
Document- oriented 面向文本,文本是一种类似 XML 文档,该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON。MongoDB 和 CouchDB
Graph-oriented 面向图论. 如 Neo4J.
表格 17 NoSQL 比较表 1
Data model | Performance | Scalability | Flexibility | Complexity | Functionality |
---|---|---|---|---|---|
Relational database | variable | variable | low | moderate | relational algebra |
Key–value store | high | high | high | none | variable (none) |
Graph database | variable | variable | high | high | graph theory |
Document-oriented store | high | variable (high) | high | low | variable (low) |
Column-oriented store | high | high | moderate | low | minimal |
表格 18 NoSQL 四种类别比较表 2
分类 | Examples 举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值(key-value) | Redis, Tokyo Cabinet/Tyrant, Voldemort, Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用 hash table 来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 Table | HBase, Cassandra, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 Document | MongoDB, 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 比较
特性 | MongoDB | OrientDB |
---|---|---|
关系 | 使用 RDBMS JOINS 创建实体之间的关系。 它具有高运行时成本,并且当数据库规模增加时不扩展。 | 嵌入和连接文档,如关系数据库。 它使用从图形数据库世界采取的直接,超快速链接。 |
Fetch Plan | 成本高的加入操作。 | 轻松返回带有互连文档的完整图形。 |
事务 | 不支持 ACID 事务,但它支持原子操作。 | 支持 ACID 事务和原子操作。 |
查询语言 | 具有基于 JSON 自己的语言。 | 查询语言是建立在 SQL。 |
索引 | 对所有索引使用 B 树算法。 | 支持三种不同的索引算法,使用户可以实现最佳性能。 |
存储引擎 | 使用内存映射技术。 | 使用存储引擎名称 LOCAL 和 PLOCAL。 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论