在 Firestore 中存储超过 3 百万条记录的最佳方式是什么?
What is the best way to store +3 millions records in Firestore?
我想在我的 Firestore 数据库中存储超过 300 万条记录,我想知道什么是最好的实践方法。
事实上,自 2020 年 1 月 1 日起,我想每 15 分钟存储一次 30 个加密货币的价格。
例如:
- 2020 年 1 月 1 日 00h00 的 ETH 价格 = xxx
- 2020 年 1 月 1 日 00h15 的 ETH 价格 = xxx
- 2020 年 1 月 1 日 00h30 的 ETH 价格 = xxx
- ...
- 2022 年 9 月 4 日 14 点的 ETH 价格 = xxx
还有这个,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)
)
);
我想在我的 Firestore 数据库中存储超过 300 万条记录,我想知道什么是最好的实践方法。
事实上,自 2020 年 1 月 1 日起,我想每 15 分钟存储一次 30 个加密货币的价格。
例如:
- 2020 年 1 月 1 日 00h00 的 ETH 价格 = xxx
- 2020 年 1 月 1 日 00h15 的 ETH 价格 = xxx
- 2020 年 1 月 1 日 00h30 的 ETH 价格 = xxx
- ...
- 2022 年 9 月 4 日 14 点的 ETH 价格 = xxx
还有这个,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)
)
);