2

问:从XML文件中的大数据迁移到数据库

我面临着以下问题两个星期前,我不知道如何处理它走的是性能问题,考虑到数据的完整性。

我要做的就是:

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

例如:

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

    coursesteachers

  • 两个表(数据库)

    coursesteachers

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

的问题是:

如果插入操作过程中的一些故障发生时,我想删除所有所有表中插入记录(或回滚)。

我开始思考transaction,每个实体的插入会通过交易来进行,但我面对两个问题:

  1. 我应该把所有的实体都插入在一个事务或 一个实体每个上传器都有一个事务?(所有实体数据必须全部插入或根本没有插入)。

  2. 时,我有记录的数量庞大的说(1500记录)。以下 例外出现:

    This IfxTransaction has completed; it is no longer usable,没有 一个修复它。

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

请我想解决我的问题(详细的说明),如何处理这种情况下,保持性能问题和数据的完整性和一致性。

回答

2

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

1

如果我正确地理解了你正在做的批量插入。为什么不使用Spring Batch,它具有从最后一个失败点重试,重试,分块,数据分区等设施...

我知道你已经标记了asp.net,但数据的加载可能发生在一个技术独立的方式和解耦的方式。不是吗?