【问题标题】:best approach to exchanging data dumps between organizations在组织之间交换数据转储的最佳方法
【发布时间】:2018-05-03 19:59:33
【问题描述】:

我正在开展一个项目,我将每月收到一次学生数据转储。数据将被导入我的系统。初始导入将是大约 7k 条记录。在那之后,我预计每月不会超过几百。但是,现有记录也会随着学生成绩的变化等而更新。

我正在尝试确定跟踪已收到、导入和随时间更新的内容的最佳方式。

我正在考虑使用一个脚本来设置一个托管 MySQL 数据库,该脚本将 SFTP 转储导入一个包含 creation_date 和 modify_date 字段的表中。我的想法是,执行提取的人可以连接到 MySQL 数据库并每个月对导入的表运行查询,以便在下次提取之前获取差异。

我的另一个想法是每个月为每个数据转储创建一个新的接收表。然后我将对差异执行查询。

注意:导入系统是遗留系统,将接受使用实用程序和唯一 csv 类型文件的导入。所以这可能排除了像 XML 这样的选项。

提前感谢您的任何建议。

【问题讨论】:

    标签: mysql sql-server database database-administration data-exchange


    【解决方案1】:

    我假设您会随着时间的推移跟踪学生在一门课程中的成绩。

    我会推荐一个两表的方法:

    表 1:事务级别数据。仅添加。只是简单地附加了新信息。 Sammy 在本周的测验中得了 75 分,Beth 获得了 5 分的额外学分,等等。每一行都是一次交易。大概它有学生的姓名/身份证,添加的值,可能是最大可能值或某个加权因子,当然还有添加的时间戳。 所有这一切只会不断添加到一个永无止境的(理论上)表格中。

    表2:汇总表,每隔一段时间重建一次。此表对第一个表进行简单聚合,将事务分数处理为全局分数。也许这是一个简单的总和,也许是加权平均,也许你有更复杂的想法。 该表每个学生(每门课程?)有一行。您希望每晚都对其进行重建。如果你很懒惰,你只需 DROP/CREATE/INSERT。如果您担心数据丢失,您只需插入并添加一个时间戳,这样您就可以返回快照。

    【讨论】:

    • 谢谢!这样的事情可能会奏效。他们的两个不同的数据库。一个属于学校系统,另一个属于图书馆系统。随着时间的推移,我需要跟踪的字段是学生的年级、学校、教师、电话等。如果学校系统中的这些字段发生变化,那么它们需要在图书馆系统中更新。
    • 这里的诀窍是要有一个规范的表,而不是简单地删除旧数据。您可以简单地选择每个学生最近的一行。或者创建一个“隐藏”字段,写入时为 FALSE,但在添加新行时更新为 TRUE。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2016-12-15
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多