在键值存储中模拟带有索引的数据库表的最简单方法是什么?
在键值存储中模拟带有索引的数据库表的最简单方法是什么?键值存储没有范围查询和有序键。
我想要模拟的事情(按优先级顺序):
- 创建表
- 添加列
- 创建索引
- 基于主键
- 查询 基于任意列查询
What is the easiest way to simulate a database table with an index in a key value store? The key value store has NO ranged queries and NO ordered keys.
The things I want to simulate (in order of priority):
- Create tables
- Add columns
- Create indexes
- Query based on primary key
- Query based on arbitrary columns
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您使用 Redis(一种高级键值存储,支持字符串、列表、集合、等等)那么这很容易。我已经开发了一个 C# redis 客户端,它原生支持存储 POCO 的数据模型。 OrmLite 可以使用这些完全相同的 POCO 将其存储在 RDBMS 中。
顺便说一句,Redis 速度很快,我有一个基准来存储和检索整个 Northwind 数据库(3202 条记录)在 1.2 秒内完成(在 3yo iMac 上的 UnitTest 中运行)。
我以两种方式存储实体:
urn:user:1
ids:user
lists:user
If you use Redis (an advanced key-value store that supports strings, lists, sets, etc.) Then this is quite easy. I have already developed a C# redis client that has native support for storing POCO's data models. These exact same POCO's can be used by OrmLite to store it in a RDBMS.
By the way Redis is fast, I have a benchmark that stores and retrieves the entire Northwind Database (3202 records) in under 1.2 seconds (running inside a UnitTest on a 3yo iMac).
I store entities in two ways
urn:user:1
ids:user
lists:user
使用哈希表或字典。如果您想要唯一的键值,您可以使用 GUID 或哈希码。
Use a hashtable or dictionary. If you want unique key values you could use a GUID or hashcode.
键值存储应支持对键进行排序以及对键的远程访问。
然后,您应该创建两个字典:
和
,其中
payload
应包含数据库表将包含的所有数据,第二个字典的键应包含(col1, id)< 的值/code> 来自第一个字典的每个条目。
The key-value store should support ordering the keys and ranged access to the keys.
Then you should create two dictionaries:
and
, where
payload
should contain all the data the database table would contain, and the keys of the second dictionary should contain the values of(col1, id)
from each entry of the first dictionary.