巨杉Tech | SequoiaDB數據域及存儲規劃

1 背景
近年來,企業的各項業務發展迅猛,客戶數目不斷增長,後臺服務系統壓力也愈來愈大,系統的各項硬件資源也變得很是緊張。所以,在技術風險可控的基礎上,但願引入大數據技術,利用大數據技術優化現有IT系統實現升級改造,搭建一個統一存儲和管理歷史、近線數據的服務平臺,同時可以對外支持高併發、低延時的數據查詢服務,以提升IT系統的計算能力,下降IT系統的建設成本,優化IT系統的服務體系,爲各個業務部門提供更加優質的IT服務。
這類服務平臺在整個IT系統架構中實質上是一個爲核心業務系統減負的系統。SequoiaDB 巨杉數據庫支持海量分佈式數據存儲,而且支持垂直分區和水平分區,利用這些特性能夠將歷史、近線數據存儲到 SequoiaDB 中,並可以對外支持高併發、低延時的數據查詢服務。本文主要講解如何利用巨杉數據庫域的特性在歷史、近線數據應用場景下進行存儲規劃已知足業務系統對性能、存儲、維護等方便的要求。

2 相關概念
多維度數據分區
SequoiaDB 支持水平和垂直方式分區。採用散列(hash)或範圍(range)水平分區是將數據分佈至多個節點,加大數據吞吐量, 加速數據查詢和寫入;採用範圍(range)垂直分區是在一個節點內將數據邏輯劃分爲多個區間,每一個區間做爲獨立的存儲單元,減小查詢時網絡I/O, 進一步加速查詢。
    水平分區
散列水平分區,原理是將選擇的分區鍵進行 hash 運算,根據 hash 值將數據分發至相應分區。範圍水平分區則是直接匹配分區鍵和所對應的範圍,存放到相應的分區。兩種分區方式各有適用的場景,和運行的業務息息相關。通常不建議採用範圍水平分區,除範圍分區鍵(如月)能保證數據均衡(如每個月的數據量級一致)。如圖2-1所示。
數據庫

圖2-1. SequoiaDB 水平分區
    垂直分區
垂直分區是指在一個節點內集合數據按某字段,分紅成多個數據段。每一個範圍表明一個垂直分區。數據查詢、寫入時自動分發至相應分區中。垂直分區極大減小硬盤數據訪問,下降網絡I/O,加速查詢。垂直分區共享資源(同一臺物理機),出發點在於將冷熱數據隔離,如圖2-2所示。
服務器

 圖2-2. SequoiaDB 垂直分區
 複製組和域
分區組又被稱爲複製組,一個複製組內能夠包含一個或多個數據節點(或編目節點),節點之間的數據使用異步日誌複製機制,保持最終一致。
域(Domain)是由若干個複製組(ReplicaGroup)組成的邏輯單元。每一個域均可以根據定義好的策略自動管理所屬數據,如數據切片和數據隔離等。
以3臺服務器爲例,每臺服務器9塊磁盤。複製組的物理部署和域的邏輯組成如圖2-3所示:
網絡

 採用3副本,按磁盤部署數據節點,每臺機器部署9個數據節點,3臺機器橫向組成數據組,共9個數據組。如圖域1包括數據組1-3,域2包括數據組5-9,域3包括數據組1-6,所以域在邏輯上由數據組組成,而且組成的數據組能夠重疊。

3 業務場景
隨着用戶的增長、業務的發展,大型企業用戶的業務系統的數據量愈來愈大,並且原有系統絕大部分基於關係型數據構建,表結構複雜,每一個查詢都須要關聯若干張大數據表,致使關聯查詢的性能很是低。
所以能夠利用 SequoiaDB 存儲海量歷史、近線數據並開發數據查詢統一入口,按照數據生命週期管理的規則對歷史、近線數據進行統一在線存儲。另外平臺提供高併發、實時查詢服務,解決了關係型數據庫海量數據關聯查詢性能慢的問題。
根據業務系統歷史、近線數據的需求,創建歷史、近線數據存儲區用於存儲從源系統直接導入的原始數據,包括超出生產系統保存期限的數據以及須要按時點備份的數據。同時爲提供在線、中高併發,小結果集的數據處理能力,可根據源系統不一樣劃分多個存儲區域,集羣內部使用劃分數據域的方式進行分類管理。

