概述
除了 sql,常见的 no sql 有 4 种:
- K-V 键值存储:redis、memcached
- 文档数据库:mongodb、腾讯云开发数据库
- 列式数据库:HBase
- 全文搜索引擎:ELK
K-V 数据库
可以存储高级数据结构,支持对应操作,多用于高性能缓存。
文档数据库
(以 MongoDB 为例)数据存储格式是 json,支持多种高级数据结构。例如 Date、Array、GEO(地理位置)等。Mongo3 支持高级聚合搜索,Mongo4 支持数据库事务。
列式数据库
按照列来存储数据的数据库。相较于行式数据库,具有更高的压缩比(同列数据类型相同),海量数据统计(行式数据库需要读取一行中多余的列)。看场景,用于离线大数据和统计场景。
全文搜索引擎
关键是“倒排索引”。就是建立“关键词 => 数据记录”的映射。
正排索引(id => 记录):
倒排索引:
不同数据库的常用场景
- 管理型系统,如运营类系统,首选关系型。
- 大流量系统,如电商单品页的某个服务,后台选关系型,前台选内存型(缓存)。
- 日志型系统,原始数据选列式,日志搜索选倒排索引。
- 搜索型系统,指站内搜索,非通用搜索,如商品搜索,后台选关系型(db 存储),前台选倒排索引(可以 db 定时刷)。
- 事务型系统,如库存、交易、记账,选关系型+缓存+一致性协议,或新型关系数据库。
- 离线计算,如大量数据分析,首选列式,关系型也可以。
- 实时计算,如实时监控,可以选时序数据库,或列式数据库