文章目录加载中

常见数据库分类

除了 sql,常见的 no sql 有 4 种:

  • K-V 键值存储:redis、memcached
  • 文档数据库:mongodb、腾讯云开发数据库
  • 列式数据库:HBase
  • 全文搜索引擎:ELK

# K-V 数据库

可以存储高级数据结构,支持对应操作,多用于高性能缓存。

# 文档数据库

(以 MongoDB 为例)数据存储格式是 json,支持多种高级数据结构。例如 Date、Array、GEO(地理位置)等。Mongo3 支持高级聚合搜索,Mongo4 支持数据库事务。

# 列式数据库

按照列来存储数据的数据库。相较于行式数据库,具有更高的压缩比(同列数据类型相同),海量数据统计(行式数据库需要读取一行中多余的列)。看场景,用于离线大数据和统计场景。

# 全文搜索引擎

关键是“倒排索引”。就是建立“关键词 => 数据记录”的映射。

正排索引(id => 记录):

倒排索引:

# 不同数据库的常用场景

  1. 管理型系统,如运营类系统,首选关系型。
  2. 大流量系统,如电商单品页的某个服务,后台选关系型,前台选内存型(缓存)。
  3. 日志型系统,原始数据选列式,日志搜索选倒排索引。
  4. 搜索型系统,指站内搜索,非通用搜索,如商品搜索,后台选关系型(db 存储),前台选倒排索引(可以 db 定时刷)。
  5. 事务型系统,如库存、交易、记账,选关系型+缓存+一致性协议,或新型关系数据库。
  6. 离线计算,如大量数据分析,首选列式,关系型也可以。
  7. 实时计算,如实时监控,可以选时序数据库,或列式数据库
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog