我正在建立一个视频数据库
你知道的视频有很多标签。每个标签也与许多视频有关。
正常的解决方案是在每个标签和视频之间创建一个中间表记录关系 刚才,令我惊讶的是,我了解到mysql可以查询xml!所以我想我可以将视频的所有标签保存到视频表中的一列。
但我想知道这种方式是否更有效率。
答案 0 :(得分:2)
XML非常适合存储非结构化和结构化数据。 MySQL非常适合存储结构化数据。这些数据是非结构化的吗?听起来像是一个简单的多对多关系。 XML也可以成为性能杀手,请参阅此Performance of MySql Xml functions?
这是一项设计决定,并没有严格的规则。我建议您测试两种方法并做出明智的选择。但是我发现MySQL在加入多对多关系方面比在解析XML方面表现得更好。
上次我检查过你也无法索引XML。哦,然后有一件事你要记住。膨胀...... XML文档可以膨胀数据库。例如,在关系设计中,您将存储标记Kung Fu
一次,然后将该标记与正确的电影相关联。在XML方法中,您可能会存储<tag>Kung Fu</tag>
数千次。
在您的设计中,您想要将所有xml添加到一列吗?这将是一个巨大的XML文档,并且在某些方面严重破坏性能我愿意打赌。我在回家的时候想了一下,如果你把所有标签都塞进一个XML列中,那么一个严重的后果就是更新和读取的争用也将是巨大的。如果每个电影都存储了带有标签的XML列,您将获得更好的性能。包含所有XML的一列将像一个持有公主的地牢守护者一样锁定。
就像我说每个人都有其缺点和优点。测试它们并学习新技能。