「SequoiaDB」巨杉Tech|巨杉資料庫數據高性能數據導入遷移實踐

2021-01-11 分布式技術相關

SequoiaDB 一款自研金融級分布式資料庫產品,支持標準SQL和分布式事務功能、支持複雜索引查詢,兼容 MySQL、PGSQL、SparkSQL等SQL訪問方式。SequoiaDB 在分布式存儲功能上,較一般的大數據產品提供更多的數據切分規則,包括:水平切分、範圍切分、主子表切分和多維切分方式,用戶可以根據不用的場景選擇相應的切分方式,以提高系統的存儲能力和操作性能。

為了能夠提供簡單便捷的數據遷移和導入功能,同時更方便地與傳統資料庫在數據層進行對接,巨杉資料庫支持多種方式的數據導入,用戶可以根據自身需求選擇最適合的方式加載數據。

本文主要介紹巨杉資料庫集中常見的高性能數據導入方法,其中包括巨杉工具矩陣中的 Sdbimprt導入工具,以及使用SparkSQL, MySQL和原生API 接口進行數據導入,一共四種方式。

Sdbimprt工具導入

sdbimprt 是 SequoiaDB 的數據導入工具,是巨杉資料庫工具矩陣中重要組成之一,它可以將 JSON 格式或 CSV 格式的數據導入到 SequoiaDB 資料庫中。

http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1479195620-edition_id-0。

一、示例

下面簡單介紹一下如何使用 sdbimprt 工具將 csv 文件導入到 SequoiaDB 集合空間 site 的集合 user_info 中:

1. 數據文件名稱為「user.csv」,內容如下:

「Jack」,18,」China」

「Mike」,20,」USA」

2.導入命令

sdbimprt --hosts=localhost:11810 --type=csv --file=user.csv -c site -l user_info --fields='name string default "Anonymous", age int, country'

--hosts:指定主機地址(hostname:svcname)--type:導入數據格式,可以是csv或json--file:要導入的數據文件名稱-c(--csname):集合空間的名字-l(--clname):集合的名字--fields:指定導入數據的欄位名、類型、默認值

二、導入性能優化

下面說明使用 sdbimprt 工具時如何提升導入性能:

1. 使用 --hosts 指定多個節點

導入數據時,儘量指定多個 coord 節點的地址,用「,」分隔多個地址,sdbimprt 工具會把數據隨機發到不同機器上的 coord,起到負載均衡的作用(如圖1)。

2. 使用 --insertnum(-n) 參數

在導入數據時,使用 --insertnum(-n) 參數,可以實現批量導入,減少數據發送時的網絡交互的次數,從而加快數據導入速度。取值範圍為1~100000,默認值為100。

3. 使用 --jobs(-j) 參數

指定導入連接數(每個連接一個線程),從而實現多線程導入。

4. 切分文件

sdbimprt 在導入數據時支持多線程並發導入,但讀數據時是單線程讀取,隨著導入線程數的增加,數據讀取就成為了性能瓶頸。這種情況下,可以將一個大的數據文件切分成若干個小文件,然後每個小文件對應啟動一個 sdbimprt 進程並發導入,從而提升導入性能。如果集群內有多個協調節點,分布在不同的機器上,那麼可以在多臺機器上分別啟動 sdbimprt 進程,並且每個 sdbimprt 連接機器本地的協調節點,這樣數據發送給協調節點時避免了網絡傳輸(如圖2)。

5. 數據加載完後再建索引

對於導入數據量大,且索引多的表,建議先把索引刪除,待到數據導入完成後再重建索引,這樣有利於加快數據導入。在數據導入的過程中,如果目標表存在大量的索引,資料庫除了寫入數據外,還需要寫入索引文件,這會降低導入數據的性能。此方式對提升其它方式的數據導入速度同樣適用。

SparkSQL 導入

SparkSQL 可以方便的讀取多種數據源,通過 SequoiaDB 提供的 Spark 連接器,可以使用 SparkSQL 向 SequoiaDB 中寫入數據或從中讀取數據。

http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190712-edition_id-0。

一、示例

下面舉例說明如何將 HDFS 中的 csv 文件通過 SparkSQL 導入 SequoiaDB 集合中,以及如何優化導入性能。

1、將 HDFS 中 csv 文件映射成 spark 的臨時表

CREATE TABLE

hdfstable

USING

org.apache.spark.sql.execution.datasources.csv.CSVFileFormat

OPTIONS (

path "hdfs://usr/local/data/test.csv",

header "true"

)

