K-V存储
解决关系数据库无法存储数据结构的问题,以Redis为代表
文档数据库
解决关系数据库强schema约束的问题,以MongoDB为代表
文档数据库的no-schema特性,给业务开发带来了几个明显的优势
新增字段简单
历史数据不会出错
可以很容易存储复杂数据
缺点
不支持事务
无法实现关系数据库的join操作
列式数据库
解决关系数据库大数据场景下的I/O问题,以HBase为代表
一般将列式存储应用在离线的大数据分析和统计场景中,因为这种场景主要是针对部分列单列进行操作,且数据写入后就无须再更新删除。
优势
业务同时读取多个列时效率高,因为这些列都是按行存储在一起的,一次磁盘操作就能够把一行数据中的各个列都读取到内存中。
能够一次性完成对一行中的多个列的写操作,保证了针对行数据写操作的原子性和一致性;否则如果采用列存储,可能会出现某次写操作,有的列成功了,有的列失败了,导致数据不一致。
典型的场景就是海量数据进行统计
除了节省I/O,列式存储还具备更高的存储压缩比,能够节省更多的存储空间。
劣势
典型的场景是需要频繁地更新多个列
列式存储高压缩率在更新场景下也会成为劣势,因为更新时需要将存储数据解压后更新,然后再压缩,最后写入磁盘。
全文搜索引擎
解决关系数据库的全文搜索性能问题,以Elasticsearch为代表
全文搜索引擎的技术原理被称为“倒排索引”(Inverted index),也常被称为反向索引,是一种索引方法,其基本原理是建立单词到文档的索引。 之所以被称为“倒排”索引,是和“正排“索引相对的,“正排索引”的基本原理是建立文档到单词的索引。