在SQL数据库中,我们通常将相关信息存储在数据库的不同表中。从RocksDB文档中所读到的来看,似乎没有清晰或“正确”的方法来表示这种结构。那么我想知道如何分类信息?假设我有三种类型的信息,客户、产品和员工。我想在RocksDB中实现这些信息。我应该使用键前缀、不同的列族还是不同的数据库?感谢任何建议。
您可以通过给一些前缀来表示这样的表、列和id来实现此操作。为了简单起见,您可以将其存储在一个列族中,并且肯定在一个数据库中,因为您具有原子操作、快照等功能。如果您不构建更高级别的内容,为什么要在nosql数据库中存储关系数据是个更好的问题。 顺便说一下,请查看linqdb ,这是一个更高级别的数据库示例,您可以在其中存储实体、执行linq-style操作,并且它在底层使用rocksdb。
在键值存储中,数据的组织方式取决于实现。没有“一种好的方法”,它取决于底层键值存储特性(特别是它是否按键排序)。同样的规范化/去规范化技术适用。我认为你在键值存储应用程序设计方面缺少的是key composition的概念。简单地说,这是构建键的实践方式,使其易于查询。如果数据库是有序的,那么它也将允许前缀/范围/扫描查询和下一个/上一个导航。这将导致您以这种方式构建键前缀,使查询变得快速,即不需要完整的表扫描。将研究扩展到其他键值存储,如bsddb或leveldb,都可以在Stack Overflow上找到相关信息。