我们应该将列从 xmltype 更改为 clob 吗?神兽11至19

问题描述 投票:0回答:1

我是一家小型游戏公司的初级 DBA,该公司最近决定将其 Oracle 服务器从版本 11 升级到 19。

从10年前公司成立之日起,就有一个主要的oracle表负责所有注册用户,并且它有一个特殊的xmltype列,多年来突然变得必要的任何标签都被“推入” '进入其中

例如随着时间的推移添加了 D.O.B 标签、邮政编码等,当然还有使用 EXTRACTVALUE 来提取请求的标签,这往往会导致速度缓慢。

如前所述,该公司最近决定升级到 Oracle19,并且已经开始讨论是否值得将列重新建立为 clob,这会将“解析器任务”分配给服务器端而不是数据库,并且还允许插入更大的文本部分,例如协议。

如果我们把迁移过程放在一边,并且假设该列将继续用于对每个用户来说不重要的值(因此我们不为他们创建列),那么重新创建该列是否正确作为一个块?鉴于 Oracle19 提供的新可能性,还有其他想法吗?

oracle11g database-administration oracle19c
1个回答
0
投票

虽然我无法提供客观、不带偏见的答案来描述在 Oracle 中存储半结构化数据的最佳方法,但下面是您应该经历的流程的快速描述,以确定什么最适合您。

  1. 对于 XML 数据,请阅读 XML DB 开发人员指南 中讨论不同存储机制的优缺点的部分。
  2. 考虑使用 JSON 代替。 JSON 开发人员指南 还描述了不同存储机制的不同优缺点。
  3. 如果您可以在 XML 和 JSON 之间进行选择,您可能应该选择 JSON,因为 Oracle 在该数据格式上投入了大量资金。有许多为 JSON 设计的新功能,但不是为 XML 设计的。 (尽管其中许多新功能仅在版本 21 和 23 中可用。)
  4. 尽可能向数据库添加约束。无论您多么信任您的应用程序,您几乎总是应该让数据库解析数据并验证格式。这在迁移期间尤其重要,您可能会对数据执行独特的转换,并发现单个无效的 XML 文件会中断大量数据库查询。存储有效的 XML 不应限制数据的大小 - 您仍然应该能够在数据库中存储大型 XML 文件。 (除非存在其他 LOB 列问题。例如,如果存在奇怪的自定义存储参数,或者您使用的是老式基本 lob 而不是新的 SecureFile lob。如有必要,请在升级时更改 LOB 存储类型。)
© www.soinside.com 2019 - 2024. All rights reserved.