声明:学习完李运华《从 0 开始学架构》,有一种醍醐灌顶,豁然开朗的感觉。为了能够对其概念有一个深入的理解,并且掌握其总结的方法论。特意对本课程做一个提炼,形成自己的知识体系。毕竟能给别人讲清楚了,才能说明自己真的掌握了。本文的引用仅限自我学习如有侵权,请联系作者删除。

什么是NoSQL?

       NoSQL 作为 SQL 的一个有力补充,NoSQL != No SQL,而是 NoSQL = Not Only SQL。

noSQL概论典型工具及医学应用 简述nosql的四大类型_架构

常见的 NoSQL 方案分为 4 类:

(1)K-V 存储:解决关系数据库无法存储数据结构的问题,以 Redis 为代表。

(2)文档数据库:解决关系数据库强 schema 约束的问题,以 MongoDB 为代表。

(3)列式数据库:解决关系数据库大数据场景下的 I/O 问题,以 HBase 为代表。

(4)全文搜索引擎:解决关系数据库的全文搜索性能问题,以 Elasticsearch 为代表。

关系型数据库有什么优缺点?

优点:易于维护。具有强大的SQL功能,同时支持ACID 属性

缺点:

(1)关系数据库存储的是行记录,无法存储数据结构。

(2)关系数据库的 schema(数据库对象集合) 扩展很不方便。

(3)关系数据库在大数据场景下 I/O 较高。

(4)关系数据库的全文搜索功能比较弱。

NoSQL数据库分别有什么优缺点?

1、K-V 存储:

优点:Redis 的 Value 是具体的数据结构,包括 string、hash、list、set、sorted set、bitmap 和 hyperloglog,所以常常被称为数据结构服务器。

缺点:Redis 的缺点主要体现在并不支持完整的 ACID 事务,Redis 虽然提供事务功能,但 Redis 的事务和关系数据库的事务不可同日而语,Redis 的事务只能保证隔离性和一致性(I 和 C),无法保证原子性和持久性(A 和 D)

2、文档数据库:

优点:

(1) 新增字段简单

(2)历史数据不会出错

(3)可以很容易存储复杂数据

缺点:文档数据库的缺点就是无法实现关系数据库的 join 操作。

3、列式数据库:

与关系型数据相比,它是列式存储的,它的优势和劣势是分业务场景的。典型的场景是需要频繁地更新多个列时它是劣势,更新多个行时,它是优势。

4、全文搜索引擎:

全文搜索引擎的技术原理被称为“倒排索引”,示例如下:

优点:关键词搜索查询快

缺点:业务场景比较窄

noSQL概论典型工具及医学应用 简述nosql的四大类型_noSQL概论典型工具及医学应用_02

关系型和NoSQL数据库如何选型?

     考虑几个指标,数据量、并发量、实时性、一致性要求、读写分布和类型、安全性、运维性等。根据这些指标,软件系统可分成几类:

1.管理型系统,如运营类系统,首选关系型。
2.大流量系统,如电商单品页的某个服务,后台选关系型,前台选内存型。
3.日志型系统,原始数据选列式,日志搜索选倒排索引。
4.搜索型系统,指站内搜索,非通用搜索,如商品搜索,后台选关系型,前台选倒排索引。
5.事务型系统,如库存、交易、记账,选关系型+缓存+一致性协议,或新型关系数据库。
6.离线计算,如大量数据分析,首选列式,关系型也可以。
7.实时计算,如实时监控,可以选时序数据库,或列式数据库。