将大数据从xml文件迁移到数据库

时间:2011-07-28 08:24:33

标签: asp.net transactions informix data-migration data-integrity

问:

两周前我遇到了以下问题,我不知道如何处理性能问题,考虑数据完整性。

我的工作是:

我想将数据从 XML文件迁移到我数据库中类似的

例如:

  • 我有两个节点(XML文件):

    coursesteachers

  • 两个表(数据库)

    coursesteachers

我允许用户将XML文件上传到我服务器上的文件夹,然后我开始读取XML文件并将数据插入到我的数据库中。

问题是:

如果在插入操作期间发生某些故障,我想删除所有表中的所有插入记录。(或回滚)。

我开始考虑transaction,每个实体的插入都将通过交易执行,但我面临两个问题:

  1. 我应该将所有实体的所有插入放在一个事务中还是 每个上传者在一个实体中一个一个实体?(所有实体数据必须全部插入或根本不插入)。

  2. 当我有大量的记录说(1500记录)。以下 异常出现:

    This IfxTransaction has completed; it is no longer usable,无 一个修理它。

  3. 我的团队负责人告诉我不要使用交易,因为它会 锁定表,许多用户使用这些表。他想要其他一些 机制。

  4. 请问我想解决我的问题(详细解释),如何处理这种情况并保持性能问题以及数据的完整性和一致性。

3 个答案:

答案 0 :(得分:2)

这是我们在同一个问题中使用的机制,开始在临时表中保存数据,如果在插入临时表后没有执行,则运行将这些临时表的内容复制到实际的存储过程表,然后从临时表中删除*。 这样,在使用事务机制时,您不会锁定对表的访问。 还有另一种机制,但如果您使用它,则必须重新考虑所有数据库结构,它称为CQRS(对于.NET,有一个名为NCQRS的API)

答案 1 :(得分:1)

答案 2 :(得分:1)

如果我理解正确,你正在进行批量插入。为什么不使用Spring Batch,它具有从上次故障点重启的功能,重试,分块,数据分区等......

我知道你已经标记了asp.net,但是数据加载可以以独立于技术的方式进行,并且可以解耦。不是吗?