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数据库操作

mongodb数据库批量插入海量数据时为啥有少部分数据丢失

HBase vs. MongoDB vs. MySQL vs. Oracle vs. Redi 大PK

mongodb,redis,hbase三者的定位和区别

mongodb与mysql区别(超详细)

mysql和mongodb的关系区别是啥