我正在玩Go和BadgerDB,它是一个基于嵌入式磁盘的密钥/值存储(不是像Redis那样的内存中的)。一般来说,关于如何使用键/值存储的信息太少了。
我的主要问题基本上是:每个键存储一个实体/对象/项目是否更有意义?如下所示:
user:0 = {"email":"johndoe@example.com","password":"some-hash"}还是把每个领域都单独存储起来?如下所示:
user:0:email = "johndoe@example.com"
user:0:password = "some-hash"有人有这方面的经验吗?一种技术比另一种技术有一些性能优势吗?或者一个人有我还没想过的管理问题?还是还有什么要考虑的呢?
发布于 2020-03-03 03:18:08
真的要看情况了。您已经确定了键->值设计(结构)的主要缺陷之一。
前面的示例更像是一个面向文档的数据库,它是键->值存储之上的额外实现。在文档中使用类似于JSON的内容是一种方法。一些面向文档的DB会为您优化/索引。
后一个例子更像是一种传统的key->value方法。
为了更具体地回答您的问题,将JSON字符串/对象存储为您的值的一个问题是,每次您想要访问该值的一部分时,通常都必须解析(并可能解压)整个过程。关键->价值设计的问题是缺乏结构,几乎所有东西都是平的.您将如何以这种方式表示类/对象,如果您有一个复杂的类/对象的网络,等等?
https://dba.stackexchange.com/questions/244939
复制相似问题