在SQL数据库中,我们通常将相关信息存储在数据库的不同表中。根据我从RocksDB文档中读到的内容,实际上没有明确或“正确”的方式来表示这种结构。所以我想知道对信息进行分类的做法是什么?
假设我有三种类型的信息,即客户,产品和员工。我想在RocksDB中实现这些。我应该使用密钥的前缀,不同的列系列还是不同的数据库?
感谢您的任何建议。
答案 0 :(得分:1)
你可以通过提出一些前缀来表示这样的表,例如列,这样的id。您可以简单地存储在一个列族中,并且可以在一个数据库中定义,因为您具有原子操作,快照等。更好的问题为什么你想在nosql db中存储关系数据,除非你正在构建更高级别的东西。 顺便说一下,checkout linqdb这是更高级别数据库的一个示例,您可以在其中存储实体,执行linq样式的操作,并使用下面的rocksdb。
答案 1 :(得分:1)
数据在键值存储中的组织方式取决于实现。没有"一个好的方法去"它取决于底层的键值存储功能(特别是按键排序)。
适用相同的归一化/非规范化技术。
我认为关于键值存储应用程序设计缺少的部分是key composition的概念。很快,就是以可以查询的方式构建密钥的做法。如果订购了数据库,那么它也将用于前缀/范围/扫描查询和下一个/上一个导航。这将导致您以查询快速的方式构建密钥前缀即。这并不需要全表扫描。
在Stack Overflow上将您的研究扩展到其他键值存储,如bsddb或leveldb。