【技術解密】SequoiaDB分散式儲存原理
分散式架構勢在必行
在傳統的資料庫技術中,為了保證資料的安全與高效能,通常會選擇高階的外接儲存作為資料庫的主要儲存源,而本地磁碟則被視為不可靠的效能低下的一種裝置。這種觀念的產生,主要是由於過去本地磁碟的生產技術存在一定的瓶頸,並且其穩定性和效能確實都遠落後於高階儲存。
網際網路應用迅猛發展
在過去, IT行業的發展遠沒有現在蓬勃,大家更多的是在家裡或者辦公室通過桌面級裝置上網查詢資料和瀏覽世界各類時事新聞。在這樣的時代背景下,網際網路企業和像銀行、通訊類公司這種對IT部門十分依賴的傳統企業,一臺小型機和一個優秀的關係型資料庫就能夠很好的處理企業內部多個系統之間的資料了。
但是在最近10年,甚至更短的時間裡,每個人手中都擁有了一部或者多部智慧移動終端,它們除了能夠打電話、發簡訊,也能夠像膝上型電腦一樣,上網、玩遊戲、購物、聊天。各種智慧應用和業務場景也被開發者發掘出來了,這些新穎的應用也正在被大部分消費者所接受。
硬體成本大大降低
一臺小型機+一個優秀的關係型資料庫已經越來越不能滿足IT部門對急速膨脹的資料量的處理需求了,重要一個原因,傳統的資料庫技術無法做到方便快捷地將海量資料分配給多臺伺服器去計算,而永遠只能通過垂直擴容硬體的方式提升系統效能。
經過這10幾年的發展,過去不被企業認可的磁碟技術有了很大的進步,從SATA磁碟到SAS磁碟,從機械磁碟到SSD磁碟,技術的進步,使得本地磁碟的穩定性和讀寫效能都有了非常大的提升。它們也逐漸被企業使用在重要的生產環境中。
分散式大資料技術革新
與磁碟技術同時發展起來的,還有各種大資料技術。先有谷歌的三篇著名論文,後有各種技術特點的NoSQL/NewSQL資料庫。它們的技術實現,都是基於廉價的X86伺服器和本次磁碟作為主要的硬體伺服器而設計。
並且各種NoSQL/NewSQL資料庫的技術特點,都包含了資料分散式儲存的功能技術,以解決當前企業資料量快速膨脹,客戶對IT系統的相應時間要求越來越高的技術難題。
資料庫分散式原理介紹
Hash 方式分佈資料
資料庫Hash方式分佈資料,原理就是使用者在建立集合時,指定此集合的切分方式為Hash,並且顯式指定ShardingKey 為記錄中哪個欄位。
圖1
當應用APP向資料庫傳送寫入記錄的請求時,首先會將記錄與請求傳送到資料庫的Coord節點,Coord節點會根據此集合的切分方式,例如ShardingKey=id,ShardingType=Hash,以及記錄中ShardingKey的Hash值,判斷應該將此記錄分發給哪個資料分割槽組。一旦資料分割槽組接收到寫入記錄請求與寫入的資料資訊,資料分割槽組會呼叫資料庫中相應的方法將此記錄持久化到磁碟上,並且同時更新此資料分割槽組中對應集合的索引資料。
Range 方式分佈資料
資料庫Range方式分佈資料,原理就是使用者在建立集合時,指定此集合的切分方式為Range,並且顯式指定ShardingKey 為記錄中哪個欄位。
圖2
當應用APP向資料庫傳送寫入記錄的請求時,首先會將記錄與請求傳送到資料庫的Coord節點,Coord節點會根據此集合的切分方式,例如ShardingKey=id,ShardingType=Range,以及記錄中ShardingKey的值,判斷此記錄是屬於哪個範圍的資料分割槽組,然後再將此記錄傳送給對應的資料分割槽組。一旦資料分割槽組接收到寫入記錄請求與寫入的資料資訊,資料分割槽組會呼叫資料庫中相應的方法將此記錄持久化到磁碟上,並且同時更新此資料分割槽組中對應集合的索引資料。
Partition 方式分佈資料
在SequoiaDB資料庫中,對比其他的NoSQL資料庫的簡單資料切分功能,使用了“主子表”的功能,這個功能與部分關係型資料庫的Partition功能類似,都是在資料庫中建立一張邏輯的總檢視,然後將多個Partition通過某個欄位的範圍限定掛載到總檢視上。
通過“主子表”這種分散式方式,使用者可以按照需求對於資料進行更好、更細化的切分工作。同時,類似於時間序中或冷熱資料可以做到天然的切分,這樣更有利於硬體資源的充分利用。
在SequoiaDB中,main collection 對應關係型資料庫的總檢視,sub collection 對應關係型資料庫的partition。而SequoiaDB資料庫中,比較特殊的是,sub collection 實際上就是一個普通的集合,而main collection 則是隻存在於資料庫的編目節點中,並不會在任何資料分割槽組中寫入任何資料。
使用者基本可以理解為main collection為邏輯檢視,只在編目節點中保留一些資料範圍資訊,而sub collection 則是資料庫中普通建立的集合,只是在配合main collection 一起使用時,才被稱呼為sub collection。
圖3
在一般情況下,使用者建立一個集合,此集合會隨機被分配到某個資料分割槽組上。如果使用者要利用主子表功能來實現資料的分散式儲存,還需一些小技巧。使用者在建立集合時,可以通過顯式指定此集合被分配到哪個資料分割槽組上,從而避免sub collection扎堆在某個資料分割槽組上。
使用者最後一個步驟就是給每個sub collection 劃定範圍分割槽,然後將各個sub collection attach到main collection 上。
多維分割槽
在SequoiaDB資料庫多種分散式原理上,最為複雜和最為高效的方法,就是資料多維分割槽。多維分割槽,顧名思義,就是在對集合做資料分割槽時,不止一種分割槽方式同時作用在一個集合上。 如圖4 ,多維分割槽實際上就是主子表和Hash分割槽相結合的一種方式。
圖4
目前SequoiaDB的多維分割槽可以為一個集合提供兩個欄位的做分割槽。一般情況下,使用者可以在主子表中對time欄位做範圍切分,然後再對sub collection 的id欄位做Hash切分。
使用者使用多維分割槽的方式,主要的優勢在於可以將一個海量資料的集合以更加小的顆粒度做資料均衡,以提升資料庫的效能。
使用者在使用多維分割槽功能時,還可以結合資料庫的Domain 功能,來更好地處理資料分割槽任務。
圖5
Domain,就是資料庫將多個資料分割槽組整合在一起的一個邏輯域,使用者可以在建立集合空間時直接指定此集合空間屬於哪個Domain上,然後基於此集合空間建立的集合,只要是ShardingType=Hash的,資料庫就會自動將此集合按照ShardingKey的Hash 值分發給屬於此Domain的資料分割槽組。
相關文章
- 【操作教程】SequoiaDB分散式儲存教程分散式
- 分散式儲存技術概念分散式
- Ceph分散式儲存技術解讀分散式
- 不同體系分散式儲存技術的技術特性分散式
- 分散式儲存技術解讀系列之GFS分散式
- FastDFS分散式儲存原理簡介AST分散式
- 分散式系統技術:儲存之資料庫分散式資料庫
- HDFS分散式儲存的意義及技術解析分散式
- 雲端儲存的技術原理
- [解密] DNA儲存技術究竟牛在哪裡?解密
- IPFS分散式儲存挖礦技術系統開發分散式
- [技術思考]分散式儲存系統的雪崩效應分散式
- IPFS分散式儲存挖礦系統開發軟體技術分散式
- 使用開源技術構建有贊分散式 KV 儲存服務分散式
- Redis 分散式儲存Redis分散式
- HDFS分散式儲存分散式
- 分散式儲存概述分散式
- 淺談分散式儲存之SSD基本原理分散式
- Ceph分散式儲存-原理介紹及簡單部署分散式
- 從Google Spanner漫談分散式儲存與資料庫技術XAGo分散式資料庫
- 「分散式技術專題」獨立儲存的優勢與劣勢分散式
- Hadoop 分散式儲存分散式計算Hadoop分散式
- 「分散式技術專題」非獨立儲存的優勢與劣勢分散式
- DAOS 分散式非同步物件儲存|儲存模型分散式非同步物件模型
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- 雲端計算導論 # 3 雲端儲存技術:概念、結構模型、關鍵技術、分散式資料儲存、常見儲存結構、應用與問題模型分散式
- 前端儲存技術前端
- 分散式系統原理--日誌技術Redo Log分散式
- 分散式儲存轉崗記分散式
- OceanStor Pacific 9920分散式儲存獲得IT168技術卓越獎分散式
- 基於 SmartX 分散式儲存的 RDMA 與 TCP/IP 技術與效能對比分散式TCP
- Gartner:浪潮儲存進入分散式儲存前三分散式
- 大話儲存——磁碟原理與技術筆記(一)筆記
- 哪些企業需要分散式式儲存?分散式
- 杉巖引領國產分散式儲存廠商,堅持國產化技術路線分散式
- 什麼是HDFS 分散式儲存分散式
- 分散式儲存高可用設計分散式
- 搭建FastDFS分散式儲存環境AST分散式