共用方式為


分散式數據結構

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 -- 處理共同作業文字的數據結構。

字串案例

  • 文字編輯器

另請參閱

若要深入瞭解 DDSes 及其使用方式,請參閱下列 fluidframework.com 小節: