带有 XPath 的 MySql 与 MySql 与 MongoDB 一致以满足不寻常的结构要求

标签 mysql xml mongodb database-design nosql

如果你的数据库需要包含complex relationships/constraints你愿意:

  • 选项 1:一个简单的 MySql 结构,在一个表中包含一个 XML 字段,您将使用 XPath (ExtractValue()) 对其进行查询。
  • 选项 2:相同的简单 MySql 结构加上一个单独的 MongoDB 设置,其中包含 XML* 的 MongoDB 等效项,

为什么?


假设:

  • 如果需要删除整个实体,使用选项 1 会更容易(只需删除整个元组)。
  • MongoDB 查询会比 XPath 更快。但这需要在 MySql 查询之后完成,除非 ID 是在较早的查询中检索到的。
  • 选项 2 的小更新会更快/更容易,因为使用 MySql 的 XML 函数 UpdateXML()您只能更新 整个 XML。
  • 必须对选项 2 更加小心;插入/更新时,如果 MySql 插入/更新查询失败,我必须确保不插入/更新 MongoDB。
  • 忽略“简单的 MySql 结构”部分(连接等),我可以用 ExtractValue() 做这么多(选项1);我需要检索大量 XML 并在我的 PHP/JS 中完成其余部分。而 MongoDB 可以处理更多。

注意事项:

  • * plus the ID corresponding to the MySql tuple which it belongs.
  • Correct me if I am wrong about any of my assumptions.

编辑:

无论哪种方式,我都将使用 PHP 或 JS 通过 PHP 与数据库进行交互。

最佳答案

您绝对可以将结构存储在 MongoDB 中。通常,BSON 比使用 XML 表示复杂关系更容易/更清晰(您也可以从 shell 中清晰地读取/编辑它)。 MongoDb 中有很多原子操作,使得修改变得快速和容易。

查看就地文档更新的这些操作:

http://www.mongodb.org/display/DOCS/Updating

您还可以提取文档的各个字段/部分:

http://www.mongodb.org/display/DOCS/Advanced+Queries

出于并发目的,如果您有多个应用程序/线程同时进行更改,您还可以使用 findAndModify。

http://www.mongodb.org/display/DOCS/findAndModify+Command

关于带有 XPath 的 MySql 与 MySql 与 MongoDB 一致以满足不寻常的结构要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804402/

相关文章:

mysql - 与插入相反 - 删除重复项

mysql - 查询优化。没有 NOT IN 的查询

windows - 如何在 Windows 上停止 mongodb 服务器?

php - magento禁用模块脚本

c# - 如何检查对象是否已实例化?

javascript - 没有数组的 Mongoose 上的子模式

php - 使用 Doctrine ODM 从 mongodb 文档中的数组中删除项目

mysql - 在 mysql select 上使用 ICONV - 将所有字符转换为标准 ascii

python - 在 django ORM 中获取注释内的列表

java - 如何使用返回 HTTP 301 的架构 URL 验证 XML?