MySQL、MongoDB、Cassandra、HBase、Redis、MemoryCache
Mongodb cassandra 和 Mysql对比:https://www.cnblogs.com/wangbaojun/p/9724702.html

Cassandra:

Cassandra:读写性能高,但需要平衡数据实时的一致性。CP 注重一致性

  • 基于列的 nosql 数据库
  • 不支持事务
  • 天然支持集群,可以动态增加节点,自动进行数据的迁移
  • 多数据中心的支持
  • 分布式写操作

Cassandra 写数据时,首先会将请求写入 Commit Log 以确保数据不会丢失,然后再写入内存中的 Memtable,超过内存容量后再将内存中的数据刷到磁盘的 SSTable,并定期异步对 SSTable 做数据合并(Compaction)以减少数据读取时的查询时间。
因为写入操作只涉及到顺序写入和内存操作,因此有非常高的写入性能。而进行读操作时,Cassandra 支持像LevelDB 一样的实现机制,数据分层存储,将热点数据放在 Memtable 相对小的 SSTable 中,所以能实现较高的读性能

HBase:

  • AP 注重可用性
  • 部署麻烦,需要 Zookeeper,HDFS

MongoDB:

MongoDB:读性能好,随机写性能一般

  • 非关系型数据库
  • 文档型数据库,采用类 Json 的 documents 来存储数据,由 key value 对组成
  • 采用动态数据模式 shema,不需要预先定义表的数据类型和字段名
  • 虚拟内存+持久化进行存储
  • 热点数据会加载到内存中,提升读性能
  • 集群:高扩展性、延展性、自动分配机制

Redis vs MemoryCache:

Redis:

  • 单线程、非阻塞(只能利用到 CPU 的一个核心)
  • 海量数据性能没有 MC 高
  • 支持的数据类型丰富:String、Hash、List、Set、zSet(sorted set)、Stream
  • 支持持久化:RDB、AOF
  • 内存按需申请

MemoryCahce:

  • 多线程多核
  • 海量数据性能高
  • 不支持持久化
  • 难解决缓存雪崩
  • 预分配内存池

MySQL 引擎:

image.png