《NoSQL精粹》了解NoSQL这一篇就够了

本文是《NoSQL精粹》的读书笔记,深入解析NoSQL数据库的动机、数据模型、分布式模型和一致性。重点介绍了键值、文档、列族和图数据库的特点与适用场景,以及如何在实践中应用NoSQL。
摘要由CSDN通过智能技术生成

前言

本博客写于阅读完《NoSQL精粹》这本书之后,作为一篇读书笔记,想要了解NoSQL的朋友可以从这个博客里面整理一些知识,也希望熟练NoSQL的朋友读完也有收获

首先对NoSQL进行一个简单的介绍,最初的NoSQL表示的是“开源分布式的非关系型数据库”,但是NoSQL具体含义是什么并没有一个权威的定义,实际上大部分人的定义是“not only sql”,而并非是对sql说不,不用去纠结为什么不是NOSQL而是NoSQL,我们只需要理解NoSQL表示的是一般具有开源特征,不适用SQL,为了在集群中使用(不全是),一般不需要使用模式(不用事先修改结构定义即可自由添加字段)

在这里插入图片描述

1. 为什么使用NoSQL

大多数NoSQL研发动机都是要在集群环境中运行,也有例外(图数据库);需要在集群上(单个机器存储大数据不现实)运行大量数据,但是关系型数据库不能在集群中高效运行,这导致“混合持久化”的出现,也就是针对不同场景使用不同的数据存储方式。

选用NoSQL的主要原因:

  1. 待处理的数据量很大,对数据访问的效率要求很高,从而必须把数据放在集群上
  2. 采用一种更为方便的数据交互方式来提高应用程序开发效率

各种NoSQL数据库的共同特征:

  1. 不使用关系模型
  2. 在集群中运行良好
  3. 开源
  4. 无模式

NoSQL生态系统中广泛使用的模型:键值,文档,列族,图

2. 聚合数据模型

聚合

数据模型指数据库组织数据的方式,正式名称为“元模型”

聚合的概念可以通过下面的例子进行理解,客户和订单就是两个聚合。当然,这个数据库的设计还可以设计成一个聚合的形式,聚合的设计依赖于你想怎么操纵数据库在这里插入图片描述

在这里插入图片描述

一般来说,面向聚合的数据库不支持跨越多个聚合的ACID事务(原子性,一致性,隔离性,持久性),它每次只能在一个聚合结构上执行原子性操作

聚合数据库在集群上管理数据存储更方便

键值数据模型和文档数据模型

这两种数据模型主要都通过聚合来创建,每个聚合中都有一个获取数据所用的键或ID。

键值数据库聚合不透明,不需要知道其中内部实现细节就可以为外部程序使用;文档数据库聚合可以看到其中结构。因此键值数据库可以在聚合中存储任意数据,文档数据库定义了其允许的结构和数据类型,,需要限制存放,但是访问数据更加灵活。

键值数据库依赖于键来搜索聚合内容;文档数据库提交的查询关键词往往基于文档的内部结构

列族存储

将这种存储方式视为两级聚合结构比较好理解,第一个键代表行标识符,可以用来获得想要的集合,每个行聚合本身又是一个映射;第二个键就是列,
在这里插入图片描述

用更直观的hbase存储来看就是下面这样:

在这里插入图片描述

所以有两种数据组织方式:

面向行:每一行都是一个聚合,聚合内部存有一些包含有用数据块的列族

面向列:每个列族都定义了一种记录类型,其中每行是一条记录

总结

这三种数据库都使用了聚合的概念,而且都拥有可以查找其内容的索引键,聚合也是”更新“操作的最小数据单位。

键值数据模型将聚合视为不透明的整体,只能根据键来查出整个集合;

文档数据模型对数据库透明,可以仅仅查询一部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值