【问题标题】:MongoDB BsonDocument size limitMongoDB BsonDocument 大小限制
【发布时间】:2015-05-02 15:56:20
【问题描述】:

我正在为一个宠物项目试验 MongoDB。域模型不一定比 no-sql 更适合关系模型(据我所知),因此它似乎是一个很好的学习对象。

我的模型的 JSON 表示形式如下所示:

{
  "_id": someId,
  "prop1": "foo",
  "prop2": "bar",
  "entries": [
    {
      "name": "asdf",
      "uri": "http://foo.com/bar"
    },
    {
      "name": "asdf",
      "uri": "http://foo.com/bar2",
      "x": 5
    },
    {
      "name": "asdf",
      "uri": "http://foo.com/bar3"
    }
    ... /* there's going to be lots of these */
  ]
}

我知道 BSON 文档大小有 16MB 的硬性限制,理论上我可以为每个文档记录数十万个“条目”对象,这不适合。

我最初的想法是每个“条目”有 1 个文档,存储在不同的集合中,并带有对父文档的引用。例如:

父集合

{
  "_id": "parent1",
  "prop1": "foo",
  "prop2": "bar"
}

儿童收藏

{
  "_id": child1,
  "parentId": "parent1"
  "name": "asdf",
  "uri": "http://foo.com/bar1"
},
{
  "_id": child2,
  "parentId": "parent1"
  "name": "asdf",
  "uri": "http://foo.com/bar2",
  "x": 5
}

麻烦的是,这在风格上似乎非常关系

  1. 我是否在与 mongo 的预期设计作斗争?
  2. 我应该坚持使用关系数据库吗?

【问题讨论】:

  • mongodb 博客上的架构设计系列可能适合您阅读:part 1part 2part 3
  • @chridam 完美,谢谢。

标签: mongodb nosql


【解决方案1】:

感谢@chridam,this schema design guide 解决了我的顾虑。

看起来您在处理 MongoDb 设计时仍然可以结合传统的关系概念。

【讨论】:

  • NoSQL 并不意味着没有关系。实际上,您的解决方案非常完美。不过,您可能想要添加适当的索引。
  • 是的,我的索引实际上是 GUID,我只是懒得在示例中放置真正的 guid :)
  • 这不是我的意思。很确定你需要一个超过“parenthId”的索引才能有效地找到孩子。
猜你喜欢
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多