码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-10-24 19:28:01      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:适应   使用   mon   方式   没有   合并   系统   设置   技术   

mysq,oracle的索引组织表是按主键顺序存储数据的(页内)。

如果数据插入顺序和主键不一致,页间无法保证物理上的顺序存储。移动数据块的代价很大。可以通过工具重新顺序化存储结构。

mysql新增数据块时,会留一定的空间给未来新增的数据用,另外当数据块的充满程度达到一定比例时,不会再允许新增数据

因为需要留出一定的空间给更新数据使用(主要是适应varchar字段变化)。页内会顺序存储。所以mysql的数据块大小,空闲比例设置直接影响页碎片化程度。

hbase和mongodb使用了sstable,LSM tree相关技术,定期的整理合并数据块,所以数据块都是按主键顺序存储的。不会有碎片。合并期间对系统影响也很小。

hbase存储时数据是压紧甚至压缩,占用资源很少,节省了大量io,内存。而mysql和oracle的存储方案会有很多行空隙。

hbase在插入和顺序扫描效率更有优势。

另外hbase的列式存储方式效率应该比mongodb的文档方式高。不过由于mongodb,hbase对稀疏数据都是压紧存储的。所以没有想象那么大。

而mongodb由于支持二级索引,这点和关系库类似。适用的场景也更多。

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

标签:适应   使用   mon   方式   没有   合并   系统   设置   技术   

原文地址:http://www.cnblogs.com/reachlins/p/7724999.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!