4

在 SQL 数据库中,我们通常将相关信息存储在数据库的不同表中。从我从 RocksDB 文档中读到的内容来看,确实没有明确或“正确”的方式来表示这种结构。所以我想知道对信息进行分类的做法是什么?

假设我有三种类型的信息,客户、产品和员工。我想在 RocksDB 中实现这些。我应该使用键的前缀、不同的列族还是不同的数据库?

感谢您的任何建议。

4

2 回答 2

2

你可以通过想出一些前缀来做到这一点,这意味着这样的表、这样的列、这样的 id。为简单起见,您可以将存储在一个列族中,并明确存储在一个数据库中,因为您有原子操作、快照等。更好的问题是,除非您正在构建更高级别的东西,否则为什么要将关系数据存储在 nosql db 中。顺便说一句,检查linqdb,它是更高级别的 db 示例,您可以在其中存储实体、执行 linq 样式的操作,它在下面使用 RocksDB。

于 2018-03-06T09:11:14.080 回答
1

数据在键值存储中的组织方式取决于实现。没有“一种好方法”,它取决于底层的键值存储功能(是否特别是键排序)。

相同的规范化/非规范化技术适用。

我认为您在键值存储应用程序设计中缺少的部分是键组合的概念。很快,就是以一种易于查询的方式构建键的做法。如果数据库是有序的,那么它也将用于前缀/范围/扫描查询和下一个/上一个导航。这将引导您以快速查询的方式构建键前缀,即。这不需要全表扫描。

在 Stack Overflow 上将您的研究扩展到其他关键值存储,例如 bsddb 或 leveldb。

于 2018-04-09T19:19:16.833 回答