華為云數(shù)據(jù)庫(kù)GaussDB(for Cassandra)揭秘:高性能低成本是什么樣的體驗(yàn)?
?
在我們的日常理念中,追求性價(jià)比是最為常見(jiàn)的,但是你知道購(gòu)買低配置還能享受高性能、低延時(shí)、超低價(jià)的數(shù)據(jù)庫(kù)有哪些嗎?今天我們就用數(shù)據(jù)說(shuō)話,帶你深入了解GaussDB(for Cassandra)挑戰(zhàn)高性價(jià)比!
眾所周知,有數(shù)據(jù)的地方就需要用數(shù)據(jù)庫(kù),GaussDB(for Cassandra)最擅長(zhǎng)在物流、內(nèi)容分發(fā)、視頻直播等海量數(shù)據(jù)的場(chǎng)景中,這樣才能發(fā)揮它的特長(zhǎng)。
本次圍繞GaussDB(for Cassandra)新推出的2U8G小規(guī)格做一組測(cè)試并與自建ECS+開(kāi)源Cassandra 8U32G進(jìn)行性能和成本上的對(duì)比,快來(lái)和我一探究竟吧。
1、 客戶端壓測(cè)工具
測(cè)試工具
版本
參考地址
YCSB
0.15.0
https://github.com/brianfrankcooper/ycsb/tree/0.15.0/cassandra
2、 數(shù)據(jù)模型
YCSB業(yè)務(wù)模型
業(yè)務(wù)負(fù)載
負(fù)載說(shuō)明
workload-read-mostly
95% read, 5% update
讀95%,更新5%
workload-read-write-combination
50% update, 50% read
更新50%,讀50%
workload-mixed-operational-analytical
65% read, 25% update, 10% insert
讀65%,更新25%,寫(xiě)10%
workload-insert-mostly
90% insert, 10% read
寫(xiě)90%,讀10%
?
3、 部署數(shù)據(jù)庫(kù)
3.1 華為云購(gòu)買GaussDB(for Cassandra)
本次對(duì)比測(cè)試,采用華為云GaussDB(for Cassandra)2U8G規(guī)格,部署3個(gè)節(jié)點(diǎn),申請(qǐng)100GB存儲(chǔ)空間。具體操作如下:

備注:GaussDB(for Cassandra)采用DFV共享存儲(chǔ)方案,存儲(chǔ)層已實(shí)現(xiàn)三副本,該申請(qǐng)存儲(chǔ)空間為業(yè)務(wù)數(shù)據(jù)可使用的空間。


確認(rèn)規(guī)格/節(jié)點(diǎn)數(shù)/存儲(chǔ)空間,約8分鐘即可創(chuàng)建完成。
創(chuàng)建實(shí)例后,每個(gè)業(yè)務(wù)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)系統(tǒng)容器,掛載2個(gè)磁盤(pán)(20G/40G),作為操作系統(tǒng)盤(pán)和日志盤(pán)。

3.2???? 公有云ECS部署開(kāi)源Cassandra
本次對(duì)比測(cè)試,開(kāi)源Cassandra采用購(gòu)買ECS,自行部署Cassandra開(kāi)源軟件場(chǎng)景,同樣部署3個(gè)節(jié)點(diǎn),每個(gè)ECS在申請(qǐng)60GB的系統(tǒng)盤(pán)/日志盤(pán)的基礎(chǔ)上,再額外申請(qǐng)100GB數(shù)據(jù)盤(pán),作為Cassandra數(shù)據(jù)存儲(chǔ)使用。
?
3.2.1????? 公有云購(gòu)買ECS虛擬機(jī)
選擇8U32G ECS規(guī)格,60GB的系統(tǒng)盤(pán)/日志盤(pán),100G數(shù)據(jù)盤(pán)。

