什么是原生数据库(Native XML Database)?
"native XML database" 这个术语首先在 Software AG 为 Tamino 所做的营销宣传中露面。也许由于它的成功,后来这个术语在同类产品的开发商那里成了通用叫法。它是一个营销术语,从来没有正式的技术定义,这是它的一个缺陷。
有一个接近的定义(出自XML:DB mailing list的一个成员)这样定义原生XML数据库(native XML database):
它为 XML 文档(而不是文档中的数据)定义了一个(逻辑)模型,并根据该模型存取文件。这个模型至少应包括元素、属性、PCDATA 和文件顺序。这种模型的例子有XPath数据模型、XML Infoset 以及 DOM 所用的模型和SAX 1.0的事件。
它以 XML 文件作为其基本(逻辑)存储单位,正如关系数据库以表中的行作为基本(逻辑)存储单位。
它对底层的物理存储模型模型没有特殊要求。例如,它可以建在关系型、层次型或面向对象的数据库之上,或者使用专用的存储格式,比如索引或压缩文件。
该定义的第一部分与其他类型数据库的定义相似,都是关于数据库所用的模型的。不过,原生 XML 数据库所能存储的信息比模型中定义的多。例如,它可支持基于XPath 数据模型的查询,但所用的存储格式是纯文本。CDATA 部分和实体用法也可存储在数据库中,但是模型中没有包括。
定义的第二个部分是说原生数据库的基本存储单位是 XML 文件。看起来似乎也可存储 XML 文件片断,但几乎所有的原生 XML 数据库都是以文件方式存储的。
(基本存储单位就是可以容纳一份数据的最低级的上下文 (context),相当于关系数据库中的行。它的存在并不妨碍以更小的数据单位来读取数据,比如文件片断或个别元素,同样也不影响将不同文件中的片断进行组合。从关系数据库的术语来讲,相当于数据虽然以行的形式存放,并不意味着无法读取某个字段的值,或从现有的数据行创建新一行数据。)
该定义的第三部分讲的是底层的数据存储格式并不重要。确实如此,正如关系数据库所使用的物理存储格式与数据库是不是关系型之间毫无关系。