我想部署一个我想到的小型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几天,但我不知道如何完善我的搜索,哪个是最好的数据库使用。 我希望能够设置一些对象模型/模式,并准确选择要更新的部分以及每个结构中哪些字段是唯一的。
有什么建议吗?感谢。
答案 0 :(得分:1)
这不是一个可回答的问题,因此可能会被关闭。 这里没有一个正确的答案,有一些问题要问,例如数据结构,速度要求,以及旧CAP定理问题,你需要什么:
我建议mongo将是一个很好的起点,如果你随便工作,并且预计不必大规模处理上述任何问题。 Couch是另一个类似的选择,但没有相同的社区规模。
我说mongo因为你的数据被非规范化为文档而mongo擅长提供文档。它也说json!
RDBMS数据库要求您对文档进行非规范化并创建关系,这与您将文档粘贴到文档中相关的工作相当多。
您可以使用协议缓冲区序列化数据并将其放在rdbms中,但这不可取。
对于超快的速度,您可以使用redis,它在内存中具有恒定的时间查找。但这更适合(在大多数情况下)短暂的数据,如用户会话 - 而不是长期持久存储。
最后还有像neo4j这样的图形数据库,它们是类似文档的数据库,用于存储带有类型边的节点之间的关系。这很适合社交和推荐问题,但这可能不是你想要解决的问题 - 在这个问题中,它只是说明了什么对你的数据存储最有利。
考虑一些可能性,我认为您可能会发现mongo最适合您的需求,因为您已经拥有json文档结构,并且只需要简单的持久性来处理这些文档。