快速说明:我有 19 天的时间来解决我客户的问题。
背景:客户聘请了一名承包商,他吹嘘自己可以在 3 个月内推出一款新应用程序。两个月又几天后,我被带进来,那个人被放了;没有完整的代码,没有考虑到架构,以及对 UI 的厌恶。
我有两个应用程序:一个是生产和成熟,另一个需要一些爱。一个有我需要的所有数据,另一个没有。我正在编写新的代码 TDD 风格,目标是构建一个部分受陪审团操纵的 SOA 基础架构,该基础架构涵盖除数据本身之外的所有问题。如果我有更多的时间,我可以使用 liquibase 将模式重构为可憎的碎片(发挥你的想象力),但我不......所以计划 B 如下:
App A (inserts|updates|deletes) 实体 Foo 更新 AppASchema.FooTable ,后者通过后触发器更新 AppBSchema.FooLikeTable ,反之亦然。
我知道这是一个疯狂的想法,但这是我所拥有的最糟糕的想法中最少的一个,我担心的是
- 可以创建一个无限循环(AppA 触发器更新 AppB 更新 AppA )
- 没有高负载,但这基本上将操作数加倍到 n*2,所以如果我达到 MySQL 服务器的一半容量,对于更新索引等基本内容,它似乎有效或接近满容量。
- 作为一个喜忧参半,最初的模式设计者让所有的表 InnoDB 引擎......这对性能来说太可怕了,但这种设置能否确保更高的机会保持完整性。
我实施触发器的时间预算是 12 小时或破产。