首页 > 解决方案 > 在 RocksDB 中高效存储大列表结构,以便在页面中检索数据

问题描述

描述:

RocksDB 是一个键值存储,因此我们可以简单地序列化对象列表并存储与键对应的值。如果列表中的数据足够小,这将是可以的。

但是如果列表很大并且不断增加,那么我们需要对数据进行分页。因此,在这种情况下,存储与单个键对应的整个序列化列表数据不是一个好主意;因为每次将新数据插入列表时都会出现性能问题用户需要。

例如:假设我们想将用户下的订单存储在 RocksDB 中。然后我们可以在 RockDB “u:1:li:o” 中以以下方式存储这些订单数据:Serialized([O1{}, O2{},….On{}])。但是,如果用户下达了数千个订单,我们希望以页面的形式检索订单(一次 10 或 20 条记录)。因此,将数千个订单存储在同一个键中并从该键中检索整个数据,然后提供所需的 10-20 条记录并不是一个好主意。此外,用户向同一键添加新订单也会影响上述性能。

所以我正在努力设计架构,以便在 RocksDB 中有效地存储和检索如此大的列表。

如果您可以就架构设计提出建议,那将非常有用。

标签: database-designin-memory-databaserocksdbmemory-optimized-tables

解决方案


推荐阅读