我正在尝试拥有一个包含这样的对象数组的预聚合文档:
{
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 次读取。
这里有哪些解决方案?我想要预先聚合的可扩展文档,因为将来它可能会增长到更大的尺寸。
在这种情况下,我可以给出的最佳数据建模建议是针对应用程序的用例对数据进行建模。
您的应用程序似乎不太可能在单个屏幕中显示这 2,000 个对象的所有属性,因此您实际上应该加载所有这些数据。
例如,一个常见的用例是您想要显示所有这些对象的一些聚合值。在这种情况下,两个更好的选择是:
要确定使用这两者中的哪一个,我建议您还阅读我的文章:我应该如何处理 Firestore 中的聚合值。