【Day 14】HarmonyOS分布式數據庫實戰

一、分布式數據庫基礎

1. 核心概念速記表

術語解釋示例場景
分布式數據庫數據自動同步到同賬號設備手機添加商品→平板立即顯示
KV數據模型鍵值對存儲(類似JSON){"cart_item1": {"name":"牛奶","price":10}}
數據同步策略自動(實時)/手動(按需)手表僅同步關鍵健康數據
沖突解決最后寫入優先/自定義合并規則手機平板同時修改商品數量

?2. 基礎操作代碼塊

// 1. 創建分布式數據庫
const DB_NAME = 'shopping_cart_db'
const store = relationalStore.getRdbStore(this.context, {name: DB_NAME,distributed: true // 關鍵配置!
})// 2. 創建表(購物車示例)
await store.executeSql(`CREATE TABLE IF NOT EXISTS cart (item_id TEXT PRIMARY KEY,name TEXT,price REAL,count INTEGER)`
)// 3. 插入數據(多設備自動同步)
await store.insert('cart', {item_id: '1001',name: '鴻蒙開發板',price: 599,count: 1
})

二、進階實戰:購物車多端同步

1. 數據同步沖突處理

// 設置沖突解決策略(在數據庫初始化時)
store.setConflictResolver((localData, remoteData) => {// 規則1:價格沖突時取最低價if (localData.price !== remoteData.price) {return localData.price < remoteData.price ? localData : remoteData}// 規則2:數量沖突時求和return { ...localData, count: localData.count + remoteData.count }}
)

?2. 設備差異化同步

// 根據設備類型選擇同步字段(手表不同步圖片)
const syncColumns = deviceInfo.deviceType === 'watch' ? ['item_id', 'name', 'price'] : ['*']store.sync({tables: ['cart'],columns: syncColumns,mode: relationalStore.SyncMode.PUSH_PULL
})

三、性能優化技巧

1. 優化方案

  1. 數據分片:大表按時間分片同步
store.sync({tables: ['cart'],condition: 'timestamp > ?',conditionArgs: [Date.now() - 86400000] // 只同步24小時內數據
})

? ? 2.索引優化:為高頻查詢字段添加索引

await store.executeSql('CREATE INDEX idx_price ON cart(price)')

? ? 3.批量操作:減少跨設備通信次數

await store.batchInsert('cart', itemList)

四、調試與問題排查

1. 常用調試命令

# 查看分布式同步日志
hdc shell hilog | grep DistributedDB# 強制重置本地數據庫
hdc shell rm -rf /data/app/el2/100/database/包名/

2. 常見問題解決方案

問題現象解決步驟原理說明
設備間數據不同步1. 檢查華為賬號是否相同2. 驗證網絡狀態3. 查看數據庫權限分布式安全策略限制
同步速度慢1. 減少單次同步數據量2. 關閉非必要表的同步藍牙/WiFi帶寬限制
頻繁發生沖突1. 優化沖突解決策略2. 添加時間戳字段輔助判斷多設備并發寫入導致

?

?

 

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81220.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構】- 棧

前言&#xff1a; 經過了幾個月的漫長歲月&#xff0c;回頭時年邁的小編發現&#xff0c;數據結構的內容還沒有寫博客&#xff0c;于是小編趕緊停下手頭的活動&#xff0c;補上博客以洗清身上的罪孽 目錄 前言&#xff1a; 棧的應用 括號匹配 逆波蘭表達式 數制轉換 棧的實…

TDA4VM SDK J721E (RTOS/Linux) bootloaders梳理筆記

文章目錄 1. 前言2. RTOS BootLoader2.1 引導模式2.2 啟動序列2.2.1 流程框圖2.2.2 Memory map2.3 鏡像格式詳解3. Linux BootLoader鏡像格式詳解啟動流程參考1. 前言 TDA4VM的BootLoader包含兩部分:RTOS的和Linux的。 2. RTOS BootLoader 這是在SoC上的所有內核運行FreeRTO…

Spring Boot + MyBatis-Plus 的現代開發模式

之前的Maven項目和本次需要的環境配置并不一樣 之前使用的是&#xff1a; 傳統的 MyBatis 框架&#xff08;非 Spring Boot 環境&#xff09; 手動管理 SqlSession 使用了 .xml 的 Mapper 映射文件 沒有 Spring 容器管理&#xff08;沒有 Service / RestController 等&…

【Quest開發】極簡版!透視環境下摳出身體并能遮擋身體上的服裝

前兩天發了一個很復雜的版本&#xff0c;又鼓搗了一下發現完全沒有必要。我之前的理解有點偏&#xff08;不是錯誤的但用法錯了&#xff09;&#xff0c;但是有一些小伙伴收藏了&#xff0c;害怕里面的某些東西對誰有用&#xff0c;所以寫了一篇新的&#xff0c;前兩步配置環境…

vue 常見ui庫對比(element、ant、antV等)

Element UI 1. 簡介 Element UI 是一個基于 Vue 2 和 Vue 3 的企業級 UI 組件庫&#xff0c;提供了豐富的組件和主題定制功能。官方網站&#xff1a;Element UI 2. 主要特點 豐富的組件&#xff1a;包括表單、表格、布局、導航、彈窗等多種組件。主題定制&#xff1a;支持主…

MATLAB畫一把傘

% 傘的參數num_ribs 5; % 傘骨數量修改為5R 1; % 傘的半徑height 0.5; % 傘的高度handle_length 2; % 傘柄長度semicircle_radius 0.26; % 傘柄末端半圓的半徑% 生成傘葉網格theta linspace(0, 2*pi, 100);phi linspace(0, pi/2, 50);[Theta, Phi] meshgrid(theta, phi…

如何在 Go 中實現各種類型的鏈表?

鏈表是動態內存分配中最常見的數據結構之一。它由一組有限的元素組成&#xff0c;每個元素&#xff08;節點&#xff09;至少占用兩塊內存&#xff1a;一塊用于存放數據&#xff0c;另一塊用于存放指向下一個節點的指針。本文教程將說明在 Go 語言中如何借助指針和結構體類型來…

新一代機載相控陣雷達的發展

相控陣雷達以其優越的性能在軍事領域中有著廣闊的應用前景&#xff0c;但由于復雜的技術、昂貴的造價使其應用范圍還存在一定的局限性。然而&#xff0c;國內外對相控陣技術的研究非常重視&#xff0c;并取得了豐碩的成果。 軍用相控陣雷達主要分為陸基、海基和空基幾種類型。 …

多數元素題解(LC:169)

169. 多數元素 核心思想&#xff08;Boyer-Moore 投票算法&#xff09;&#xff1a; 解題思路&#xff1a;可以使用 Boyer-Moore 投票算法、該算法的核心思想是&#xff1a; 維護一個候選元素和計數器、初始時計數器為 0。 遍歷數組&#xff1a; 當計數器為 0 時、設置當前元…

數據庫 AI 助手測評:Chat2DB、SQLFlow 等工具如何提升開發效率?

一、引言:數據庫開發的 “效率革命” 正在發生 在某互聯網金融公司的凌晨故障現場,資深 DBA 正滿頭大汗地排查一條執行超時的 SQL—— 該語句涉及 7 張核心業務表的復雜關聯,因索引缺失導致全表掃描,最終引發交易系統阻塞。這類場景在傳統數據庫開發中屢見不鮮:據 Gartne…

【中間件】bthread效率為什么高?

bthread效率為什么更高&#xff1f; 1 基本概念 bthread是brpc中的用戶態線程&#xff08;也可稱為M:N線程庫&#xff09;&#xff0c;目的是&#xff1a;提高程序的并發度&#xff0c;同時降低編碼難度&#xff0c;在多核cpu上提供更好的scalability和cache locality。其采用…

DeepSeek V2:引入MLA機制與指令對齊

長上下文革命:Multi-Head Latent Attention(MLA)機制 傳統 Transformer 的多頭注意力需要緩存所有輸入token的 Key 和 Value,這對長文本推理時的內存開銷極為龐大。DeepSeek V2 針對這一難題提出了“Multi-Head Latent Attention”(MLA)機制。MLA 的核心思想是對多頭注意…

Druid監控sql導致的內存溢出--內存分析工具MemoryAnalyzer(mat)

問題 druid監控sql在網頁端顯示&#xff0c;我的服務插入sql比較大&#xff0c;druid把執行過的sql保存在DruidDataSource類的成員變量JdbcDataSourceStat dataSourceStat&#xff1b; JdbcDataSourceStat類中的LinkedHashMap<String, JdbcSqlStat> sqlStatMap中&#…

《Python實戰進階》No45:性能分析工具 cProfile 與 line_profiler

Python實戰進階 No45&#xff1a;性能分析工具 cProfile 與 line_profiler 摘要 在AI模型開發中&#xff0c;代碼性能直接影響訓練效率和資源消耗。本節通過cProfile和line_profiler工具&#xff0c;實戰演示如何定位Python代碼中的性能瓶頸&#xff0c;并結合NumPy向量化操作…

計算機操作系統知識集合

主要來自小林coding 硬件結構 cpu位寬 如果用 32 位 CPU 去加和兩個 64 位大小的數字&#xff0c;就需要把這 2 個 64 位的數字分成 2 個低位 32 位數字和 2 個高位 32 位數字來計算&#xff0c;先加個兩個低位的 32 位數字&#xff0c;算出進位&#xff0c;然后加和兩個高位…

電機常用易混淆概念說明(伺服、舵機、多輪)

1. 概述 基礎動力需求 &#xff1a;普通電機&#xff08;如水泵、風扇&#xff09;。 高精度控制 &#xff1a;優先伺服系統或伺服電機&#xff08;如數控機床&#xff09;。 微型化場景 &#xff1a;舵機&#xff08;如遙控模型&#xff09;。 移動底盤 &#xff1a;單舵輪成…

進程與線程:04 內核線程

內核級線程概述 上一講我們學習了用戶級線程&#xff0c;了解了其切換和創建方式。用戶級線程切換核心在于從一個棧變為兩個棧&#xff0c;每個線程有自己的棧和線程控制塊&#xff08;tcb&#xff09;&#xff0c;切換時先切換tcb再切換棧&#xff0c;創建時將切換的pc指針放…

信息系統項目管理師-軟考高級(軟考高項)???????????2025最新(六)

個人筆記整理---僅供參考 第六章項目管理概論 6.1PMBOK的發展 6.2項目基本要素 組織過程資產指的是項目上的&#xff0c;國產數據庫的使用----安保和安全指的是環境因素 6.3項目經理的角色 6.4價值驅動的項目管理知識體系

[藍橋杯 2023 國 Python B] 劃分 Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int[] arr new int[41];int sum 0;for (int i 1; i < 40; i) {arr[i] sc.nextInt();sum arr[i];}sc.close();int target sum / 2; // 最接近的兩…

Redis05-進階-主從

零、文章目錄 Redis05-進階-主從 1、搭建主從架構 &#xff08;1&#xff09;概述 單節點Redis的并發能力是有上限的&#xff0c;要進一步提高Redis的并發能力&#xff0c;就需要搭建主從集群&#xff0c;實現讀寫分離。 &#xff08;2&#xff09;集群概況 我們搭建的主從…