任何一个rados 对象下面都包括2个部分:
- data
保存对象的数据 - xattr
保存对象的扩展属性,它是一个个key/value键值对,并将其保存在leveDB中。
omap
想象以下,当我一个rados对象有很多的属性时,:
object1: attr1, value
attr2, value
object2: attr1, value
attr2, value
那该怎么将这种结构转换为levelDB 中的key-value 键值对呢?一种简单的思路是:
object1_name + attr1, value
object1_name + attr2, value
object2_name + attr1, value
object2_name + attr2, value
这个方法的一个缺点: 当一个对象有多个kv值时,object的name多次作为key存储,由于object的name一般较长,这种存储方式浪费空间比较大。于是就提出了一种压缩的存储方法,也就是目前omap的存储方式。
网友评论