0

我想部署一个我想到的小型 Web 项目,其中我要保存的数据是内部具有嵌套结构的结构,并且大多数情况下内部结构没有相同的字段和类型。

例如,我想要这样的东西,成为表格中的“行”

{ 
  event : "The Oscars",
  place : "Los Angeles, USA",
  date : "March 2, 2014"
  awards :
  [

    bestMovie : 
    [

      name : "someName",
      director : "someDirector",
      actors :
      [
        ... etc
      ]

    ],

    bestActor : "someActor"

  ]

}

(JSON 对象目前对我来说很容易使用,并在服务器和客户端之间传递它。客户端在 JavaScript 上运行)

我从 MySQL/PHP 开始,但很快我发现它不适合我。我尝试了 mongoDB 几天,但我不知道如何精确地优化我的搜索,哪个是最好的数据库。我希望能够设置一些对象模型/模式,并准确选择要更新的部分以及每个结构中唯一的字段。

有什么建议么?谢谢。

4

1 回答 1

1

这不是一个可以回答的问题,因此可能会被关闭。这里没有一个正确的答案,有几个问题要问,比如数据结构、速度要求,以及关于你需要什么的旧 CAP 定理问题:

  • 一致性
  • 可用性
  • 分区能力

我建议 mongo 将是一个很好的起点,如果你是随便工作的,并且预计不必大规模处理上述任何问题。Couch 是另一个类似的选项,但没有相同的社区规模。

我说 mongo 是因为您的数据被非规范化为文档,而 mongo 擅长提供文档。它也说json!

RDBMS 数据库将要求您对文档进行非规范化并创建关系,相对于将文档粘贴到文档中,这是相当多的工作。

您可以使用协议缓冲区序列化数据并将其放入 rdbms 中,但这是不可取的。

为了获得超快的速度,您可以使用在内存中具有恒定时间查找的 redis。但这更适合(在大多数情况下)用户会话等临时数据 - 而不是长期持久存储。

最后还有像 neo4j 这样的图形数据库,它们是类文档数据库,用于存储具有类型边的节点之间的关系。这非常适合社交和推荐问题,但这可能不是您要解决的问题 - 在这个问题中,它只是说明什么最适合您的数据存储。

看看一些可能性,我认为您可能会发现 mongo 最适合您的需求,因为您已经拥有 json 文档结构并且只需要对这些文档进行简单的持久性。

于 2013-05-03T15:41:03.930 回答