[toc]
NoSQL 是一个综合的数据库类别, 旨在克服 SQL 数据库产生的问题
NewSQL 是想结合两者的优势(事务, 规模, 扩展,,数据类型等)
dimension | sql | nosql | newsql(HTAP) |
---|---|---|---|
Type | rdbms | distibute or no-relation | combined |
struct | 结构化 & 预定义 & 改代价 | 动态结构 & 无预定义 & 改代价小 | 结构化 |
scalability | 垂直扩展 | 垂直 & 水平扩展 | 垂直 & 水平扩展 |
store(amount) | 不适合分层存储 | 适合分层存储(大数据量) | 适合分层存储(大数据量) |
base | 基于表(多行事务 acid) | 键值对 & 面向文档,列,图形 | 基于表(多行事务 acid) |
HA | 一般 | 高 | 高 |
场景 | 事务, 金钱等 | 大数据, 社交,物联网 | |
theory | acid | cap(base) | acid |
生态 | 好 | 好 | 一般 |
example | mysql, pgsql, oracle | mongodb, redis, neo4j, hive | tidb,VoltDB |
复杂查询(聚合) | 一般 | 差 | 好 |
事务 | 友好 | 差 | 支持联机事务 |
索引 | 友好 | 友好 | 友好 |
RDBMS | DBMS |
---|---|
表格式存储 | 文件格式存储 |
多个数据元素可以一起访问 | 数据元素的单独访问 |
表格形式的数据链接在一起 | 数据之间没有联系 |
支持 ACID | 不支持 ACID |
规范化存在 | 规范化不存在 |
支持分布式数据库 | 不支持分布式数据库 |
数据存储量大 | 存储的数据量很小 |
键和索引不允许数据冗余 | 数据冗余很常见 |
支持多用户 | 支持单用户 |
具有多层安全性 | 处理数据时安全性较低 |
对软硬件要求较高 | 软硬件要求低 |
Oracle, mysql | XML, Microsoft Access |
join(hash join):
oltp
数据类型: GIS
json
string/text
sp
rr
cluster: ha(crash-safe)
聚合函数(复杂查询): olap || ETL
性能: 好上一个数量及
单标数据量: pgsql(kw) | mysql(bw)
分区
初衷: postgres 更加偏学术研究,各种各样的功能全,则 mysql 偏应用,功能不追求完善,追求实用、性能
架构: 多线程 | 多进程
生态: pgadmin | tidb
slogan: 最流行 | 最优秀
PG 的优化执行引擎要比 MySQL 更好
PG 的开源协议比 MySQL 更好: BSD || GPL
特色: mysql(engine layer)
sql 标准实现: PG 好(学院派), 超严格
PG 主表采用堆表存放, MySQL 采用索引组织表
异构技术: pg 可以将多种源作为数据源
提交方式: 异步
使用场景: 如果你的场景并发量比较大,直接 MySQL 在生态(TiDB)及人员招聘上,你会省掉很多事情 || 小 olap(一专多能)
数据库类型: rdbms || ordbms
XML 支持: 只 pg 可以
物化视图: 只 pg 可以
批处理
mysql vs mongodb vs redis
关系型数据库的优点
非关系型数据库的优点: 内存性数据库以及文档型数据库