是的,所以我即将开始使用 Node.js 为我的网站写博客(就像任何学习过程一样),我一直在激烈地与自己争论使用 MySQL 或 MongoDB 中的哪一个。
到处搜索已经产生了一些“如何在 Mongo 中写博客”指南,但它们似乎并没有涵盖我遇到的问题。这是我的困境:
如果我要使用MySQL,我会想象我的架构是这样的:
帖子:
ID, USER, DATE, TITLE, TAGS
评论:
POST_ID, USER, DATE, MESSAGE
用户:
ID, SCREEN_NAME, IMAGE_URL
因此,每个帖子都有关联的评论,并且帖子和评论都有关联的用户。优点是如果用户希望更改他们的屏幕名称或图像,只需更新用户表中的一行。但是,我不确定如何获取所有包含 X 标签的帖子,除非我有多个字段用于多个潜在标签?
或者,使用类似MongoDB的东西,我正在研究这样的格式:
帖子集合:
{
{
_ID: something
USER: {id: id, name: "screen name", image: "image_url"}
DATE: ...
TITLE: ...
TAGS: [tag1, tag2...]
COMMENTS:
[
{USER:someone, DATE:something, MESSAGE:"hi"},
{USER:someone, DATE:something, MESSAGE:"another message"}
]
},
{
_ID: something,
USER: {id: id, name: "screen name", image: "image_url"},
DATE: ...
TITLE: ...
TAGS: [tag1, tag2...]
COMMENTS:
[
...
]
},
}
因此,评论嵌入在每个帖子中,这看起来很自然。
在这里,一个查询可以检索到所有匹配的帖子,这很棒。另一方面,如果我需要更新用户使用的屏幕名称或图像怎么办?挖掘给定文档中的嵌入对象似乎很困难,更不用说更新每个帖子中的所有相关记录了。
我可以将评论移到一个单独的集合中以使它们更易于访问,但我仍然面临着对诸如屏幕名称之类的内容进行大量更新。
所以...
从本质上讲,我更喜欢使用 MongoDB,因为它可以做的事情,它可以很容易地做,并且全面使用一种语言是很好的。但是,我不禁觉得我需要采用关系方法才能“正确”完成工作。
有没有人有过用任何一种或两种语言做类似事情的经验?
您对此有何看法,特别是您如何处理用户与评论/帖子之间的关系?
在此先感谢您的帮助:) 詹姆斯