HarmonyOS之数据管理·分布式数据服务的应用
生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之数据管理·分布式数据服务的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、簡介
① 基本概念
- 分布式數據服務(Distributed Data Service,DDS) 為應用程序提供不同設備間數據庫數據分布式的能力。通過調用分布式數據接口,應用程序將數據保存到分布式數據庫中。通過結合帳號、應用和數據庫三元組,分布式數據服務對屬于不同的應用的數據進行隔離,保證不同應用之間的數據不能通過分布式數據服務互相訪問。在通過可信認證的設備間,分布式數據服務支持應用數據相互同步,為用戶提供在多種終端設備上一致的數據訪問體驗。
- KV 數據模型:
-
- “KV數據模型”是“Key-Value數據模型”的簡稱,“Key-Value”即“鍵-值”。它是一種 NoSQL 類型數據庫,其數據以鍵值對的形式進行組織、索引和存儲。
-
- KV 數據模型適合不涉及過多數據關系和業務關系的業務數據存儲,比 SQL 數據庫存儲擁有更好的讀寫性能,同時因在分布式場景中降低了數據庫版本兼容和數據同步過程中沖突解決的復雜度而被廣泛使用。分布式數據庫也是基于 KV 數據模型,對外提供 KV 類型的訪問接口。
- 分布式數據庫事務性:分布式數據庫事務支持本地事務(和傳統數據庫的事務概念一致)和同步事務,同步事務是指在設備之間同步數據時,是以本地事務為單位進行同步,一次本地事務的修改要么都同步成功,要么都同步失敗。
- 分布式數據庫一致性:在分布式場景中一般會涉及多個設備,組網內設備之間看到的數據是否一致稱為分布式數據庫的一致性。分布式數據庫一致性可以分為強一致性、弱一致性和最終一致性。
-
- 強一致性:是指某一設備成功增、刪、改數據后,組網內設備對該數據的讀取操作都將得到更新后的值。
-
- 弱一致性:是指某一設備成功增、刪、改數據后,組網內設備可能能讀取到本次更新數據,也可能讀取不到,不能保證在多長時間后每個設備的數據一定是一致的。
-
- 最終一致性:是指某一設備成功增、刪、改數據后,組網內設備可能讀取不到本次更新數據,但在某個時間窗口之后組網內設備的數據能夠達到一致狀態。
-
- 強一致性對分布式數據的管理要求非常高,在服務器的分布式場景可能會遇到。因為移動終端設備的不常在線、以及無中心的特性,分布式數據服務不支持強一致,只支持最終一致性。
- 分布式數據庫同步
-
- 底層通信組件完成設備發現和認證,會通知上層應用程序(包括分布式數據服務)設備上線。收到設備上線的消息后分布式數據服務可以在兩個設備之間建立加密的數據傳輸通道,利用該通道在兩個設備之間進行數據同步。
-
- 分布式數據服務提供了兩種同步模式:手動同步和自動同步模式。手動同步模式完全由應用程序調用接口來觸發,并且支持指定同步的設備列表和同步模式(PULL、 PUSH 和 PULL_PUSH 三種同步模式)。自動同步模式由分布式數據庫來完成數據同步(同步時機包括設備上線、應用程序修改數據等),業務不感知同步操作。
- 單版本分布式數據庫:單版本是指數據在本地保存是以單個 KV 條目為單位的方式保存,對每個 Key 最多只保存一個條目項,當數據在本地被用戶修改時,不管它是否已經被同步出去,均直接在這個條目上進行修改。同步也以此為基礎,按照它在本地被寫入或更改的順序將當前最新一次修改逐條同步至遠端設備。
- 設備協同分布式數據庫:設備協同分布式數據庫建立在單版本分布式數據庫之上,對應用程序存入的 KV 數據中的 Key 前面拼接了本設備的 DeviceID 標識符,這樣能保證每個設備產生的數據嚴格隔離,底層按照設備的維度管理這些數據,設備協同分布式數據庫支持以設備的維度查詢分布式數據,但是不支持修改遠端設備同步過來的數據。
- 分布式數據庫沖突解決策略:分布式數據庫多設備提交沖突場景,在給提交沖突做合并的過程中,如果多個設備同時修改了同一數據,則稱這種場景為數據沖突。數據沖突采用默認沖突解決策略,基于提交時間戳,取時間戳較大的提交數據,當前不支持定制沖突解決策略。
- 數據庫 Schema 化管理與謂詞查詢:單版本數據庫支持在創建和打開數據庫時指定Schema,數據庫根據 Schema 定義感知 KV 記錄的 Value 格式,以實現對 Value 值結構的檢查,并基于 Value 中的字段實現索引建立和支持謂詞查詢。
- 分布式數據庫備份能力:提供分布式數據庫備份能力,業務通過設置 backup 屬性為 true,可以觸發分布式數據服務每日備份。當分布式數據庫發生損壞,分布式數據服務會刪除損壞數據庫,并且從備份數據庫中恢復上次備份的數據。如果不存在備份數據庫,則創建一個新的數據庫。同時支持加密數據庫的備份能力。
② 運作機制
- 分布式數據服務支撐 HarmonyOS 系統上應用程序數據庫數據分布式管理,支持數據在相同帳號的多端設備之間相互同步,為用戶在多端設備上提供一致的用戶體驗,分布式數據服務包含五部分:
-
- 服務接口:分布式數據服務提供專門的數據庫創建、數據訪問、數據訂閱等接口給應用程序調用,接口支持 KV 數據模型,支持常用的數據類型,同時確保接口的兼容性、易用性和可發布性。
-
- 服務組件:服務組件負責服務內元數據管理、權限管理、加密管理、備份和恢復管理以及多用戶管理等、同時負責初始化底層分布式 DB 的存儲組件、同步組件和通信適配層。
-
- 存儲組件:存儲組件負責數據的訪問、數據的縮減、事務、快照、數據庫加密,以及數據合并和沖突解決等特性。
-
- 同步組件:同步組件連結了存儲組件與通信組件,其目標是保持在線設備間的數據庫數據一致性,包括將本地產生的未同步數據同步給其他設備,接收來自其他設備發送過來的數據,并合并到本地設備中。
-
- 通信適配層:通信適配層負責調用底層公共通信層的接口完成通信管道的創建、連接,接收設備上下線消息,維護已連接和斷開設備列表的元數據,同時將設備上下線信息發送給上層同步組件,同步組件維護連接的設備列表,同步數據時根據該列表,調用通信適配層的接口將數據封裝并發送給連接的設備。
- 應用程序通過調用分布式數據服務接口實現分布式數據庫創建、訪問、訂閱功能,服務接口通過操作服務組件提供的能力,將數據存儲至存儲組件,存儲組件調用同步組件實現將數據同步,同步組件使用通信適配層將數據同步至遠端設備,遠端設備通過同步組件接收數據,并更新至本端存儲組件,通過服務接口提供給應用程序使用。
- 數據分布式運作示意圖如下:
③ 使用限制
- 應用程序如需使用分布式數據服務完整功能,需要申請 ohos.permission.DISTRIBUTED_DATASYNC 權限。
- 分布式數據服務的數據模型僅支持 KV 數據模型,不支持外鍵、觸發器等關系型數據庫中的技術點。
- 分布式數據服務支持的 KV 數據模型規格:
-
- 設備協同數據庫,Key 最大支持 896Byte,Value 最大支持 4MB - 1Byte。
-
- 單版本數據庫,Key 最大支持 1KB,Value 最大支持 4MB - 1Byte。
-
- 每個應用程序最多支持同時打開 16 個 KvStore。
- 由于支持的存儲類型不完全相同等原因,分布式數據服務無法完全代替業務沙箱內數據庫數據的存儲功能,開發人員需要確定要做分布式同步的數據,把這些數據保存到分布式數據服務中。
- 分布式數據服務當前不支持應用程序自定義沖突解決策略。
- 分布式數據服務當前流控機制針對 KvStore 的接口 1 秒最大訪問 1000 次,1 分鐘最大訪問 10000 次。KvManager 的接口 1 秒最大訪問 50 次,1 分鐘最大訪問 500 次。
- 如果需要在分布式數據庫事件回調的方法里修改 UI 組件,建議使用 UITaskDispatcher 機制。
④ 應用場景
- 分布式數據服務主要實現對用戶設備中應用程序的數據內容的分布式同步。
- 當設備 1 上的應用 A 在分布式數據庫中增、刪、改數據后,設備 2 上的應用 A 也可以獲取到該數據庫變化。可在分布式圖庫、信息、通訊錄、文件管理器等場景中使用。
二、分布式數據服務 API
- HarmonyOS 系統中的分布式數據服務模塊為開發者提供下面幾種功能:
三、分布式數據服務使用流程
① 根據配置構造分布式數據庫管理類實例
- 根據應用上下文創建 KvManagerConfig 對象。
- 創建分布式數據庫管理器實例。
- 以下為創建分布式數據庫管理器的代碼示例:
② 獲取/創建單版本分布式數據庫
- 聲明需要創建的單版本分布式數據庫 ID 描述。
- 創建單版本分布式數據庫,跨設備自動同步數據庫功能默認開啟。
- 以下為創建單版本分布式數據庫的代碼示例:
③ 訂閱分布式數據變化
- 客戶端需要實現 KvStoreObserver 接口。
- 構造并注冊 KvStoreObserver 實例。
- 以下為訂閱單版本分布式數據庫所有(本地及遠端)數據變化通知的代碼示例:
④ 將數據寫入單版本分布式數據庫
- 構造需要寫入單版本分布式數據庫的 Key(鍵)和 Value(值)。
- 將鍵值數據寫入單版本分布式數據庫。
- 以下為將字符串類型鍵值數據寫入單版本分布式數據庫的代碼示例:
⑤ 查詢單版本分布式數據庫數據
- 構造需要從單版本分布式數據庫快照中查詢的 Key(鍵)。
- 從單版本分布式數據庫快照中獲取數據。
- 以下為從單版本分布式數據庫中查詢字符串類型數據的代碼示例:
⑥ 同步數據到其他設備
- 獲取已連接的設備列表。
- 選擇同步方式進行數據同步。
- 以下為單版本分布式數據庫進行數據同步的代碼示例,其中同步方式為 PUSH_ONLY:
⑦ 關閉單版本分布式數據庫
- 以下為關閉單版本分布式數據庫的代碼示例:
⑧ 刪除單版本分布式數據庫
- 以下為刪除單版本分布式數據庫的代碼示例:
總結
以上是生活随笔為你收集整理的HarmonyOS之数据管理·分布式数据服务的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HarmonyOS之数据管理·轻量级偏好
- 下一篇: HarmonyOS之数据管理·分布式文件