3.2.2????? 安裝與操作開(kāi)源Cassandra
ECS創(chuàng)建好后,將開(kāi)源Cassandra搭建到ECS上,具體操作步驟參考以下鏈接地址
4、 操作步驟
4.1 創(chuàng)建表模型
創(chuàng)建keyspace:
create keyspace ycsb WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 3 };
進(jìn)入keyspace:
use ycsb;???????????????????????????????????????????????????????????????????????????????????
創(chuàng)建usertable:
create table usertable (
y_id varchar primary key,
??? field0 varchar,
??? field1 varchar,
??? field2 varchar,
??? field3 varchar,
??? field4 varchar,
??? field5 varchar,
??? field6 varchar,
??? field7 varchar,
??? field8 varchar,
field9 varchar);
4.2 數(shù)據(jù)準(zhǔn)備階段
nohup ./bin/ycsb load cassandra-cql -P workloads/workload-insert-mostly ?-threads $THREAD_COUNT -s > $LOG_FILE 2>&1 &????????????????????????????????????????
4.3 YCSB四種業(yè)務(wù)模型壓測(cè)
?
YCSB業(yè)務(wù)模型
業(yè)務(wù)負(fù)載
壓測(cè)語(yǔ)句
workload-read-mostly
95% read, 5% update
nohup ./bin/ycsb load cassandra-cql -P ? workloads/workload-read-mostly -threads $THREAD_COUNT -s > $LOG_FILE ? 2>&1 &
workload-read-write-combination
50% update, 50% read
nohup ./bin/ycsb load cassandra-cql -P workloads/workload-read-write-combination ? -threads $THREAD_COUNT -s > $LOG_FILE 2>&1 &
workload-mixed-operational-analytical
65% read, 25% update, 10% insert
nohup ./bin/ycsb load cassandra-cql -P ? workloads/workload-mixed-operational-analytical -threads $THREAD_COUNT -s ? > $LOG_FILE 2>&1 &
workload-insert-mostly
90% insert, 10% read
nohup ./bin/ycsb load cassandra-cql -P ? workloads/workload-insert-mostly?-threads $THREAD_COUNT -s > ? $LOG_FILE 2>&1 &
5、 YCSB四種業(yè)務(wù)模型測(cè)試結(jié)果
5.1???? 測(cè)試結(jié)果指標(biāo)說(shuō)明
OPS:每秒操作數(shù)
insert_Lat(us):每次insert操作平均時(shí)延(微秒)
insert95Lat(us):95%的insert操作在多少微秒內(nèi)
insert99Lat(us):99%的insert操作在多少微秒內(nèi)
update_Lat(us):每次update操作平均時(shí)延(微秒)
update95Lat(us):95% update操作的時(shí)延在多少微秒以內(nèi)
update99Lat(us):99% update操作的時(shí)延在多少微秒以內(nèi)
read_Lat(us):每次read操作的平均時(shí)延(微秒)
read95Lat(us):95% read操作的時(shí)延在多少微秒以內(nèi)
read99Lat(us):99% read操作的時(shí)延在多少微秒以內(nèi)
5.2 GaussDB(for Cassandra) 2U8G測(cè)試結(jié)果
業(yè)務(wù)負(fù)載
OPS
insert_Lat(us)
insert95Lat(us)
insert99Lat(us)
update_Lat(us)
update95Lat(us)
update99Lat(us)
read_Lat (us)
read95Lat (us)
read99Lat(us)
95% read, 5% update
8053
/
/
/
1506
1581
1653
2031
2209
2675
50% update, 50% read
9640
/
/
/
1446
1521
1598
2242
2847
3345
65% read, 25% update, 10% insert
9598
1467
1526
1623
1438
1494
1584
2073
2597
3105
90% insert, 10% read
9825
1524
1553
2105
/
/
/
2487
3131
4407
5.3 自建ECS+開(kāi)源Cassandra 8U32G測(cè)試結(jié)果
經(jīng)測(cè)試,開(kāi)源Cassandra自建8U32G與GaussDB(for Cassandra)使用GaussDB(for Cassandra) 2U8G性能上持平,具體測(cè)試結(jié)果如下:
業(yè)務(wù)負(fù)載
OPS
insert_Lat(us)
insert95Lat(us)
insert99Lat(us)
update_Lat(us)
update95Lat(us)
update99Lat(us)
read_Lat(us)
read95Lat(us)
read99Lat(us)
95% read, 5% update
8045
/
/
/
1349
1395
1576
2014
2121
7327
50% update, 50% read
9895
/
/
/
1342
1379
1553
2379
2918
3325
65% read, 25% update, 10% ? insert
9616
1386
1422
1596
1354
1392
1572
2273
2689
3717
90% insert, 10% read
9017
1441
1406
2009
/
/
/
4620
4511
67775
6、 擴(kuò)容操作
華為云GaussDB(for Cassandra)采用存算分離架構(gòu),在計(jì)算擴(kuò)容和存儲(chǔ)擴(kuò)容方面,無(wú)需進(jìn)行數(shù)據(jù)搬遷,可以做到秒級(jí)運(yùn)維。
6.1 擴(kuò)容GaussDB(for Cassandra) 實(shí)例
6.1.1????? 計(jì)算擴(kuò)容
在實(shí)例管理界面,選中添加節(jié)點(diǎn),進(jìn)入如下頁(yè)面,可以選擇本次擴(kuò)容計(jì)算的節(jié)點(diǎn)個(gè)數(shù)。本次擴(kuò)容以1個(gè)2U8G節(jié)點(diǎn)為例,具體如下:

