動態

詳情 返回 返回

KWDB 分佈式架構探究——數據分佈與特性 - 動態 詳情

本期直播我們邀請到 KaiwuDB 高級研發工程師馮友旭為大家分享《KWDB 分佈式架構探究——數據分佈與特性》,點擊下方視頻觀看完整版回放 ↓↓↓

KWDB 分佈式架構探究——數據分佈與特性

📌以下為重點內容節選,點擊上方視頻查看完整版內容。

背景介紹

數據分佈在數據庫中的作用至關重要,它直接影響到數據庫系統的性能、可擴展性、可用性、管理效率和成本。特別是在處理海量數據和高併發請求的現代應用中,合理的數據分佈策略是數據庫架構設計的核心。本期直播重點講解了數據分佈在分佈式數據庫中的重要性、 KWDB 數據庫分佈式架構設計方案、特性及具體實踐案例。

1. 數據分佈概述

1.1 為什麼考慮數據分佈?

1.2 數據分佈概述——分區方式

• Hash 適合預分片,系統會更具確定性;Range 更依賴調度系統
• Range 對範圍查詢很友好,Hash 範圍查詢基本等價於全表掃描
• Range 對前綴查詢很友好,實際上屬於一種範圍查詢
• Range 分區與 Hash 分區都能很好的解決數據分佈熱點問題
• Range 在自增序列、時間等字段的寫入容易導致熱點,但可通過使用不自增的序列等方法規避

2. KWDB 數據分佈概念及特性

2.1 KWDB 數據分佈架構

• 無中心透明式分佈式
• 分佈式線性擴展
• 一致性及可靠性保障
• 多模數據分佈(關係數據按 Range 進行分片;時序數據按時間戳 Hash 分佈)

KWDB 數據分佈架構圖

2.2 KWDB 數據分佈——數據分片 Range

數據分片 Range 的邏輯概念是數據的子集,代表數據分片/遷移及高可用操作的最小單元。

• 分片的均衡情況影響查詢&寫入性能
• 分片大小均衡粒度
• 分片數量決定副本層併發

2.3 KWDB 數據分佈——關係數據與時序數據

關係數據:按照 Key 進行的 Range 分佈。

• Key 由表 ID/主鍵(索引)進行構成
• 使用 rocksdb 進行存儲
• 支持指定 Range 大小
• 支持 Range 的 Split/Merge
• 支持指定 Range 對應的副本數
時序數據:按照按照設備 Hash 進行的 Range 分佈。

• Key 由表 ID/設備/時間戳進行構成
• 使用特殊的時序存儲引擎進行存儲
• 支持指定 Range 大小以及 Range 的 Split/Merge,但在達到最大 HashPoint 或時間間隔後不再分裂
• 支持指定 Range 對應的副本數

2.4 KWDB 時序數據分片——按照 Hash 環並引入時間分片

支持歷史 Range 的 Merge 規則,通過 alter merge day 進行設置。

優勢:

• 保證 Range 數量控制在一定範圍內,元數據可控
• 歷史 Range 大,但活躍 Range 分片小,更容易解決時序場景下的數據遷移和寫熱點問題
• 支持冷熱數據分片和分級存儲

2.5 KWDB 時序數據寫入流程

KWDB 時序數據寫入流程

Hashpoint:根據 primaryTag 或 primaryTag/TimeStamp,通過 Hash (key)%HashNum 所計算出來的 Hash 值。

  1. 保證設備均勻打散
  2. 擴縮容和遷移場景避免重 Hash 過程

2.6 KWDB 數據分佈特性——數據均衡(手動/自動)

ALTER {RANGE DEFAULT | DATABASE db_name | TABLE tb_name} CONFIGURE ZONE USING rebalance;

作用範圍:

• RANGE DEFAULT:全局時序表均衡
• DATABASE:庫級時序表均衡
• TABLE:單表級均衡


KWDB 評分模型

KWDB 數據均衡方案

3. KWDB 數據分佈實踐

3.1 HashNum 及 Range Size

考慮元數據的膨脹係數以及集羣的讀寫性能的穩定性。

建議:16C/32G 3 節點集羣 Range 總數量不超過 1000 ,5 節點集羣 Range 總數量不超過 3000,增加一個節點增加 Range 數量不超過 500。


KWDB 業務場景 HashNum 及 Range Size 計算示例

3.2 熱點 Range 分析

優化策略:

• 熱點 Range Follower 查詢,定義時序查詢允許走 Follower Read
• 支持手動 Range Split/Merge
• 修改 Range 分區方案
• 自定義數據固定


Range 統計 QPS/TPS 

user avatar u_15988698 頭像 edonsoft 頭像 databend 頭像 aijianshendexuegao 頭像 lyhabc 頭像 apacheiotdb 頭像 kunaodehuluobo 頭像 xuxueli 頭像 zhaoqianglaoshi 頭像 mimangdeyangcong 頭像 kk_64ec9e6b37cb5 頭像 huopodeyaokongqi_c3jobz 頭像
點贊 17 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.