【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool

近期,巨杉數據庫正式推出了完整的SequoiaDB 工具包,作爲輔助工具,更好地幫助大家使用和運維管理分佈式數據庫。爲此,巨杉技術社區還將持續推出工具系列文章,幫助大家瞭解巨杉數據庫豐富的工具矩陣。

本文作爲系列第一篇,將分享巨杉數據庫大數據存儲工具 sdblobtool 的基本介紹和應用實踐。
【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
巨杉工具矩陣

一、對象存儲與自建存儲對比
通俗地講,自建存儲就是自己購買服務器設備存儲文件,通過運維人員手工進行文件的上傳下載。而對象存儲,則是使用不同的存儲形態來存儲文件。目前,對象存儲獨立的存儲形態有三種:塊存儲、⽂件存儲以及新出現的對象存儲。

塊存儲:簡單來說,塊存儲就是將硬盤直接掛載到主機,在主機上我們能夠看到的就是一塊塊的硬盤以及硬盤分區。從存儲架構的角度而言,塊存儲又分爲DAS存儲(Direct-Attached Storage,直連式存儲)和SAN存儲(Storage Area Network,存儲區域網絡)。

文件存儲:指的是在文件系統上的存儲,也就是主機操作系統中的文件系統。我們知道,文件系統中有分區,有文件夾,子文件夾,整體形成⼀個自上而下的⽂件結構,⽤戶可以通過操作系統中的應⽤程序來打開和修改文件系統下的⽂件。

對象存儲:指的是⾯向對象/⽂件的、海量的互聯網存儲對象。雖然它也是文件,但它是已經被封裝的⽂件(編程中的對象就有封裝性的特點)。在對象存儲系統⾥,用戶不能直接打開和修改⽂件,但可以像 ftp ⼀樣上傳和下載⽂件。另外,對象存儲不像⽂件系統那樣有⼀個很多層級的⽂件結構,而是隻有⼀個“桶”的概念(也就是存儲空間),“桶”⾥⾯全部都是對象,是一種非常扁平化的存儲方式。

二、巨杉數據庫大對象存儲
SequoiaDB 和各大雲平臺對象存儲都提供存儲服務,都具備分佈式、可擴展、高可用等特性。各大雲平臺對象存儲是專門爲對象存儲而設計的,而SequoiaDB的塊存儲引擎則針對非結構化數據存儲。

SequoiaDB 的塊存儲字段類型叫做LOB(Large OBject,大對象),其核心機制是將內容文件打散成多個數據塊,每個數據塊被分別發送到不同分區獨立存放。如下圖所示:
【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
LOB 文件邏輯結構

與其他解決方案相比,由於不存在獨立中控元數據節點,SequoiaDB 提供的 LOB 存儲機制理論上可以存放近乎無限數量的對象文件,並且不會由於元數據堆積而造成性能下降。同時,由於數據塊被散列分佈到所有數據節點,整個系統的吞吐量隨集羣磁盤數量的增加近乎線性提升。最後,SequoiaDB 提供原生的內容管理接口,通過 REST 訪問方式支持批次管理、版本管理、流程管理等一系列基本CM特性。
【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
基於LOB 存儲機制的內容管理平臺架構圖

從使用方式上看,SequoiaDB的 LOB 機制可以使用原生 API 的訪問形式,對底層 LOB 對象進行讀寫訪問;同時,用戶也可以通過高階 CM API Java 接口,Java 驅動會將請求封裝成 RESTful 形式,通過發送接收 HTTP 報文進行對象和批次級別讀寫更新操作。

相對於其他雲存儲平臺,巨杉數據庫對象存儲具有以下優勢:
安全性

SequoiaDB 提供基於本地化的對象存儲,通過多副本數據備份,實現數據安全,安全性毋庸置疑。
支持全類型數據的覆蓋

SequoiaDB 是⼀款以 JSON/BSON 數據類型作爲底層存儲格式的分佈式關係型數據庫,支持靈活的數據類型定義和存儲,支持全類型數據的覆蓋,可同時存儲結構化、半結構化和非結構化數據,對大數據的存儲與分析提供了了一個堅實、可靠、高效與靈活的底層平臺。

更加靈活的一致性策略

目前,SequoiaDB 數據分區組的數據一致性是基於集合級別進行配置的。用戶在使用SequoiaDB 的過程中,可以隨時調整數據一致性的強度。在一個多副本的 SequoiaDB 集羣中,集合默認的數據⼀致性行級別爲“最終⼀致性”。

深度整合大數據體系組件