2. 將 SDB 的集合映射成 spark 的臨時表

create temporary table sdbtable (

a string,

b int,

c date

)

using

com.sequoiadb.spark

OPTIONS

(

host 'sdbserver1:11810,sdbserver2:11810,sdbserver3:11810',

username 'sdbadmin',

password 'sdbadmin',

collectionspace 'sample',

collection 'employee',

bulksize '500'

);

3. 導入

sparkSession.sql("insert into sdbtable select * from hdfstable");

二、導入性能優化

SparkSQL 數據寫入有以下兩個參數可以優化:

host儘量指定多個 coord 節點的地址,用「,」分隔多個地址,數據會隨機發到不同 coord 節點上,起到負載均衡的作用。

bulksize該參數默認值為500,代表連接器向 SequoiaDB 寫入數據時,以 500 條記錄組成一個網絡包,再向 SequoiaDB 發送寫入請求,可以根據數據的實際大小調整 bulksize 的值。

MySQL 導入

SequoiaDB 以存儲引擎的方式與 MySQL 對接,使得用戶可以通過 MySQL 的 SQL 接口訪問 SequoiaDB 中的數據,並進行增、刪、改、查等操作。

http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1521595283-edition_id-302。

一、示例

使用 mysql 向 SequoiaDB 導入數據有以下幾種方式:

1. SQL 文件導入

mysql> source /opt/table1.sql

2. CSV 文件導入。mysql 中提供了 load data infile 語句來插入數據:

mysql> load data local infile '/opt/table2.csv' into table table2 fields terminated by ',' enclosed by '"' lines terminated by '\n';

二、導入性能優化

提升MySQL的導入性能有如下建議:

1. sequoiadb_conn_addr 指定多個地址

引擎配置參數「sequoiadb_conn_addr」儘量指定多個coord節點的地址,用「,」分隔多個地址,數據會隨機發到不同coord節點上,起到負載均衡的作用。

2. 開啟 bulkinsert

引擎配置參數「sequoiadb_use_bulk_insert」指定是否啟用批量插入,默認值為「ON」,表示啟用。配置參數「sequoiadb_bulk_insert_size」指定批量插入時每批的插入記錄數,默認值2000。可以通過調整bulkinsert size提高插入性能。

3. 切分文件

可以將一個大的數據文件切分為若干個小文件,然後為每個小文件啟動一個導入進程,多個文件並發導入,提高導入速度。

API 接口導入

SequoiaDB 提供了插入數據的 API 接口,即「insert」接口。insert 接口會根據傳入的參數不同而使用不同的插入方式,如果每次只傳入一條記錄,則接口也是將記錄逐條的發送到資料庫引擎,如果每次傳入一個包含多條記錄的集合或數組,則接口會一次性把這批記錄發送到資料庫引擎,最後通過引擎一條一條寫入資料庫中。

因此,insert 接口的兩種插入方式的區別在於發送數據到資料庫引擎這一過程,一次傳入多條記錄這種方式稱為「bulkinsert」,相對來說會減少數據發送時的網絡交互的次數,插入性能更佳。

小結

如何達到最大數據加載速度,是資料庫遷移/數據導入中常遇到的問題,本文從以下四個方面分別介紹了 SequoiaDB 數據遷移/導入過程中性能最優化的方法:

1)基於巨杉工具矩陣 sdbimprt 導入可以採用修改參數 host 指定多個節點、修改連接數、切分文件、修改參數 insertnum、重建索引等等對數據導入速度進行優化。

2)基於 MySQL 導入可以採用修改參數 host 地址及 bulksize 進行優化。

3)基於 Spark 導入可以採用指定多個協調節點IP、設置 bulkinsert 參數、切分文件進行優化。

4)基於API接口進行優化可以採用 bulkinsert 批量插入數據,減少網絡交互。

大家可以參考本文的數據導入方法進行實踐驗證,從傳統資料庫遷移到巨杉資料庫SequoiaDB。

