mysql,hbase,mongodb针对数据顺序存储的实现

mysq,oracle的索引组织表是按主键顺序存储数据的(页内)。
如果数据插入顺序和主键不一致,页间无法保证物理上的顺序存储。移动数据块的代价很大。可以通过工具重新顺序化存储结构。
mysql新增数据块时,会留一定的空间给未来新增的数据用,另外当数据块的充满程度达到一定比例时,不会再允许新增数据
因为需要留出一定的空间给更新数据使用(主要是适应varchar字段变化)。页内会顺序存储。所以mysql的数据块大小,空闲比例设置直接影响页碎片化程度。
hbase和mongodb使用了sstable,LSM tree相关技术,定期的整理合并数据块,所以数据块都是按主键顺序存储的。不会有碎片。合并期间对系统影响也很小。
【mysql,hbase,mongodb针对数据顺序存储的实现】hbase存储时数据是压紧甚至压缩,占用资源很少,节省了大量io,内存。而mysql和oracle的存储方案会有很多行空隙。
hbase在插入和顺序扫描效率更有优势。
另外hbase的列式存储方式效率应该比mongodb的文档方式高。不过由于mongodb,hbase对稀疏数据都是压紧存储的。所以没有想象那么大。
而mongodb由于支持二级索引,这点和关系库类似。适用的场景也更多。
转载于:https://www.cnblogs.com/reachlins/p/7724999.html

    推荐阅读