有大量可用的键值对存储。目前你需要选择一个并坚持下去。我相信一个独立的开放 API,不是由键值存储供应商制作的,将使存储之间的切换变得更加容易。
因此,我正在构建一个数据存储抽象层(如 ODBC,但专注于更简单的键值存储),以便有人构建一次应用程序,并在必要时更改键值存储。这个 API 是不是太简单了?
get(Key)
set(Key, Value)
exists(Key)
delete(Key)
到目前为止,我看到的所有 API 似乎都增加了很多,我想知道需要多少额外的方法?
我收到一些回复说 set(null) 可以用来删除一个项目,如果 get 返回 null 那么这意味着一个项目不存在。这很糟糕,有两个原因。首先,混合返回类型和状态不是很好,其次,不是所有的语言都有 null 的概念。看:
是否所有编程语言都有明确的 NIL、null 或 undefined 概念?
我确实希望能够对数据执行多种类型的操作,但据我了解,一切都可以建立在键值存储之上。它是否正确?我也应该提供这些增值功能吗?例如:像 mapreduce 或索引
在内部,我们已经在 Erlang 和 Ruby 中有一个基本版本,它为我们节省了大量时间,还使我们能够测试不同键值存储的特定用例的性能