使用大型MySQL数据集中的Laravel,成本高昂地处理生产错误数据

时间:2014-12-18 23:43:59

标签: mysql laravel-4 data-integrity database-theory laravel-seeding

我正在寻找一种 saner way 来纠正大型种子数据库中的错误。我们欢迎解决方案,他们更加理智(随意询问工作的工具,即关系数据库)。我无法截断数据并重新设置所有值。特别是当数据完整性发挥作用时。这需要足够强大以便开发人员出错,而不必为了解决错误而进行整个重新种子。对于我的种子数据集,迁移/ MySQL /关系数据库似乎不够灵活。这就是我缺少知识的地方。

情景:

  • Laravel项目,在迁移类中使用种子(JSON),请参阅:[Laravel: 迁移&播种生产数据] [1]

    [1]: Laravel : Migrations & Seeding for production data

    • MySQL数据库10k JSON对象,表示包含10个值的足球运动员,例如名称,体重,身高,团队,DOB。迭代对象,然后插入带有AI id的DB。

问题: 根据开发人员错误,MySQL'height'列最初是int类型而不是float类型,因此所有高度都被舍入到2米。

通过迁移,我已将类型更改为float,现在所有高度值都需要通过重新设置来更改,因为它们仍然都是2m(而不是,例如1.76)。我们需要考虑时间和成本,不得不将数千个JSON对象重新种植到MySQL中以改变列上的值,同时保持数据完整性,因为来自JSON的对象在MySQL插入时被分配了它们唯一的ID。

澄清:我有来自的无ID的JSON对象。各个足球联赛有几个JSON文件,因此我以模块化方式播种这些文件,即插入新玩家时。如果我需要进入并进行更改,则JSON中的对象与数据库中的对象之间存在无完整性。我已经考虑过使用我创建复合键(?)的值,但它仍然感觉数据太脆弱而且容易出现开发人员错误,并且我需要一种理智的管理方式,我不觉得Laravel迁移/种子提供,特别是因为您只受基于其时间戳值运行迁移的限制(您无法指定回滚之前运行的某个迁移文件) 。对数据库来说,“源控制”也许是一个好主意,如果存在的话。请注意,帖子标记为数据库理论数据完整性,我知道我可以重新播种,但这可能需要几个小时的工作时间。

干杯。

0 个答案:

没有答案