MySql Xml功能的表现?

The*_*can 8 xml mysql database

我对新的Mysql XMl函数非常兴奋.

现在我终于可以在我的oldschool关系数据库中嵌入类似"面向对象"的文档.

例如,用例考虑使用facebook connect在您的网站上唱歌的用户.您可以使用图形api为用户获取对象,并获取更好的信息.然而,这些信息可能差异很大.某些字段可能已设置也可能未设置,某些字段可能会随时间添加等等.

好吧,如果你只是在非常特殊的领域(例如朋友关系,性别,电影......),你可以将它们投射到你的关系数据库方案中.

但是,使用XMl函数,您可以将整个对象存储在字段中,然后您的不同模型可以使用ExtractValue函数访问数据.您可以立即存储所有内容,而无需担心以后需要什么.

但性能会是什么?

例如,我有一个表有50,000个条目的表,代表用户.我有一个枚举字段,表明"male", "female"(或其他各种性别在政治上是正确的).

例如,获取所有男性的表现将非常快.

  • 但是类似的东西怎么样WHERE ExtractValue(userdata, '/gender/') = 'male'

  • 如果物体变大,性能会如何变化?

  • 我能不能以某种方式将指数放在指定的xpath选择上?

  • 字段类型如何与此功能/性能一起使用.VARCHAR/BLOB?

  • 我需要全文索引吗?

总结一下我的问题:

Mysql XML functins看起来很棒.如果您只想存储在应用程序中进一步获取和分析的结构化数据,我相信它们真的很棒.

但他们将如何在对其进行内部扫描/排序/比较/计算的程序中展开战斗?

Mysql可以取代像CouchDB/Sesame这样的面向文档的数据库吗?

XML函数的收益和权衡是什么?

它们如何以及为什么它们比将各种数据存储为属性的动态应用程序更好/更差?

例如,键/值表,其中xpath为键,值为值,连接到文档实体.

有人做过任何其他经历或者注意到了一些值得一提的东西吗?

Ken*_*wns 1

我倾向于做出与佩卡类似的评论,但我认为我们不能一笑置之的原因是你的陈述“然而,这些信息可能有很大差异。” 这意味着计划解析所有内容并将其投影到数据库中是不现实的。

我无法回答你所有的问题,但我可以回答其中的一些问题。

最值得注意的是,我无法告诉您 MySQL 的性能。我在 SQL Server 中看到过它,并对其进行了测试,发现 SQL Server在内存中执行 XML 提取的速度非常慢,对我来说,它似乎是从磁盘读取的,但这有点夸张。其他人可能会对此提出异议,但这就是我的发现。

“Mysql 能否取代 CouchDB/Sesame 等面向文档的数据库?” 这个问题有点过于宽泛,但在您的情况下,使用 MySQL 可以让您保持这些 XML 块的 ACID 合规性,假设您使用的是 InnoDB,这对于某些面向文档的数据库来说不能自动说明。

“它们如何以及为什么比将各种数据存储为属性的动态应用程序更好/更差?” 我认为这确实是一个风格问题。您将获得(大概)已记录的 XML 块,并且 MySQL 可以导航它们。如果你只是保持它们原样,你就可以节省一个步骤。将它们转换成其他东西会得到什么?

MySQL 文档建议 XML 文件将进入 clob 字段。对于较大的文档,性能可能会受到影响。也许您会确定要定期分解并放入子表中的子文档。

沿着同样的思路,如果您知道您想要了解特定的子文档,您可以创建一个子表“HasDocs”,进行一些预处理,并用子文档的名称及其对应的名称填充它很重要。这将有助于更快的统计分析,也可以更快地查找具有某些子文档的文档。

希望我能说更多,希望这会有所帮助。