在 Firestore 中存储超过 3 百万条记录的最佳方式是什么?

What is the best way to store +3 millions records in Firestore?

我想在我的 Firestore 数据库中存储超过 300 万条记录,我想知道什么是最好的实践方法。

事实上,自 2020 年 1 月 1 日起,我想每 15 分钟存储一次 30 个加密货币的价格。

例如:

还有这个,30 个加密货币(或更多)。

所以,每天 120 个价格乘以 829 天乘以 30 个加密货币 ~= 3M 记录

我想这样保存:

[加密集合][加密文档][日期集合][小时文档][价格]

我不知道这样对不对,所以我才来这里:)

当然,这个数据库的目标是检索我选择的货币的所有历史价格。 这将允许我稍后进行统计等。

感谢您的帮助

对于当前的结构,不是每 15 分钟创建一个文档,而是创建一个“价格”文档并存储一个格式数组 { time: "00:00", price: 100 },这将仅花费 1 次读取来获取给定的价格货币一天而不是 96.

或者,您可以创建一个集合“价格”并每天为每种货币创建一个文档。此集合中的文档可能如下所示:

{
  name: "BTC",
  date: "2022/04/09", // or Firestore timestamp
  prices: [
    { time: "00:05", price: 12.345 },
    { time: "00:10", price: 6.345 },
    { time: "00:15", price: 68.586 },
  ]
}

使用这种结构,您也可以查询给定日期范围内特定硬币的汇率。此查询的示例:

const qSnap = await getDocs(
  query(
    collection(db, "prices"),
    where("name", "==", "BTC"),
    where("time", ">=", startDateTimestamp),
    where("time", "<", endDateTimestamp)
  )
);