1. 程式人生 > >mysql,hbase,mongodb針對數據順序存儲的實現

mysql,hbase,mongodb針對數據順序存儲的實現

ase 更新數據 需要 針對 二級索引 多行 mon 使用 通過

mysq,oracle的索引組織表是按主鍵順序存儲數據的(頁內)。

如果數據插入順序和主鍵不一致,頁間無法保證物理上的順序存儲。移動數據塊的代價很大。可以通過工具重新順序化存儲結構。

mysql新增數據塊時,會留一定的空間給未來新增的數據用,另外當數據塊的充滿程度達到一定比例時,不會再允許新增數據

因為需要留出一定的空間給更新數據使用(主要是適應varchar字段變化)。頁內會順序存儲。所以mysql的數據塊大小,空閑比例設置直接影響頁碎片化程度。

hbase和mongodb使用了sstable,LSM tree相關技術,定期的整理合並數據塊,所以數據塊都是按主鍵順序存儲的。不會有碎片。合並期間對系統影響也很小。

hbase存儲時數據是壓緊甚至壓縮,占用資源很少,節省了大量io,內存。而mysql和oracle的存儲方案會有很多行空隙。

hbase在插入和順序掃描效率更有優勢。

另外hbase的列式存儲方式效率應該比mongodb的文檔方式高。不過由於mongodb,hbase對稀疏數據都是壓緊存儲的。所以沒有想象那麽大。

而mongodb由於支持二級索引,這點和關系庫類似。適用的場景也更多。

mysql,hbase,mongodb針對數據順序存儲的實現