2013-05-03 85 views
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几天,但我不知道如何完善我的搜索,哪一个是最好的db使用。 我希望能够设置一些对象模型/模式,并选择确切地更新哪个部分以及哪些字段在每个结构中是唯一的。

有什么建议吗?谢谢。

回答

1

这不是一个可回答的问题,所以可能会被关闭。 没有一个正确的答案在这里和那里都是一些如数据结构,速度的要求,和你有什么旧的CAP定理的问题有几个问题需要:

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

我建议蒙戈将是一个伟大的地方开始,如果你随便在外打工,并且不希望具有规模处理任何的问题上面。沙发是另一个类似的选项,但没有相同的社区大小。

我说mongo是因为你的数据非规范化为一个文档,mongo擅长提供文档。它也讲json!

RDBMS数据库将要求您对文档进行非规范化处理并创建关系,这与您将文档粘贴到文档中的位置相当有关。

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

对于炽烈的速度,你可以使用redis,它在内存中有恒定的时间查找。但是这对于像用户会话这样的短暂数据更适合(在大多数情况下) - 不是长期持久性存储。

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

看一些可能性,我想你可能会发现mongo最适合你的需求,因为你已经有了json文档结构,并且只需要简单的持久性文件。

+0

非常感谢。我知道这是一个'通用'问题。那么我现在会坚持使用mongoDB。 – AntouanK 2013-05-03 15:46:50