数据模型与存储技术解析
1. 键值存储
键值存储与关系模型不同,它没有关于数据表示的正式定义。通常,键值存储会接受特定大小限制内的任何二进制值作为键,并能存储任何二进制数据作为值,可说是数据类型无关的。不过,大多数键值存储会为特定类型的数据提供额外支持,主要源于以下需求:
- 二级索引 :在纯键值存储中,定位对象的唯一方式是通过其键。但多数应用会根据非键项进行查找,例如查找特定地理区域内的所有用户、特定公司的所有订单等。
- 冲突解决 :提供最终一致性或类似亚马逊 Dynamo 风格可调一致性的键值存储,可能会实现特殊数据类型以促进冲突解决。
以基于亚马逊 Dynamo 规范的键值存储 Riak 为例,它除了支持二进制对象外,还允许将数据定义为以下类型:
- Riak 收敛复制数据类型(CRDT) :包括映射、集合和计数器等。Riak 可自动解决这些数据类型上的冲突操作,无需应用程序或人工干预。
- 文档类型 :如 XML、JSON 或文本。
- 自定义数据类型 。
Riak 集成了开源文本搜索引擎 Solr。当 Riak 值被定义为内置数据类型或提供了自定义搜索代码的自定义数据类型时,Solr 会对该值进行索引,并提供多种查找功能,包括精确匹配、正则表达式和范围搜索。对于 JSON、XML 和 Riak 映射,搜索可限制在文档内的特定字段。
1.1 收敛复制数据类型(CRDT)
Riak 使用向量时
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



