数据库选型需要考虑的几个维度

张彤 2021年11月17日 1,031次浏览

本文出自HBase权威指南,我觉得书中列举的这几种维度,真的是太棒了,从这几方面入手,可以根据场景选择适合自己的数据库。

数据模型

  1. 键值对(key-value) redis
  2. 半结构化的列式存储 hbase
  3. 文档存储 ELK

用户的应用程序如何存/取数据,数据模式是否随时间而变化。

存储模型

  1. 内存
  2. 持久化(硬盘)
  3. 半持久化

相应的访问模式??

一致性模型

  1. 严格一致性
  2. 顺序一致性
  3. 因果一致性
  4. 最终一致性
  5. 弱一致性

物理模型

  1. 单机模式
  2. 分布式

读/写性能

需要了解自己的程序读/写情况:

  1. 读多写少,通常情况
  2. 读写相当
  3. 读少写多

辅助索引

辅助索引可以使用户使用不同的字段和排序访问表。

故障处理

  1. 机器崩溃是必须考虑的问题。
  2. 数据空洞如何应对

压缩

内容差异小,冗余信息多的,需要压缩算法支持

均衡负载

高吞吐场景,经典的案例就是redis的轮询

原子操作的读-修改-写

  1. 避免多线程造成的竞争
  2. compare and swap | set and check (CAS)

加锁/等待和死锁

多个客户端争夺一个资源会触发锁机制

  1. 悲观锁/乐观锁
  2. 死锁
  3. 锁的优先级