6.1.2????? 存儲(chǔ)擴(kuò)容
在集群基本信息頁(yè)面,點(diǎn)擊磁盤(pán)擴(kuò)容,即可對(duì)磁盤(pán)空間進(jìn)行擴(kuò)容。

6.2 擴(kuò)容自建ECS+開(kāi)源Cassandra
自建Cassandra在擴(kuò)容計(jì)算和存儲(chǔ)期間,需要自行購(gòu)買ECS計(jì)算節(jié)點(diǎn),以及對(duì)應(yīng)超高IO存儲(chǔ)。手工修改節(jié)點(diǎn)配置、新加集群以及搬遷數(shù)據(jù)等。
6.2.1????? 計(jì)算擴(kuò)容
自建Cassandra擴(kuò)容計(jì)算,如上述購(gòu)買多1臺(tái)ECS虛擬機(jī),掛載磁盤(pán)為60GB的系統(tǒng)盤(pán)/日志盤(pán)。時(shí)間推算需要30分鐘。

6.2.2????? 存儲(chǔ)擴(kuò)容
自建Cassandra擴(kuò)容存儲(chǔ),在原掛載數(shù)據(jù)盤(pán)的基礎(chǔ)上進(jìn)行擴(kuò)容。以上述實(shí)例為例,3個(gè)節(jié)點(diǎn)每個(gè)ECS的數(shù)據(jù)盤(pán)從100GB擴(kuò)展到200GB,一共擴(kuò)容300GB(3*100GB)。

開(kāi)源存儲(chǔ)磁盤(pán)擴(kuò)容按32Mbps/s的遷移速度算每秒為12MB,每分鐘處理0.703GB的數(shù)據(jù),遷移100GB的數(shù)據(jù)需要約2小時(shí)(100/0.703=142.2分鐘)。
7、 總結(jié)
7.1 性價(jià)比對(duì)比
從性價(jià)比看,華為GaussDB(for Cassandra)在相同存儲(chǔ)容量以及性能表現(xiàn)下,費(fèi)用僅為開(kāi)源自建Cassandra的63%,具體如下:
?
?
對(duì)比項(xiàng)
ECS+開(kāi)源Cassandra
GaussDB(for Cassandra)
規(guī)格
8U32G * 3節(jié)點(diǎn)
2U8G * 3節(jié)點(diǎn)
存儲(chǔ)空間
100GB
100GB
每小時(shí)費(fèi)用
¥9.222
¥5.62
包年費(fèi)用
¥33,588
¥21,034
95% read, 5% update
OPS
8045
8053
50% update, 50% read
OPS
9895
9640
65% read, 25% update, 10% insert
OPS
9616
9598
90% insert, 10% read
OPS
9017
9825
相同的數(shù)據(jù)空間,華為云GaussDB(for Cassandra)僅需要開(kāi)源Cassandra 1/3的存儲(chǔ)價(jià)格,享有高性能及更多的運(yùn)維能力加持,享受非比尋常的體驗(yàn)。
7.2 運(yùn)維能力對(duì)比
以典型的計(jì)算擴(kuò)容和存儲(chǔ)擴(kuò)容場(chǎng)景為例,分析擴(kuò)容100G存儲(chǔ)以及擴(kuò)容1個(gè)計(jì)算節(jié)點(diǎn)場(chǎng)景,從費(fèi)用/時(shí)長(zhǎng)方面做出對(duì)比,可看出用華為云GaussDB(for Cassandra),在費(fèi)用和操作時(shí)長(zhǎng)方面均有優(yōu)勢(shì),擴(kuò)容時(shí)長(zhǎng)方面更是秒級(jí)擴(kuò)容,一眼可見(jiàn)華為云GaussDB(for Cassandra)高擴(kuò)容能力,具體如下:
運(yùn)維場(chǎng)景
維度
ECS+開(kāi)源Cassandra 8U32G
GaussDB(for Cassandra) 2U8G
存儲(chǔ)擴(kuò)容
包年費(fèi)用
¥3,000
¥2,500
擴(kuò)容時(shí)長(zhǎng)
約2小時(shí)
10秒
計(jì)算擴(kuò)容
包年費(fèi)用
¥10,196
¥6,178
擴(kuò)容時(shí)長(zhǎng)
30分鐘
8分鐘
綜上所述,用開(kāi)源Cassandra 63%的價(jià)格,享受一樣的性能,存儲(chǔ)實(shí)現(xiàn)秒級(jí)擴(kuò)容,享有更好的運(yùn)維能力,使用更好的架構(gòu)最大化的節(jié)省成本,華為云GaussDB(for Cassandra)值得你擁有。
?
?