存储布局:确定如何访问磁盘,以及如何直接影响性能,主要分为基于行的存储布局、列存储布局、带有局部性群组的列存储布局、LSM-Tree四种。
分类 | ||||
1 | 行存储 | 行存储(适用OLTP更新:增删频繁)将每条记录的所有字段的数据聚合存储; | 区别: (1)列储存每个字段数据聚集存储,查询时能减少数据读取量。行存储每次必须读取整条记录。 (2)列存储更容易为聚集存储设计更好的压缩/解压算法。 | 如何序列化逻辑数据结构 |
2 | 列存储 | 列存储(适用OLAP查询:数据仓库、数据挖掘)将所有记录中相同字段的数据聚合存储。 | ||
3 | 带有局部性群组的列存储 | 局部性群组:根据需要将原来不存储在一起的数据,以列族为单位存储至单独字表中,减少无用信息读取,改善存取效率。 | ||
4 | LSM-Tree | (Log Structured Merge Trees,日志结构合并树)由Patrick O'Neil在1996年提出。 算法思想主要用于解决日志记录索引的问题(数据量大、写速率高时,索引高效) | 典型例子是Google的Bigtable Google的需求:数据存储可靠性、高速数据检索与读取、存储海量的记录、可以保持记录的多个版本。 | 满足高效、高性能、安全地读写的要求,如何有效地利用内存和磁盘存储。 |