在键值存储中使用索引模拟数据库表的最简单方法是什么?

Zub*_*air 7 database key-value redis riak

在键值存储中使用索引模拟数据库表的最简单方法是什么?键值存储没有范围查询,也没有有序键.

我想要模拟的事物(按优先顺序排列):

  1. 创建表格
  2. 添加列
  3. 创建索引
  4. 基于主键查询
  5. 基于任意列的查询

myt*_*thz 4

如果您使用Redis(一种高级键值存储,支持字符串、列表、集合等),那么这非常简单。我已经开发了一个C# redis 客户端,它原生支持存储 POCO 的数据模型。OrmLite可以使用这些完全相同的 POCO将其存储在 RDBMS 中。

顺便说一句,Redis 速度很快,我有一个基准测试,可以在 1.2 秒内存储和检索整个 Northwind 数据库(3202 条记录)(在 3yo iMac 上的 UnitTest 中运行)

我以两种方式存储实体

  • 不同的实体,我将类类型名称和主键组合起来创建一个唯一的键,例如urn:user:1
    • 然后,我维护一组单独的主键(在 Redis 集中)来跟踪我的所有实体,使用如下键:ids:user
  • 在 Redis 服务器端列表中 - 其行为非常类似于支持分页的表,使用如下键:lists:user