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:
- 多线程多核
- 海量数据性能高
- 不支持持久化
- 难解决缓存雪崩
- 预分配内存池