Firestore 1MB 对象大小限制与预聚合数据

问题描述 投票:0回答:1

我正在尝试拥有一个包含这样的对象数组的预聚合文档:

{
  from: '0xCd5E92655044E6f8834B32A9daE38fetfc5B3C02',
  type: 'SELL',
  priceUsd: 0.998540797001086,
  transaction_value_usd: 96.5692402072666,
  transaction_hash: '0x6b3751baf3b373005bdc212f54718ec5e438db9d3ced2b7e39cc6d65e47a24bc',
  timestamp: Timestamp { _seconds: 1737478695, _nanoseconds: 0 },
  token: '0xc276b91c0e8d13470af7b67009d2683bb7776308',
  ogAddress: '0xC276b91c0e8D10260a42867009d2683bB7776308'
}

此类对象平均重量为 500 字节,因此 1MiB 约为 2000 个此类对象。它的本质是它经常被获取并且是动态的,而且我不希望用户每次获取它都会花费我 2k 次读取。

这里有哪些解决方案?我想要预先聚合的可扩展文档,因为将来它可能会增长到更大的尺寸。

firebase google-cloud-firestore
1个回答
0
投票

在这种情况下,我可以给出的最佳数据建模建议是针对应用程序的用例对数据进行建模。

您的应用程序似乎不太可能在单个屏幕中显示这 2,000 个对象的所有属性,因此您实际上应该加载所有这些数据。

例如,一个常见的用例是您想要显示所有这些对象的一些聚合值。在这种情况下,两个更好的选择是:

  1. 将每个对象存储在单独的文档中,并使用 Firestore 的内置聚合操作来确定聚合。
  2. 或者将实际聚合值存储在数据库中,并在每次编写相关对象时更新该值。虽然这使您的写入操作更加复杂,但它使读取聚合值变得微不足道(因此便宜)。

要确定使用这两者中的哪一个,我建议您还阅读我的文章:我应该如何处理 Firestore 中的聚合值

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.