分散式資料結構

Fluid Framework 為開發人員提供分散式資料結構 (DDSes),自動確保每個已連線用戶端都能存取相同的狀態。 DDSes 所提供的 API 是設計來熟悉先前使用通用資料結構的程式設計人員。

注意

本文假設您熟悉在 fluidframework.com 上介紹分散式資料結構

分散式資料結構的行為就像本機資料結構。 您的程式碼可以在其中新增資料、移除資料、進行更新等。不過,DDS 不是本機物件。 其他可公開 DDS 相同父容器的用戶端也可以變更 DDS。 因為使用者可以同時變更相同的 DDS,所以您需要考慮要用於將資料模型化的 DDS。

注意

「同時」的意義

如果兩個以上的用戶端在從伺服器處收到對方的變更之前各進行變更,則為「同時」進行變更。

選擇您案例的正確資料結構可以改善您應用程式的效能和程式碼結構。

DDS 會因三個特性而彼此不同:

  • 基本資料結構:例如,索引鍵值組、序列或佇列。
  • 用戶端自主性:「開放式」DDS 可讓任何用戶端輕鬆地變更值,並將新值轉送給所有其他用戶端。 但是,「共識」DDS 只有在共識程序的其他用戶端接受時,才允許進行變更。
  • 合併原則:此原則可決定如何解決來自用戶端的衝突變更。

我們已在下面列舉資料結構,並描述資料結構可能最有用的時候。

索引鍵/值資料

這些 DDS 用於儲存索引鍵值資料。 其為開放式,並使用「最後寫入者獲勝」合併原則。 雖然配對的值可以是複雜物件,但無法直接編輯任何指定配對的值;整個值必須整個取代為包含所需編輯的新值。

  • SharedMap:基本索引鍵值資料結構。

索引鍵值案例

索引鍵值資料結構是許多案例的最常見選擇。

  • 使用者喜好設定資料。
  • 問卷的目前狀態。
  • 檢視的設定。

索引鍵值 DDS 的常見問題和最佳做法

  • 將計數器儲存至 SharedMap 將會有非預期的行為。 請改用 SharedCounter。
  • 將陣列、清單或記錄儲存至索引鍵值項目可能會導致非預期的行為,因為使用者無法共同修改某個項目的部分。 請嘗試將陣列或清單資料儲存至 SharedSequence 或 SharedInk。
  • 將大量資料儲存至一個索引鍵值項目可能會造成效能或合併問題。 每個更新都會更新整個值,而不是合併兩個更新。 請嘗試將資料分割成多個索引鍵。

序列

這些 DDS 用於儲存循序資料。 其為開放式。 當您需要在清單或陣列的指定索引處新增或移除資料時,序列資料結構十分有用。 與索引鍵值資料結構不同,序列具有循序順序,而且可以處理來自多位使用者的同時插入。

  • SharedNumberSequence:數字序列。
  • SharedObjectSequence:純物件序列。

序列案例

  • 清單
  • 時間表

序列 DDS 的常見問題和最佳做法

  • 僅將不可變的資料儲存為序列中的項目。 變更項目值的唯一方法是先從序列中將其移除,然後在舊值所在的位置插入新值。 但因為其他用戶端可以插入和移除,所以沒有可靠的方式可將新值放入所需的位置。

字串

SharedString DDS 用於可共同編輯的非結構化文字資料。 其為開放式。

  • SharedString -- 用於處理共同作業文字的資料結構。

字串案例

  • 文字編輯器

另請參閱

若要深入了解 DDS 和其使用方式,請參閱下列 fluidframework.com 各節: