0

我正在处理一个遗留的 web 应用程序,每次 UI 发生变化时,它通过使用 castor 编组/解组 xml 文件来对各种数据类型进行 CRUD。数据类型是可配置的,因此通过修改 xml 配置文件,您可以添加具有自定义属性的新自定义数据类型。添加的每个新的自定义数据类型都会产生一个额外的 xml 文件。例如配置文件片段`

<group name="x">
    <my_attribute name="a1">
        <field name="id">
            <display_name>ID</display_name>
            <type>String</type>
            <nullable>false</nullable>
            <default_value/>
            <minimum_boundary/>
            <maximum_boundary/>
            <editable>false</editable>
        </field>
        <field name="name">
            <display_name>Name</display_name>
            <type>String</type>
            <nullable>false</nullable>
        </field>

...ETC。

例如数据文件片段

`

<display-name>a1</display-name>
<values xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" timestamp="1357573081953" xsi:type="java:com.xxx">
    <id>blab1</id>
    <name>blab1name</name>
</values>

`

其中一些数据需要由第二个应用程序读取,因此将 xml 文件的子集放入一个 zip 文件并存储在 oracle db 中的 blob 中。它们随后被第二个应用程序解压缩到文件并读取。现在应用程序已经发展到变得更加复杂,存在对第一个应用程序中数据的并发修改的担忧,并且客户端只想在 oracle db 中管理这些数据(使用可定制的类型)而不使用文件系统。做这个的最好方式是什么?哪些技术是好的候选者?任何帮助深表感谢。

4

1 回答 1

0

第一个想法是使用二进制存储(从 11g 开始)将所有 xml 存储为 oracle xmltype,并且每次只需读取/写入整个 xml 块,利用 oracle 的优化......每个属性名称都将是主要的一部分关键... 这确实需要指定数据大小和 NFR 以确定理想的解决方案,但在此阶段需要考虑所有选项。

于 2013-01-09T20:15:54.137 回答