用键值存储中的索引模拟数据库表的最简单方法是什么?键值存储没有范围查询和有序键。
我想模拟的东西(按优先顺序):
- 创建表
- 添加列
- 创建索引
- 基于主键的查询
- 基于任意列的查询
如果您使用Redis(一种支持字符串、列表、集合等的高级键值存储),那么这很容易。我已经开发了一个C# redis 客户端,它原生支持存储 POCO 的数据模型。OrmLite可以使用这些完全相同的 POCO 将其存储在 RDBMS 中。
顺便说一句,Redis 很快,我有一个基准测试可以在 1.2 秒内存储和检索整个 Northwind 数据库(3202 条记录)(在 3yo iMac 上的 UnitTest 内运行)。
我以两种方式存储实体
urn:user:1
ids:user
lists:user
使用哈希表或字典。如果您想要唯一的键值,您可以使用 GUID 或哈希码。
键值存储应支持对键进行排序和对键的范围访问。
然后你应该创建两个字典:
id -> payload
和
col1, id -> NULL
,其中payload
应包含数据库表将包含的所有数据,第二个字典的键应包含(col1, id)
第一个字典的每个条目的值。