我之前在MySql中处理过标签系统,用于一个带有Tag
表,TagMap
表和Post
表的简单博客,但在我看来这是一个非常复杂的问题存储标签并将其与帖子相关联的方式。按标签获取帖子的查询同样令人费解。
现在我正在Node.js中做一个项目,我正在寻找一种新的方式来存储我的数据和一个新的数据库系统。我已经研究过CouchDB,但它似乎有problems搜索多个标签,并且视图的概念对我想要完成的事情来说似乎太复杂了。
是否有一个数据库系统,最好是一个为node.js提供库/客户端的数据库系统,这是有效的,这使得整个标记 - 考验看起来很直观?
答案 0 :(得分:2)
在这种情况下,我认为你不会比关系数据库做得更好。
如果您需要标记同义词,请查看here以获取一些想法(但请注意,由于MySQL查询优化器的不足,应将EXISTS重写为另一个JOIN)。没有同义词,这个模型可以进一步简化。
重要的是,使用诸如clustering和covering之类的技术应该为除了绝对大量的数据和并发用户之外的任何东西提供充足的性能。人们似乎犯的一个错误就是在标签映射表中使用代理键,这会破坏集群。
答案 1 :(得分:0)
Redis集可能在这里工作得很好:创建一个由标签或标签ID组成的帖子ID键入的集合,以及由帖子ID组成的标签(或标签ID)键入的集合。然后,您可以使用redis的内置集合交集和联合运算符来快速搜索多个标记。