相關焦點

  • 手機通訊錄怎麼導入到新手機?數據遷移,一鍵搞定
    換了新手機,第一件事少不了遷移數據,舊手機用得越久,重要信息就越多,除了微信聊天記錄,最重要的就是手機上的照片數據了,不過這次不說照片數據的遷移,今天跟大家分享的是手機通訊錄的遷移教程。第二種情況:不同品牌手機,換手機將通訊錄導入新手機中跨品牌遷移手機數據,我們需要藉助一個載體承載之前的手機數據,如QQ同步助手、百度雲網盤等工具均可以操作。以百度網盤為例。
  • 不同系統手機怎麼遷移數據?超詳細教程,3個方法輕鬆搞定
    可舊手機裡有照片、聯繫人等重要資料,如何將數據導入新手機成為很多小夥伴的困擾。同作業系統間的數據遷移比較簡單,官方也推出了眾多工具支持。安卓和iOS之間的數據遷移該如何進行,是很多朋友關心的。今天,就為大家帶來實用又簡單的iOS與安卓間數據遷移方法。1.
  • 蘋果新手機怎麼導入舊手機數據 iPhone新手機導入數據方法
    蘋果用戶在拿到新iPhone之後,第一件事情就是將舊的手機數據導入到新的手機上,那麼要如何將自己舊手機、尤其是安卓手機上的數據導入到新手機上呢,這裡我們來一起看下手機數據遷移的具體步驟流程。
  • 應對萬億數據上億並發!字節跳動的圖資料庫研發實踐
    原標題:應對萬億數據上億並發!字節跳動的圖資料庫研發實踐 bgkv 層的實現和功能有點類似內存資料庫,提供高性能的數據讀寫功能,其特點是: 接口不同:只提供點邊讀寫接口; 支持算子下推:通過把計算(算子)移動到存儲(bgkv)上,能夠有效提升讀性能; 舉例:比如某個大 V 最近一年一直在漲粉,bgkv 支持查詢最近的 100 個粉絲,則不必讀出所有的百萬粉絲。
  • 世界上最高的樹,5年可長高10米,比美國巨杉樹高出幾十米
    都說十年樹木百年樹人,但杏仁桉樹的生長速度快得令人咋舌,五六年的時間,就可以長高10米,如今,最高的澳洲杏仁桉樹,比美國巨杉樹還要高出幾十米!美國的雪曼將軍樹是出了名的,有幾千年的樹齡了,屬於巨杉的級別,是世界上最大最老的樹,高83.8米!但是就高度來看,澳洲杏仁桉樹高達156米,比這株美國巨杉樹還高出幾十米,是當之無愧的世界最高了。
  • 出海業務猛增迎挑戰,心動網絡資料庫雲端遷移之路
    PolarDB是一款關係型分布式資料庫,採用工業界得到廣泛驗證的計算與存儲分離架構,原生兼容MySQL,經歷了雙11大規模高並發、高可用、擴展性檢驗,又有基於中國市場的豐富實踐,成為包括心動網絡在內很多企業資料庫上雲的選擇。
  • 世界上最大的一棵巨杉質量是藍鯨的18.7倍,高是藍鯨體長的3.2倍
    圖1普通學生思路:第一個問題求的是150的18.7倍是多少?用乘法。答案:150×18.7=2805(噸)25.9×3.2=82.88(m)答:這棵巨杉重2805噸;高82.88米。
  • 企業級分布式高性能KV存儲資料庫,騰訊Tendis正式開源
    12月22日消息,騰訊宣布其企業級分布式高性能KV存儲資料庫Tendis開源。消息稱,Tendis是由騰訊互娛CROS DBA團隊和騰訊雲資料庫團隊自主設計和研發的分布式高性能KV存儲資料庫。
  • 把雲資料庫帶回家 阿里雲發布POLARDB BOX 高性能一體機
    【IT168 資訊】9月26日,2019杭州雲棲大會上,阿里雲宣布正式推出高性能資料庫一體機——POLARDB BOX,用戶部署在自有數據中心即可享受雲資料庫的便捷體驗,同時還為Oracle等傳統資料庫用戶提供一鍵遷移功能,最多節省95%遷移成本,更適合政企、交通、航運、金融等行業。
  • 騰訊宣布企業級分布式高性能KV存儲資料庫Tendis正式開源
    12月22日消息 近期,騰訊宣布企業級分布式高性能 KV 存儲資料庫 Tendis 正式開源。   Tendis 是騰訊互娛 CROS DBA 團隊 & 騰訊雲資料庫團隊自主設計和研發的分布式高性能 KV 存儲資料庫,兼容 Redis 核心數據結構與接口,可提供大容量、低成本、強持久化的資料庫能力,適用於兼容 Redis 協議、需要大容量且較高訪問性能的溫冷數據存儲場景。Tendis 目前已經被應用到騰訊內、外部大型項目中。
  • 網易雲、蝦米、酷狗、QQ 音樂、Apple Music、Spotify「歌單遷移指南」
    🟢 QQ 音樂QQ 音樂的導入功能在「我的 - 自建歌單」裡,僅支持連結形式。對於暫無版權的音樂,QQ 音樂會顯示「匹配失敗」,並且不會添加至歌單裡。不過,你可以在導入歌單前確認哪些歌曲無法導入。另外,QQ 音樂也正在測試「聽歌數據搬家工具」,目前僅對部分用戶開放。根據官方介紹中的支持「手機自帶音樂服務」來看,QQ 音樂將有可能支持 Apple Music 的數據導入。
  • 大數據之HBASE資料庫
    HBase(Hadoop Database)是一個高可靠性、高性能、面向列、可伸縮的分布式資料庫,典型的 NoSQL資料庫。2010年5月,Apache HBase 從 Hadoop脫離,成為 Apache 基金的頂級項目。
  • DTCC2020阿里雲李飛飛:雲原生分布式資料庫與數據倉庫系統點亮數據...
    簡介: 資料庫將面臨怎樣的變革?雲原生資料庫與數據倉庫有哪些獨特優勢?在日前的 DTCC 2020大會上,阿里巴巴集團副總裁、阿里雲資料庫產品事業部總裁、ACM傑出科學家李飛飛就《雲原生分布式資料庫與數據倉庫系統點亮數據上雲之路》進行了精彩分享。
  • Iphone數據如何遷移到華為手機看這一篇就夠了!
    手握iPhone想換 HUAWEI Mate 20,但又不知如何遷移數據到新機?來看看下面這兩大利器,助你快速將iPhone數據遷移到華為手機。連接成功後,選擇數據發送到新手機即可。 終極殺器--i換機大師r 手機克隆雖然使用方便,但是畢竟遷移的數據類型有限。接下來安利一款終極殺器--i 換機大師, 遷移數據類型覆蓋圖片、視頻、聯繫人、黑名單、簡訊、記事本、日曆、鬧鐘、書籤、語音信箱、應用列表、壁紙等十幾種,可以說是很全面了,馬上來看看如何使用吧!
  • 國產資料庫行業引領者 CirroData亮相第十一屆中國資料庫技術大會
    會議以「架構革新,高效可控」為主題,邀請了國內資料庫領域的頂級專家圍繞數據架構、AI與大數據、傳統企業資料庫實踐和國產開源資料庫等內容展開分享和討論。東方國信CirroData資料庫受邀在會上發表題為《金融行業企業級數據架構變革規劃及落地實踐》的演講,並接受記者採訪。會議首日,東方國信金融事業部技術總監陳志剛發表演講。
  • 尹博學:百度分布式資料庫實踐與挑戰
    【IT168 技術】2012資料庫技術大會於4月13日在北京永泰朋福.喜來登酒店隆重召開。本次大會已經是IT168、ITPUB、IXPUB、ChinaUnix聯合主辦的第三屆資料庫技術會議。大會將針對大數據架構設計、資料庫安全、分布式資料庫、商業智能、NoSQL、Hadoop等多個重點話題進行深入探討。
  • 往十年不忘初心,新十年不負韶華丨完整回顧2020數據技術嘉年華
    04用戶實踐:數據驅動的業務實踐來自真實行業用戶的實踐分享往往是最受關注和歡迎的。阿里雲新一代雲原生資料庫體系100%兼容生態,客戶業務無需修改,可以直接上雲,所有的內核都經過雙十一高並發與穩定性考驗,完全能夠幫助企業級客戶從傳統資料庫平滑遷移到雲資料庫。
  • Apache Doris 在 WeLab實時大數據平臺的應用實踐
    WeLab擁有獨創的風險管理技術,可以高效地整合和分析移動端大數據,並對用戶的風險進行定級,高效地輸出決策。為了實現秒級決策,我們對數據處理的實時性,準確性和安全性都有很高的要求。Apache Doris資料庫就是在這樣的背景下被引入到我們大數據平臺中來的,並最終成為了我們大數據平臺的重要基石之一。
  • 蘋果換機數據遷移?新舊iPhone資料遷移僅靠這三招!
    蘋果換機數據怎麼遷移?蘋果每年都會推出一部新的iPhone,有些小夥伴在更換新iPhone後,需要將舊手機中的資料遷移到新手機上去,有什麼簡單又快捷的方法呢?今天小編就給大家總結了三個,一起來看看吧。雲備份恢復」中選擇後者,登錄與舊手機同一個Apple ID,即可進行數據遷移。