初次接触无SQL
NoSQL是一种无需固定模式的数据库技术。
NoSQL通常被称为“Not only SQL”,简单地分类NoSQL可以说它不是像PostgreSQL和MySQL之类的关系数据库(RDB)。
NoSQL的产生背景是大数据的存在。
大数据是一个术语,用于表示复杂且巨大到一般数据管理和处理软件无法处理的数据集合。
例如,据说Twitter每天处理10TB的数据。
传统的关系数据库无法处理这种大数据量,因此出现了NoSQL技术。
非关系型数据库的特点
RDB和NoSQL的区别经常被广泛比较讨论。
针对NoSQL的特点,我们将逐一介绍这些方面。
1. 无模式
在RDB中,在存储数据之前必须先定义模式。
而在NoSQL中,记录通常保存为JSON,并且可以在没有模式定义的情况下存储数据。
因此,它经常具有层次结构或者结构经常变化的特点。
但并不是所有NoSQL都完全没有模式。
有些情况下模式定义是必需的,有些情况下是可选的。
例如,Firebase Database在插入数据到数据库时会定义验证数据结构的规则。
没有关系
如下所示,NoSQL作为其名字所示,不像RDB那样具有关系性。这是因为关系合并会对性能和可伸缩性产生不利影响。那么,不具备合并功能的NoSQL是如何存储数据的呢?基本思想是什么?
3. 没有交易
正如你所知,RDB具有ACID特性。ACID特性的详细信息如下(https://aws.amazon.com/jp/nosql/)。
根据原子性,事务必定会完全执行或者完全不执行。
一致性指的是一旦事务执行,数据必须符合数据库模式。
隔离性指的是同时发生的事务必须互相独立执行。
持久性指的是即使出现意外的系统故障或停电,也能够恢复到异常发生前的最后状态。
在NoSQL数据库中,通常情况下,为了实现可水平扩展的更灵活的数据模型,会部分放宽关系型数据库ACID特性,换取快速处理大量数据的优先性。
换句话说,NoSQL更注重快速处理大量数据而非数据一致性。
作为NoSQL的特点之一,即结果一致性可被接受的理念存在。
这意味着即使暂时存在不一致的状态,最终数据一致性仍能被维护。
4.易于扩大规模
在关系数据库中,通常可以通过增强硬件的计算功能来进行垂直方向的扩展,或者通过添加只读工作负载的副本来进行水平方向的扩展。
换句话说,需要进行垂直方向的扩展,有物理限制。
NoSQL被设计成可以进行水平方向的扩展,在几乎无限的规模上提高吞吐量,并保持一致的性能。
无SQL数据模型
在NoSQL中存在着多种数据模型。
1. 键值对型 zhí duì
KVS是一个被称为键值存储的东西。正如其名,它是一个具有简单数据模型的键值对结构。
它支持高度分区化,并且由于数据模型简单,因此易于扩展。
Redis、Riak等是其实例。
2. 列向量导向型
这个数据库类似于关系型数据库(RDB),但是与 RDB 在行级别进行处理不同,列式 NoSQL 数据库以列为单位进行处理。
其特点是可以为每行存储任意数量的自定义列,例如在 RDB 中需要用 null 表示的地方,列式 NoSQL 数据库根本不需要拥有该列。
此外,它还可以拥有其他行中不存在的列。
一些列式 NoSQL 数据库有 Cassandra、HBase 等。
3. 文档导向型
数据以对象或类似 JSON 的文档形式表示。
您可以将应用程序代码中使用的对象直接保存到数据库中。
可以以无模式方式存储。
有 MongoDB、CouchDB 等选项。
4. 图形模式
我们使用图形结构保存数据,并处理紧密关联的应用程序。
例如,用户之间的社交网络关系、推荐引擎、欺诈检测、知识图谱等等。
Neo4j、Giraph 等是一些例子。
CAP定理就是分布式系统中的三个基本要素:一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)是不可能同时完全实现的,只能满足其中两个。
分散数据库系统的三个主要要求是一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。
分断耐性指的是分布式系统的网络即使分断,也不会引起错误结果的特性。所谓错误结果指的是数据不一致,例如即使在一个服务器上数据损坏,仍然可以从另一个服务器获取正确的数据。
这些首字母缩写被称为CAP定理。
该定理指出在分布式系统中,最多只能满足其中两个条件的情况。
根据重视的因素不同,数据库系统的特点也会有所变化。
一般来说,NoSQL被归类为CP(一致性和分区容忍性)或AP(可用性和分区容忍性)。
中国加州大学洛杉矶分校
重視可用性与一致性的CA类别包括传统的关系型数据库MySQL和Posgres等。该分类满足ACID特性。
我的合作伙伴
MangoDB和HBase等数据库可以被归类为注重整合性和分断耐性的CP类型。当网络分断时,只有一个组可以接受用户的请求,而其他组无法进行数据的读取和更新,整个数据库将被锁定。
AP: 请把以下内容用中文进行本地化改写,只需要一种选项:
AP(美联社)
重视可用性和分断耐性的AP分类中,包括Dynamo和Cassandra等系统。
即使网络发生分断,所有节点仍将继续接受请求。
作为结果,可能会失去一致性,但为了保证可用性而做出了这种牺牲。
总结
随着大数据需求的增加,我们发现非关系型数据库(NoSQL)的特点与之相匹配,因而受到关注。
此外,NoSQL并非取代传统关系型数据库(RDB)的存在,而是应根据各自的特点来使用。
以下是目前提供的 NOSQL 相关资料。这些资料包括官方网站、开发者论坛、技术博客、新闻报道、知识共享平台和 YouTube 视频等。
1. 亚马逊 AWS 官方网站(https://aws.amazon.com/jp/nosql/)
2. TracPath Works 开发者论坛(https://tracpath.com/works/development/nosql_overview/)
3. 楽しい開発日和 技术博客(https://tech-blog.rakus.co.jp/entry/20180919/nosql/bigdata)
4. @IT 新闻报道(https://www.atmarkit.co.jp/ait/articles/1703/01/news204_2.html)
5. Qiita 知识共享平台(https://qiita.com/t_nakayama0714/items/0ff7644666f0122cfba1)
6. 维基百科(https://ja.wikipedia.org/wiki/NoSQL)
7. YouTube 视频1(https://www.youtube.com/watch?v=ZS_kXvOeQ5Y)
8. YouTube 视频2(https://www.youtube.com/watch?v=WacqhiI-g_o&index=8&list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s)