4 數據域劃分方式
在業務系統經過接入平臺將結構化數據接入到巨杉數據庫時,需根據數據調研信息對業務系統進行分類,以肯定業務系統的存儲量、併發大小、數據生命週期等,爲結構化數據在巨杉數據庫中的存儲規劃提供信息支撐。業務系統結構化數據存儲到巨杉數據庫可利用數據域技術對業務系統的數據區域進行功能劃分,具體劃分方式以下:
海量數據或者高併發查詢業務系統
這類業務系統的特色是業務查詢併發較大,數據所佔存儲空間較大,對cpu、內存、網絡要求較高,利用域對這類系統進行隔離,可使數據在寫入、讀取時充分利用集羣中域所在機器的物理資源以提高性能。
數據量較小或者查詢併發數較小的業務系統
這類業務系統通常對cpu、內存、網絡要求較低,所佔存儲空間較小。所以這類系統能夠和其餘併發、所佔存儲較小的業務系統的數據域共享數據組以節省機器資源。

5 利用數據域水平擴展集羣
目前,企業的部分業務系統結構化數據年增加量較大而且數據愈來愈多。在業務系統投產後,隨着業務量的增長集羣可以使用容量逐漸變小,所以在業務系統接入集羣前需考慮存儲容量耗盡後整個集羣的水平擴展。SequoiaDB 是分佈式數據庫,所以能夠經過集羣的擴容實現集羣性能的近線性增加。而經過擴容後主要解決兩個問題是數據存儲的容量問題和整個集羣的性能問題。由於數據量的不斷增加及上線後的推廣使用,因此須要進行擴容來提高集羣性能及增長數據存儲空間。
SequoiaDB 在集羣的管理上定義了數據域概念,一個數據域能夠將多個數據組包含進來。一個集羣能夠根據不一樣的業務系統來劃分不一樣的數據域,不只實現將不一樣業務系統數據在物理層面的隔離存儲,同時也實現了不一樣業務系統數據的統一調度管理,並且之後的集羣擴容也能夠根據域的使用需求而只針對此域進行集羣擴容。
因此在進行擴容時,咱們須要結合 SequoiaDB 數據域和業務系統需求進行擴容規劃及實施。結構化數據在擴容時,可針對結構化數據所在數據域增長數據組再進行數據均衡切分到新擴容的機器上;或者使子表分散在單獨的集合空間中,並使子表對應的集合空間所屬數據組在新擴容機器的數據組上。

6 具體案例
某大型金融用戶的某系統歷史數據量60T,天天有80G左右的增量數據。假設按照3年數據總量作存儲規劃,則三年數據佔總存儲約爲(60+80G*365/1024)*3=266T。
假設如今客戶提供的硬件配置信息以下:
架構

具體安裝部署如圖6-1所示:
併發

 圖6-1

存儲規則
根據上述業務系統的信息,可將這類系統劃分爲高併發海量存儲業務場景。結合數據域劃分方式以及將來擴容需求,該業務系統的結構化數據存儲在接入時數據域劃分規則以下:
一、 海量數據高併發查詢業務系統使用獨立的域進行存儲;
二、 使用主子表按照時間切分,每一個子表按照ID散列分佈到域所對應的全部機器上;
三、 海量數據高併發查詢業務系統子表單獨使用集合空間;
四、 數據量較小或者併發查詢較小的業務系統能夠共用域;
五、 結構化域擴容可以使用增長數據組再進行數據均衡切分到新擴容的機器上,或者使子表分散在單獨的集合空間中,並使子表對應的集合空間所屬數據組在新擴容機器的數據組上。

集合空間和集合設計
根據上述存儲規則,該業務場景下的結構化數據和非結構化數據存儲方式以下:
使用主子表按照時間切分,每一個子表按照ID或者業務字段散列分佈,子表跨度按月進行切分,而且子表分散在單獨的集合空間中。

7 總結

數據域在邏輯上由一個或多個數據組組成,在物理上對應具體的數據節點,而且不一樣的域之間能夠重疊數據組。所以,業務系統能夠根據主子表特性以及域包含數據組的靈活性將集羣劃分爲不一樣的區域存儲結構化數據,充分利用集羣的計算、存儲資源。巨杉數據庫,支持海量數據存儲,SequoiaDB 支持垂直分區和水平分區,提供高併發、低延時數據查詢服務。異步

相關文章
相關標籤/搜索