SequoiaDB 的企業版本不僅集成了 Hadoop 的 HDFS、MapReduce和Spark,還向客戶提供完善的 SQL 解決方案和豐富的第三方插件,例如 ETL 工具 Kettle 的 SequoiaDB 插件,Spark SQL 的擴展包--支持 Spark SQL 自動同步操作 SequoiaDB 數據集等。

SequoiaDB 不僅通過了全球最大的 Hadoop 發行商 Cloudera 的官方認證(全球只有四家 NoSQL 數據庫獲得),還獲得了了 DataBricks 的官方認證,同時,SequoiaDB 也是國內三家經過 DataBricks 授權,擁有發行 Spark 權利的廠商之⼀。

三、大對象存儲工具 sdblobtool ⽤法
sdblobtool 是一款用於管理 SequoiaDB 集合中大對象的工具,具有大對象(lob)的導出、導⼊、遷移的功能。

  1. 大對象的導出

導出功能是將集合中的⼤對象導出到本地⽂件。導出參數:
【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
Note:
--prefer 的取值包括 M 或 m 指master(主節點); S 或 s(從節點); A 或 a 表示anyone; 通過1~255指定instanceid(實例id)

導出示例:

  1. 連接主機名爲 sdb 的數據庫服務器中服務名爲11810協調節點,將集合空間爲 sample,集合爲 employee 中的大對象導⼊到本地文件 mylob。
    [sdbadmin@sdb01]$ sdblobtool --operation export --hostname sdb --svcname 11810
    --collection sample.employee --file /opt/file/lobfile
    執行效果

[sdbadmin@sdb] sdblobtool --operation export --hostname sdb --svcname 11810 --collection sample.employee --file /home/sdbadmin/mylob
lob exporting has been done, total num:6

#查看當前目錄下的日誌文件
[sdbadmin@sdb] ls -lrt
總用量 104
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:24 myblog
-rw-r--r--1 sdbadmin sdbadmin_group 1497 10月 27 18:24 sdblobtool.log
導出日誌

2019-10-27-18.24.33.252414 Level:EVENT
PID:23987 TID:23987
Function:main Line:323
Message:
Start sdblobtool [Ver:3.2, Re;ease: 42463, Build: 2019-07-27-20.55.27]...

2019-10-27-18.24.33.252848 Level:EVENT
PID:23987 TID:23987
Function:main Line:344
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
options:{省略}

2019-10-27-18.24.33.257633 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/mig/migLobTool.cpp
Message:
begin to export lob

2019-10-27-18.24.33.270184 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/mig/migLobTool.cpp
Message:
lob exporting has been done, total num:6

2019-10-27-18.24.33.270323 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/pmd/sdblobtool.cpp
Message:
sdblobtool quit. rc: 0, shell rc: 0.

  1. 連接主機名爲 sdb01 的數據庫服務器器中服務名爲 11810 協調節點,使用用戶名 sdbadmin,密碼 sdbadmin,將集合空間爲 sample,集合爲 employee 中的大對象導入到本地文件 lobfile。
    [sdbadmin@sdb01]$ sdblobtool --operation export --hostname sdb01 --svcname
    11810 --username sdbadmin --password sdbadmin --collection samole.employee --file
    /opt/file/lobfile
  2. 將集合空間爲bizz,集合爲 img 中的大對象導入到本地文件 lobfile 中,並指定從主節點導出。
    [sdbadmin@sdb01]$ sdblobtool --operation export --hostname sdb01 --svcname
    11810 --collection bizz.img --prefer M --file /opt/file/lobfile

  3. 大對象的導入
    ⼤對象導入是將本地文件中的大對象文件導入到集合中, 導入參數:
    【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
    Note:
    指定--ignorefe 時只需要添加 --ignorefe即可,不需要爲其指定具體值。--file的本地⽂文件指使用 sdblobtool 導出⽣生成的文件。

導入示例:

  1. 將本地文件 mylob 中的⼤對象導入至集合空間 sample,集合 employee2 中,當遇到已經存在的大對象時跳過。
    [sdbadmin@sdb01]$ sdblobtool --operation import --hostname sdb --svcname 11810
    --collection sample.employee2 --file /home/sdbadmin/mylob --ignorefe
    執行效果

[sdbadmin@sdb] ls lrt
總用量 100
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:27 mylobbr/>[sdbadmin@sdb]
[sdbadmin@sdb] sdblobtool --operation import --hostname sdb --svcname 11810 --collection sample.employee2 --file /home/sdbadmin/mylob --ignoref
File version: 1 TotalNum: 6 CreateTime: 2019-10-27-18.27.27.894000
lob importing has been done, total num: 0
br/>[sdbadmin@sdb]
[sdbadmin@sdb] ls -lrt
總用量 104
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:27 mylob
-rw-r--r--1 sdbadmin sdbadmin_group 1492 10月 27 18:30 sdblobtool.log
導出日誌

2019-10-27-18.30.08.474176 Level:EVENT
PID:8084 TID:8084
Function:main Line:323
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
Start sdblobtool [Ver: 3.2, Release: 42463, Build: 2019-07-27-20.55.27]...

2019-10-27-18.30.08.474534 Level:EVENT
PID:8084 TID:8084
Function:main Line:344
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
options:{ "hostname": "sdb", "svcname": "11810", "usrname": "", "passwd": "", "operation": "import", "collection": "foo.bar2", "file": "/home/sdbadmin/mylob", "ignorefe": true, "dsthost": "localhost", "dstservice": "11810", "dstusrname": "", "dstpasswd": "", "PreferedInstance": "M", "ssl": false }

2019-10-27-18.30.08.478471 Level:EVENT
PID:8084 TID:8084
Function:_importLob Line:628
File:SequoiaDB/engine/mig/migLobTool.cpp
Message:
begin to import lob

2019-10-27-18.30.08.484134 Level:EVENT
PID:8084 TID:8084
Function:_importLob Line:654
File:SequoiaDB/engine/mig/migLobTool.cpp
Message:
lob importing has been done, total num:0

2019-10-27-18.30.08.484228 Level:EVENT
PID:8084 TID:8084
Function:main Line:365
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
sdblobtool quit. rc: 0, shell rc: 0.

  1. 使用用戶名 sdbadmin 密碼 sdbadmin 將本地文件 mylob 中的大對象導入至集合空間 sample,集合 employee2 中,當遇到已經存在的大對象則跳過。
    [sdbadmin@sdb01]$ sdblobtool --operation import --hostname sdb01 --username sdbadmin --passwd sdbadmin --svcname 11810 --collection sample.employee2 --file /home/sdbadmin/mylob --ignorefe

  2. 大對象遷移
    大對象遷移是將集合中的大對象遷移到另一個集合中,遷移參數:
    【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool
    Note:
    指定--ignorefe 時只需要添加 --ignorefe即可,不需要爲其指定具體值。
    遷移示例:
    連接集羣主機名爲 sdb01 中的協調節點11810,將集合空間 sample,集合 employee 下的大對象複製到另一個集羣,目標集羣主機名爲 sdb02,協調節點爲11810,集合空間 sample,集合 employee2 中,需要已存在的大對象跳過。
    [sdbadmin@sdb01]$ sdblobtool --operation migration --hostname sdb01 --svcname 11810 --collection sample.employee --dsthost sdb02 --dstservice 11810 --dstcollection sample.employee2 --ignorefe

  3. 導出成功標誌
    指定大對象遷移命令後,控制檯會在命令執行後給出本次命令執行結果:

大對象導出

lob exporting has been done, total num:6
大對象導入

File version: 1 TotalNum: 6 CreateTime: 2019-10-27-18.27.27.894000
lob importing has been done, total num: 0
用戶通過控制檯輸出可以判斷本次導入或者導出是否存在問題。然後再進入導入/導出生成的 sdblobtool.log 日誌文件,檢查日誌文件中文件導出數量的統計,查看日誌文件是否存在 ERROR 信息,判斷本地操作是否存在錯誤。

  1. 大對象工具日誌

使用 sdblobtool 時,命令執行結束會在當前所在目錄生成 "sdblobtool.log" 日誌文件,當發生錯誤時,用戶可以進入日誌文件查看錯誤的詳細信息。

  1. 常見問題
    以下爲使用 sdblobtool 工具時常見問題。
    【巨杉數據庫SequoiaDB】巨杉⼯具系列之一 | ⼤對象存儲⼯具sdblobtool

其他問題可參照巨杉數據庫錯誤碼文檔進行對照
錯誤碼參考文檔:
http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190985-edition_id-0

四、總結
巨杉數據庫對象存儲通過多副本備份機制實現數據安全,並且具備更加靈活的⼀致性策略,支持全類型數據覆蓋,深度整合大數據體系組件。
sdblobtool 是一款用於管理 SequoiaDB 集合中大對象的工具,具有大對象(lob)的導出、導入、遷移的功能,使用便捷高效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章