好的,我将为我的网站使用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,因为它可以轻松地完成各种操作,并且使用同一语言工作很好。然而,我不禁觉得我需要采用关系型方法才能“正确”地完成任务。
有没有人在任一或两种语言中做过类似的事情?
您对此有何看法,特别是如何处理用户和评论/帖子之间的关系?
感谢您的帮助 :) 詹姆斯