gpt4 book ai didi

relational-database - 临时数据的最佳存储选项

转载 作者:行者123 更新时间:2023-12-04 00:13:43 24 4
gpt4 key购买 nike

在我正在开发的应用程序的上下文中,我需要在有限的时间内存储相当多的数据 - 考虑对象桶方面的场景 - 在某些有限的时间内对象位于某些桶中然后他们转移到其他人和其他人......等等。对象(数百万)和桶(数千到数万)之间基本上存在 n 到 m 的关系

持久存储层很重要,这样在应用程序/服务器出现故障时,我可以重新创建最后的状态。

实现这种临时存储的最佳选择是什么

  • 一个关系型 SGBD——我们目前正在使用 PostgreSQL,它会是一个选项?我主要担心它对这种情况使用react的能力使用场景。可以选择另一个 SGBD 吗?
  • NOSQL 持久性提供程序 - 我主要考虑在 Redis 中使用令人印象深刻的写入/读取速度,但其他数据库,不一定来自键值系列也可能没问题。

谢谢

最佳答案

如果一个对象一次只能属于一个桶那么这应该很适合 Postgres - 你只需要一个带有一组唯一桶标识符的 buckets 表,然后是对象' 表将有一个 currentbucket 列来指示它们当前所属的存储桶。

如果一个对象可以属于无限数量的桶,那么您仍然可以使用 Postgres,但是您需要从对象表中删除 currentbucket 列,取而代之的是一个 bucketobjectjoin 表,其中包含存储桶标识符列和对象标识符列。由于您已经在使用 Postgres,我建议您首先以这种方式实现它。如果您对性能不满意,那么您可以在 Redis 中缓存 bucketobjectjoin 表(作为键控到对象标识符的桶标识符的 Set,和/或作为Set of object identifiers keyed to a bucket identifier) - 你只在 Redis 中存储对象的键(而不是完整的对象),所以内存应该不是问题,你可以有背景任务偶尔会将 Redis 与 Postgres 的 bucketobjectjoin 表同步,以防 Redis 服务器崩溃。

作为一种成熟的 nosql 方法,您可以使用 Cassandra 来存储完整的对象; Cassandra 像 Redis 一样支持 Set,但没有 Redis 的内存限制。

关于relational-database - 临时数据的最佳存储选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com