1

我正在开发一个 Node.js 服务器,它将每 60 秒将孩子添加到 100 个不同的父母。

父母是100个不同的市场:

父母

并且孩子是其中包含一些数据的时间戳: 孩子们

      ...millions of more timestamps

数据库中的时间戳将超过数百万。我正在考虑Array on Ancestors在每个父级(只有 100 个)中存储一组子级(时间戳),所以我认为这些数组将包含数百万个对象。那安全吗?

我正在使用 mLab 并按照MongoDB Docs上的教程使用以下方法创建数据库:

db.collection('database').insert({ _id: "data", ancestors: [], parent: null })
db.collection('database').insert({ _id: "ADABTC", ancestors: ["data"], parent: "data" })
db.collection('database').insert({ _id: "entry", ancestors: ["ADABTC", "data"], parent: "ADABTC" })

但我最终得到了一些我无法理解的东西。我对 Firebase 非常熟悉,但由于存储大量数据时的成本,我在尝试从 Firebase 切换到 MongoDB 时感到困惑。 实验室

我可以在 Node.js 中使用哪些方法来实现这种数据结构?

4

1 回答 1

0

正如评论所说,这里没有一个正确的答案。您将如何向 mongo 数据存储添加记录和检索数据将影响决策。我不能在评论中给出这个建议,因为我想展示一个格式化的例子。所以发布作为答案,即使我并不是说它是一个正确的答案。

您可能需要考虑将其设置为平面,如下所示。然后速度就变成了索引的问题。它们易于创建且成本低廉。下面可能需要一个关于名称的索引和一个关于名称、时间戳的索引。以下是有关如何执行此操作的详细信息:https ://docs.mongodb.com/manual/reference/method/db.collection.createIndex/

{
  {
    name: "ADABTC",
    timestamp: 1521421385793,
    close: 0.00001962,
    high: 0.00001962,
    etc...
  },
  {
    name: "ADABTC",
    timestamp: 1521421385793,
    close: 0.00001962,
    high: 0.00001962,
    etc...
  },
  {
    name: "AIONBTC",
    timestamps: 1521421385793,
    close: 0.00001962,
    high: 0.00001962,
    etc...
  },
  etc...
}

如果这变得太大(Mongo 可以轻松处理数百万条记录),那么您可能希望将每个市场拆分为自己的集合。尽管根据您的查询/报告标准,这可能不太理想。

于 2018-04-17T04:06:21.190 回答