快速提示:我有19天的時間來解決客戶的問題。通過觸發器進行模式同步的MySQL模式?
背景: 客戶聘請了一位承包商,他吹噓他可以在3個月內獲得一個新的應用程序出門。兩個月和幾天後,我被帶進來,個人被放走;沒有完整的代碼,沒有思想投入到架構中,並且對UI的憎惡。
我有兩個應用程序:一個生產和成熟,另一個需要一些愛。一個有我需要的所有數據,另一個沒有。我正在編寫新的代碼TDD風格,並針對部分受到嚴格限制的SOA基礎結構,該基礎結構涵蓋除數據本身之外的所有問題。如果我有更多的時間,我可以使用liquibase將模式重構爲可憎的碎片(使用你的想象力),但我不... ...所以計劃B如下:
應用程序A(插入|更新|刪除)實體更新AppASchema.FooTable的Foo,它通過後觸發器更新AppBSchema.FooLikeTable,反之亦然。
我知道這是一個瘋狂的想法,但其至少我已經得到了最糟糕的點子,我的擔心是
- 可以創建一個無限循環(APPA觸發更新APPB哪些更新APPA)
- 沒有高負載,但這基本上將操作數翻倍到n * 2,所以如果我達到MySQL服務器容量的一半,它似乎會像更新索引等基本內容那樣,達到或接近滿容量。
- 作爲一個混合的祝福,原始模式設計者製作了所有表InnoDB引擎......這對於性能來說太可怕了,但是這種設置可以確保更高的保持完整性的機會。
我實施觸發器的時間預算是12小時或半年。
傳統模式有一些特殊性,特別是它已被過度/不規範化。例如Property-> Address - > [City,State,Status,Type],它適用於課本,但不適用於真實世界的高負載場景。 – David 2009-10-11 03:08:49
這是一個無賴...與項目的其餘部分祝你好運。 – 2009-10-11 03:15:39
@James我不是Rails的忠實粉絲,但在這種情況下,Rails團隊成員在一週內重新編寫了60%的PHP應用程序,而我自己的另一位開發人員對其bug進行了檢查...至今看起來很嚴密。 – David 2009-10-17 17:47:58