mysql,hbase,mongodb针对数据顺序存储的实现
Posted lin_sen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql,hbase,mongodb针对数据顺序存储的实现相关的知识,希望对你有一定的参考价值。
mysq,oracle的索引组织表是按主键顺序存储数据的(页内)。
如果数据插入顺序和主键不一致,页间无法保证物理上的顺序存储。移动数据块的代价很大。可以通过工具重新顺序化存储结构。
mysql新增数据块时,会留一定的空间给未来新增的数据用,另外当数据块的充满程度达到一定比例时,不会再允许新增数据
因为需要留出一定的空间给更新数据使用(主要是适应varchar字段变化)。页内会顺序存储。所以mysql的数据块大小,空闲比例设置直接影响页碎片化程度。
hbase和mongodb使用了sstable,LSM tree相关技术,定期的整理合并数据块,所以数据块都是按主键顺序存储的。不会有碎片。合并期间对系统影响也很小。
hbase存储时数据是压紧甚至压缩,占用资源很少,节省了大量io,内存。而mysql和oracle的存储方案会有很多行空隙。
hbase在插入和顺序扫描效率更有优势。
另外hbase的列式存储方式效率应该比mongodb的文档方式高。不过由于mongodb,hbase对稀疏数据都是压紧存储的。所以没有想象那么大。
而mongodb由于支持二级索引,这点和关系库类似。适用的场景也更多。
以上是关于mysql,hbase,mongodb针对数据顺序存储的实现的主要内容,如果未能解决你的问题,请参考以下文章
linux中mysql,mongodb,redis,hbase数据库操作