我正在開發一個需要很多數據庫寫入的Erlang應用程序。除了主鍵之外,我的模式還有一個強制執行唯一約束的屬性。Mnesia中的唯一約束條件
說我有一個ID,一個unique_constraint_field和其他一些字段。由於沒有其他行應具有我要更新的unique_constraint_field值的值,因此我需要現在更新DB中對應於唯一ID的行。由於更新量大(每次更新只會影響1行),我需要執行(也需要低延遲),我依靠主鍵和該屬性的唯一約束來捕獲重複,而不是使用子查詢的更新語句。這允許我在單個查詢中執行更新(這發生在95%的時間內),而在剩餘的5%中,我可以捕獲異常以採取有關主鍵或唯一屬性違規的必要操作。
我目前使用ODBC mysql驅動程序。但是,驅動程序返回任何錯誤的非常通用的錯誤消息。儘管現在我的原型在我認爲任何錯誤都是關鍵違規時都運行良好,但這種模式顯然存在很多缺陷。我找不到任何其他像樣的驅動程序/從erlang連接到mysql的方式。
由於Erlang和Mnesia無縫融合,我正在考慮切換到Mnesia(僅限內存模式以滿足我的速度要求)。但是,我發現Mnesia沒有任何可用於在單個查詢中執行數據庫更新的唯一鍵約束。
我需要關於如何最好地從Erlang內部實現這個需求的建議。有什麼方法可以在Mnesia中執行條件更新?或者,我還有其他高速數據庫選擇嗎?任何幫助/見解非常感謝。
謝謝,這聽起來很有趣,會看看。 – jeffreyveon 2009-07-28 16:36:48