xml - 将数据存储为 XML

标签 xml database

在哪些情况下将数据存储为 XML 比 RDBMS 更可取,为什么?

你能打个比方吗?

最佳答案

总结

如果您没有太多数据并且可以完全控制它(没有依赖第 3 方),那么 XML 是一个不错的选择。否则,RDBMS - 更多原因见下文。

类比

如果 RDBMS 是一个文件柜(按某些索引组织的相同大小的记录的抽屉),那么 XML 是一个背包(不必要组织的随机大小的记录袋,可能会在角落突出)。

XML 的原因

1)灵 active

如果您的模式非常松散或随时间变化,则 XML 更可取,因为一旦其中包含数据,版本控制 RDMS 就很困难。根据我的经验,XML 序列化、XSLT 和 XPath 查询对 XML 模式的变化具有弹性,并且可以继续为新老客户工作。例如,您可以将一些新元素添加到文档中,而读取该文档的旧 EXE 将忽略这些元素。执行“SELECT * FROM 表”的 RDBMS 查询(您刚刚添加的列)将产生未定义的结果。

2)部署

简单 - 只需发送您的 EXE。

3) 可调试性

易于“调试”数据——XML 已经是人类可读的;如果不是,XSLT 可能会使其更具可读性。

4)互操作性

您可以将 XML 交给其他系统而不关心它们使用什么平台/技术。

RDBMS 的原因

1)性能

如果您有大量数据,那么 RDBMS 的索引功能将为您提供最佳性能。如果您基本上只是想查找 ID=123 的记录,那么读取大型 XML(> 1000 条记录)的成本很高,而 RDBMS 可以快速完成。存储过程会让这变得更好。

2)安全

您可以通过权限保护部分 RDBMS - 例如向各种用户授予/拒绝 SELECT 访问权限。

3) 商业工具

有许多 RDBMS 工具可用于 OLAP 和报告等。

关于xml - 将数据存储为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1339747/

相关文章:

database - ElasticSearch如何删除文档(如果字段存在)?

Android Listview 与 sqlite 和 CursorAdapter

sql - 使用 FOR XML EXPLICIT 时删除 xmlns ="" namespace 声明

c++ - QT读取XML文件,结构

java - 我们如何在 Android 中动态更改 android 应用程序图标

python - Flask-SQLAlchemy 声明式和 MySQL 特定数据类型

sql - 我如何在具有 "single-group group function"的 SELECT 子句中使用两个字段

xml - 是否有针对房地产数据的 Web 服务?

java - Spring 3.0 : "The prefix" X "for attribute" Y "associated with an element type" Z "is not bound"

mysql - 获取范围之间的数据以及范围之一为空时的数据