XML本机数据库与关系数据库 - PHP与XQuery

时间:2011-02-08 18:40:10

标签: php xml database xquery

我正在尝试开发一个网站,其中存储了许多食谱,并为客户检索。我有一些关于XML和基于XML的原生数据库的课程,这些课程介绍了原生XML数据库的概念。此外,如果我没记错的话,我们了解到XQuery是最适合使用XML的编程语言。由于配方的半结构而不是表格性质,我想(如果我错了请纠正我),它最好用XML文件表示,如下所示:

<recipe>
  <ingredients>
    <name='floor' amount='500g'/>
    <name='y' amount='200g'/>
  </ingredients>
  <steps>
    <step id='1'> first prepare .....
  <steps>
</recipe>

我知道关系数据库比其他选项有其优势和荣耀,但是在这种特殊情况下,它会导致对表进行如此多的连接操作。另一方面,对于我们来说,原生XML数据库对于它们的性能和处理大量数据的能力似乎不太有希望。此外,考虑到大量的教程和互联网帮助,PHP编程比XQuery简单得多。 我真的不知道该怎么做,这就是我找你们的原因。

4 个答案:

答案 0 :(得分:2)

如果您希望完全使用XQuery构建完全成熟的Web应用程序,您应该查看Sausalito:http://www.28msec.com 屏幕录像直播:http://www.youtube.com/watch?v=4SZ8n4xe3ws

答案 1 :(得分:1)

使用关系数据库 - 因为如果您获得更大的记录,它会更快,并且创建起来更简单。 (对于你的例子,它是3个表 - 一个有食谱,另一个有食谱,最后一个有步骤。另一种是用所有已知成分创建表并使用关联 - 例如。食谱ID,成分ID和数量)

答案 2 :(得分:1)

一些简单的判断理论,没有任何强烈的要求或东西。 首先,你的数据来源在哪里。

  1. 如果您的数据是通过用户输入屏幕生成的。
  2. 如果您的数据经过单个应用程序(例如)网络验证和处理,则可以使用
  3. 如果您的数据属性和功能几乎已冻结且没有新的维度。
  4. 如果您的数据属于交易性质。
  5. 然后你可以想到关系 - db。

    1. 如果您的数据来自不同的数据源,如平面文件,xml,互联网屏幕抓取等等。
    2. 相对较少的交易金额
    3. 数据属性是流动的,并且可以具有各种切片/尺寸。
    4. 准备使用XQuery或Xmllized语言(如XSLT)等函数语言

      然后Xml数据库就是关键。

答案 3 :(得分:0)

似乎你认为你必须在这里选择一个或另一个。事实并非如此,XQuery并没有真正成为一个完整的Web脚本环境,它取代了SQL而不是PHP。因此,您当然可以使用PHP来执行站点的Web聚焦部分,例如用户登录(也可能位于关系数据库中),然后仅将XQUery用于配方查询层。

某些XML数据库(如MarkLogic)也可以执行等式的所有Web逻辑方面,但它们还没有提供相同的丰富库,所以我当然会推荐PHP或类似的Web层。