2017-02-21 66 views
0

我正在使用Azure Table Storage,我想對多個表進行原子寫入。這意味着我想要一個將實體寫入兩個表的事務,如果一次寫入失敗,事務就會回滾。原子寫入多個表

我一直在查看文檔,發現有事務,但它們似乎只用於單表寫操作。

表服務支持批量交易上都在同一個表,並屬於同一個分區組

Source

實體有沒有辦法實現這個多表寫?假設partitionKey是一樣的?

回答

0

有沒有辦法實現這個多表寫?假設 這個partitionKey是一樣的?

開箱即用,此類功能不可用。實體批處理事務僅適用於單個表。您不能將其用於多個表格。

我們在我們的應用程序中所做的是實施我們自己的「Eventual Consistency」模式。在我們的應用程序中,我們有一些需要寫入多個表的數據。我們在那裏做的不是將數據直接寫入多個表中,而是將其作爲消息寫入隊列中。

然後我們有一個後臺進程不斷地輪詢這個隊列並拾取消息。然後這個後臺進程嘗試寫入不同的表。如果我們能夠寫入所有表格,則只會將消息從隊列中刪除。

寫入表格時,我們考慮了idempotency,即我們假設數據可能出現在表格中。因此我們總是做InsertOrReplace(或InsertOrMerge)而不是Insert