java - 将大型论坛数据从一个系统迁移到另一个系统

标签 java php mysql sql-server database

我需要将相当大的论坛安装从一个系统(自定义、MS SQLServer)迁移到另一个(vbulletin、MySQL)。目标系统有许多不同的导入脚本,我计划查看这些脚本以从中获得灵感,但我希望我能在这里获得一些关于它的某些方面的建议。

值得注意的是:

  • 原系统使用 Microsoft SQLServer。新系统使用MySQL(模式不相似)
    • PHP 可以与 SQLServer 通信吗?如果没有,也许使用 Java 进行迁移,因为它可以与两者对话? (新系统是用 php 编写的,如果可能的话,我们希望所有代码都使用一种语言)
  • 数据量约为 1300 万个帖子和 65 万个成员(member)
    • 如有必要,我们可以修剪成员(删除那些在过去 X 年内未登录且在 Activity 线程中没有帖子的成员)
    • 如有必要,我们可以修剪线程(删除那些在过去 X 年内没有新帖子的线程)
    • 即使在修剪之后,我们仍然可能拥有大约 750 万个帖子

我认为可能导致问题的事情包括:

  • 我不确定我是否可以在新系统中保留旧系统的 ID(消息或用户)。
  • 我显然不能将所有13m的记录从旧数据库加载到内存中,处理它们,然后写入新数据库
  • 我希望稍后能够运行第二次数据迁移以获取自原始导入以来的任何新数据(这样我们就可以针对主数据库的备份运行长时间运行的导入,然后运行“其他所有”导入是时候关闭旧系统了)

我目前的想法是做这样的事情:

  • 在新数据库用户表中添加一个old_user_id
  • 从旧数据库迁移用户,将他们原来的用户 ID 放入新列
  • 使用用户表中的 old_user_id -> new_user_id 映射,分批从旧数据库加载 X 线程,并将它们插入新数据库
  • 迁移用户时,按创建日期的顺序加载它们并跟踪最近的日期(在另一个数据库表中)。这将允许系统在我们下次运行时从中断的地方继续运行
  • 同样适用于线程
  • 运行迁移时,首先获取所有“在存储日期之前创建,但在该日期之后修改”的内容,并使用修改后的信息更新数据库中的记录。完成后,处理此后创建的东西

对于这样一个开放式问题,我深表歉意。这涉及到很多因素,我还没有具体的问题。我真的只是在寻找过去可能不得不处理类似事情的人的任何想法/建议。关于处理事情的最佳方式、我遗漏的事情或我应该注意的边缘情况的任何想法。

编辑:我不知道如何将它变成一个 wiki。如果有人可以为我转换它或告诉我如何转换,我会很乐意这样做。它显然没有一个正确的答案,所以它可能应该被标记为这样。

最佳答案

PHP 可以与 SQLServer 通信吗? link here

关于java - 将大型论坛数据从一个系统迁移到另一个系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166607/

相关文章:

Java 使用重复代码的简写

php - 在没有表单的情况下获取输入框的值?

php - 使用 foreach 和嵌套数组在带有 PHP 的 MySql 中插入行

javascript - 将 jQuery 生成的值传递给 PHP Mail

mysql - 奇怪的 MySQL 错误 #1242 - 子查询返回超过 1 行

mysql - 从多个 MySQL 表计算总销售额

java - Java在多个阻止程序上进行阻止

java - 无法理解java中接口(interface)的工作

java - 如何在 JavaFX 应用程序上显示具有相对路径的图像?

mysql - 在 select 语句中获取计数时遇到问题