中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

如何在建設(shè)銀行網(wǎng)站查驗(yàn)回單全國免費(fèi)發(fā)布信息平臺(tái)

如何在建設(shè)銀行網(wǎng)站查驗(yàn)回單,全國免費(fèi)發(fā)布信息平臺(tái),做網(wǎng)站公司平臺(tái),陽江網(wǎng)站制作公司數(shù)據(jù)分片(Sharding)是分布式數(shù)據(jù)庫分而治之 (Divide And Conquer) 這一設(shè)計(jì)思想的體現(xiàn)。過去的單機(jī)數(shù)據(jù)庫在大數(shù)據(jù)量下往往面臨存儲(chǔ)和 IO 的限制,而分布式數(shù)據(jù)庫則通過數(shù)據(jù)劃分的規(guī)則,將數(shù)據(jù)打散分布至不同的機(jī)器或節(jié)點(diǎn)上&#xf…

數(shù)據(jù)分片(Sharding)是分布式數(shù)據(jù)庫分而治之 (Divide And Conquer) 這一設(shè)計(jì)思想的體現(xiàn)。過去的單機(jī)數(shù)據(jù)庫在大數(shù)據(jù)量下往往面臨存儲(chǔ)和 IO 的限制,而分布式數(shù)據(jù)庫則通過數(shù)據(jù)劃分的規(guī)則,將數(shù)據(jù)打散分布至不同的機(jī)器或節(jié)點(diǎn)上,形成分布式存儲(chǔ),因此突破了單機(jī)存儲(chǔ)空間和 IO 的瓶頸、使庫表數(shù)據(jù)量可以無限拓展。

數(shù)據(jù)分片主要有范圍分片或哈希分片這兩種方式,而在實(shí)際數(shù)據(jù)庫的實(shí)現(xiàn)中,往往呈現(xiàn)為分區(qū)和分桶兩種形式。分區(qū)一般是按照時(shí)間或其他連續(xù)值對(duì)數(shù)據(jù)進(jìn)行劃分,在執(zhí)行查詢操作時(shí)可以通過分區(qū)裁剪過濾不必要的范圍掃描,提升執(zhí)行效率,同時(shí)也使得對(duì)分區(qū)數(shù)據(jù)的增刪改等管理操作更為便捷。而分桶則是按照某個(gè)關(guān)鍵字執(zhí)行哈希運(yùn)算,將相同哈希值的數(shù)據(jù)放到一起,這樣可以有效定位數(shù)據(jù)、避免數(shù)據(jù)傾斜。

在 Apache Doris 中,同樣也遵從一定的數(shù)據(jù)分布規(guī)則。數(shù)據(jù)以關(guān)系表(Table)的形式進(jìn)行呈現(xiàn),會(huì)依次按照先分區(qū)(Partition)、再分桶(Bucket)的方式劃分,最終在同一個(gè)分桶中的數(shù)據(jù)會(huì)形成數(shù)據(jù)分片(Tablet)。Tablet 是 Apache Doris 中多副本高可用、集群間數(shù)據(jù)調(diào)度與均衡的最小物理存儲(chǔ)單位。

圖1:Table-Partition-Tablet 之間的關(guān)系

# ?現(xiàn)狀與問題

在 Doris 中,分區(qū)與分桶是如何創(chuàng)建的?我們以一個(gè)網(wǎng)站站點(diǎn)的建表實(shí)例說明分區(qū)與分桶的創(chuàng)建方式,該網(wǎng)站的站點(diǎn)建表語句如下:

--?該表記錄了某個(gè)時(shí)間點(diǎn),在某個(gè)站點(diǎn)上各個(gè)用戶的pv數(shù)據(jù)
CREATE?TABLE?demo.test_tbl(sdate??????DATE,??--?日期site???????INT,??--?站點(diǎn)idcity???????VARCHAR(64),??--?城市user???????VARCHAR(32)??DEFAULT?'',?--?用戶名pv?????????BIGINT?--?pv量
)?ENGINE=olap?DUPLICATE?KEY(sdate,?site,?city)
[PARTITION_DESC]
[BUCKET_DESC]
PROPERTIES?("replication_num"?=?"1");

其中 [PARTITION_DESC] 表示創(chuàng)建分區(qū)的詳細(xì)語句,[BUCKET_DESC] 表示創(chuàng)建分桶的語句。

?? 創(chuàng)建分區(qū)

Apache Doris 支持兩種分區(qū)形式,List Partition 與 Range Partition。

List Partition

List Partition 相當(dāng)于對(duì)分區(qū)的列值進(jìn)行枚舉,因此選擇的分區(qū)列最好是有區(qū)分度的可枚舉值,例如本例中的 city。根據(jù) city 列的枚舉值創(chuàng)建多個(gè) List Partition,則?PARTITION_DESC可以寫為:

--?以city作為分區(qū)列,創(chuàng)建華北、東北、華中、西南等分區(qū)
PARTITION?BY?LIST(city)
(PARTITION?`p_huabei`?VALUES?IN?("beijing",?"tianjin",?"shijiazhuang"),PARTITION?`p_dongbei`?VALUES?IN?("shenyang",?"dalian"),PARTITION?`p_huazhong`?VALUES?IN?("wuhan",?"changsha")PARTITION?`p_xinan`?VALUES?IN?("chengdu",?"chongqing")
)

Range Partition

創(chuàng)建 Range partition 一般使用時(shí)間列,Range Partition 又可以分為靜態(tài)和動(dòng)態(tài)兩種方式:

- 靜態(tài) Range Partition

此類 Partition 的創(chuàng)建會(huì)生成一個(gè)左閉右開的區(qū)間,定義一個(gè)分區(qū)只需要指定右邊界,該分區(qū)的左邊界由上一個(gè)分區(qū)的右邊界確定,PARTITION_DESC可以寫為:

--?以sdate這個(gè)時(shí)間列作為分區(qū)列,
--?日期處于[min, 2023-01-01)的數(shù)據(jù),都放到名為p2022的分區(qū)下;
--?日期處于[2023-01-01, 2023-01-02)的數(shù)據(jù),都放到名為p20230101的分區(qū)下;
--?日期處于[2023-01-02, 9999-12-31)的數(shù)據(jù),都放到名為pmax的分區(qū)下;
PARTITION?BY?RANGE(sdate)
(PARTITION?`p2022`?VALUES?LESS?THAN?("2023-01-01"),PARTITION?`p20230101`?VALUES?LESS?THAN?("2023-01-02"),PARTITION?`pmax`?VALUES?LESS?THAN?("9999-12-31")
)

可以看出,p20230101 這個(gè)分區(qū)的左邊界由 p2022 分區(qū)的右邊界確定,而 pmax 的左邊界由 p20230101 的右邊界確定。需注意的是,此處為了舉例說明動(dòng)態(tài)分區(qū),使用了一個(gè)很大的邊"9999-12-31",實(shí)際業(yè)務(wù)中很少會(huì)直接創(chuàng)建從 2023-01-02 到 9999-12-31 的分區(qū)。

- 動(dòng)態(tài) Range Partition

上述靜態(tài)的分區(qū)需要手動(dòng)指定邊界,分區(qū)個(gè)數(shù)太多使用起來也不方便。動(dòng)態(tài) Range Partition 幫助我們解決了這個(gè)問題,只需指定一些分區(qū)的參數(shù)即可動(dòng)態(tài)創(chuàng)建,PARTITION_DESC?相對(duì)更簡(jiǎn)單,只需指定哪個(gè)列作為分區(qū)列即可:

PARTITION?BY?RANGE(sdate)()

剩余參數(shù)需要在PARTITION進(jìn)行配置:

PROPERTIES?("dynamic_partition.enable"?=?"true","dynamic_partition.time_unit"?=?"DAY","dynamic_partition.start"?=?"-30","dynamic_partition.end"?=?"3","dynamic_partition.prefix"?=?"p","dynamic_partition.create_history_partition"="true","replication_num"?=?"1"
);

? 動(dòng)態(tài)分區(qū)參數(shù)說明如下:

?? 創(chuàng)建分桶

分桶在物理層面即數(shù)據(jù)分片(Tablet)。在數(shù)據(jù)表完成分區(qū)后,指定部分列作為分桶列,將這些列數(shù)據(jù)中相同哈希值的數(shù)據(jù)合到一起,形成了 Tablet。一個(gè)表中?Tablet 總數(shù)量 = 分區(qū)數(shù)(Partition num)x 分桶數(shù)(Bucket num)x 數(shù)據(jù)副本數(shù)(Replication_num)。

[BUCKET_DESC] 語句非常簡(jiǎn)單,只需要一句:

DISTRIBUTED?BY?HASH(site)?BUCKETS?20

此時(shí)指定以 site 列的哈希值作為分桶,并且分桶個(gè)數(shù)設(shè)置為 20 個(gè),需要注意的是這里的 20 僅作為示例,合適的分桶個(gè)數(shù)需要根據(jù)分區(qū)大小來確定。實(shí)際上單個(gè)分桶即 Tablet 的數(shù)據(jù)量理論上沒有上下界,但建議在?1GB - 10GB?的范圍內(nèi),即假設(shè)分區(qū)大小為 20GB,那么分桶個(gè)數(shù)設(shè)置為 10-20 個(gè)是合適的。

?? 不足與思考

從以上對(duì)分區(qū)分桶的介紹,相信有不少用戶和讀者仍能發(fā)現(xiàn)其中一些不足之處:

  • 分區(qū)數(shù)量過多的情況下,使用 List Partition 或者靜態(tài) Range Partition 會(huì)使得?SQL 較為繁瑣,編寫起來費(fèi)時(shí)費(fèi)力

  • 若是使用動(dòng)態(tài) Range Partition,則需要掌握多個(gè)參數(shù),使用方式不友好且學(xué)習(xí)成本較高;而當(dāng)存在大量歷史冷數(shù)據(jù)來說,動(dòng)態(tài) Range Partition 只能指定單一粒度,無法靈活組合不同的分區(qū)粒度

  • 分桶個(gè)數(shù)的設(shè)置十分依賴用戶對(duì) Apache Doris 數(shù)據(jù)分布機(jī)制和業(yè)務(wù)數(shù)據(jù)本身的理解,使用門檻較高。不合理的分桶設(shè)置將對(duì)系統(tǒng)性能和穩(wěn)定性造成一定程度沖擊:分桶數(shù)太多將導(dǎo)致單個(gè) Tablet 的數(shù)據(jù)量過小,數(shù)據(jù)聚合效果不佳、查詢性能不能得到有效發(fā)揮,并且元數(shù)據(jù)管理壓力大;個(gè)數(shù)太少則單個(gè) Tablet 包含的數(shù)據(jù)量過大,不利于副本的遷移、補(bǔ)齊,且會(huì)增加 Schema Change 或者 Rollup 操作失敗重試的代價(jià)。

# ?批量分區(qū)與Auto Bucket的設(shè)計(jì)與實(shí)現(xiàn)

克服數(shù)據(jù)庫的復(fù)雜性是 Apache Doris 一直追求的目標(biāo)之一,針對(duì)以上分區(qū)分桶存在的易用性問題,在 Apache Doris 最新的版本中已經(jīng)得到解決。

在?Apache Doris 1.2.1 版本中,我們新增了批量創(chuàng)建分區(qū)功能,簡(jiǎn)潔的語法和靈活的使用方式讓批量創(chuàng)建歷史分區(qū)更加得心應(yīng)手;而針對(duì)分桶設(shè)置帶來的學(xué)習(xí)成本,Apache Doris 在即將發(fā)布的 1.2.2 版本中新增了 Auto Bucket 自動(dòng)分桶推算功能,分桶個(gè)數(shù)不再依賴于人工設(shè)置,通過規(guī)則的智能計(jì)算即可保證合理的數(shù)據(jù)劃分,降低用戶學(xué)習(xí)成本的同時(shí)還可以最大化提升用戶開發(fā)效率。

?? 批量創(chuàng)建分區(qū)

批量創(chuàng)建分區(qū)功能在前期充分調(diào)研了用戶的需求,本著簡(jiǎn)潔、強(qiáng)大、易用的設(shè)計(jì)目標(biāo),將設(shè)計(jì)核心鎖定在幾個(gè)要素中:

  • 時(shí)間區(qū)間范圍(會(huì)考慮開閉問題)

  • 時(shí)間跨度(即每個(gè)分區(qū)的時(shí)間維度的大小)

  • 時(shí)間單位(年、月、日、時(shí)、周等)

結(jié)合前面提到的網(wǎng)站站點(diǎn)模型,假設(shè)其數(shù)據(jù)包含從幾年前直到現(xiàn)在的全量信息,想要將十年內(nèi)的數(shù)據(jù)按每一天一個(gè)分區(qū)進(jìn)行創(chuàng)建。在批量分區(qū)功能中,PARTITION_DESC只需要一句,并且不用在PARTITION中設(shè)置分區(qū)相關(guān)參數(shù):

--?當(dāng)然,分區(qū)創(chuàng)建個(gè)數(shù)受到max_multi_partition_num參數(shù)控制,該值默認(rèn)為4096,有需求可以修改
PARTITION?BY?RANGE(sdate)
(FROM?("2013-01-01")?TO?("2023-01-01")?INTERVAL?1?DAY
)從這個(gè) case 來看,批量分區(qū)功能的語法更為簡(jiǎn)潔,但該功能的易用性和靈活性遠(yuǎn)不止于此。

從這個(gè) case 來看,批量分區(qū)功能的語法更為簡(jiǎn)潔,但該功能的易用性和靈活性遠(yuǎn)不止于此。

假設(shè)有另一批數(shù)據(jù):公司前幾年的數(shù)據(jù)量較大且為冷數(shù)據(jù),故可以將一年的數(shù)據(jù)合到一個(gè)分區(qū)里面;而后來因?yàn)闃I(yè)務(wù)迅速發(fā)展,需要將每一月的數(shù)據(jù)作為一個(gè)分區(qū);隨著公司業(yè)務(wù)進(jìn)一步發(fā)展,按月分區(qū)已經(jīng)不能滿足快速增長(zhǎng)的數(shù)據(jù)需求,需要按周進(jìn)行分區(qū);……;時(shí)至今日,公司每天產(chǎn)生海量數(shù)據(jù),可能需要按小時(shí)分區(qū)才能符合需求。根據(jù)這個(gè)場(chǎng)景,不難寫出批量分區(qū)創(chuàng)建的?PARTITION_DESC:

--?此處需要注意,如果要使用小時(shí)級(jí)別的分區(qū),則分區(qū)列必須是datetime類型
--?同樣的,分區(qū)創(chuàng)建個(gè)數(shù)也受到max_multi_partition_num參數(shù)控制
PARTITION?BY?RANGE(sdate)
(FROM?("2000-01-01")?TO?("2021-01-01")?INTERVAL?1?YEAR,FROM?("2021-01-01")?TO?("2022-01-01")?INTERVAL?1?MONTH,FROM?("2022-01-01")?TO?("2023-01-01")?INTERVAL?1?WEEK,FROM?("2023-01-01")?TO?("2023-02-01")?INTERVAL?1?DAY,FROM?("2023-02-01?00")?TO?("2099-12-31?23")?INTERVAL?1?HOUR
)

除了上述不同時(shí)間粒度的分區(qū)可以靈活組合外,還可以將靜態(tài) Range Partition 和批量分區(qū)功能結(jié)合起來。例如需要將該公司 2022-01-01 到 2023-01-01 的數(shù)據(jù)按天創(chuàng)建分區(qū),2022-01-01 之前的數(shù)據(jù)歸到一個(gè)名為"pold"分區(qū)中,我們可以將靜態(tài)分區(qū)和批量分區(qū)組合起來,PARTITION_DESC如下:

PARTITION?BY?RANGE(sdate)
(PARTITION?pold?VALUES?LESS?THAN?("2022-01-01"),FROM?("2022-01-01")?TO?("2023-01-01")?INTERVAL?1?DAY
)

批量分區(qū)創(chuàng)建功能支持不同時(shí)間粒度,其語法簡(jiǎn)潔有力,且各種類型分區(qū)可以靈活組合,在面對(duì)大量歷史分區(qū)和部分特殊分區(qū)的需求時(shí),該功能顯得游刃有余,可以極大提高開發(fā)效率。

批量分區(qū)功能 PR:https://github.com/apache/doris/pull/13772

?? Auto Bucket 自動(dòng)分桶推算

以往創(chuàng)建分桶時(shí)需要手動(dòng)設(shè)定分桶數(shù),而自動(dòng)分桶推算功能是 Apache Doris 可以動(dòng)態(tài)地推算分桶個(gè)數(shù),使得分桶數(shù)始終保持在一個(gè)合適范圍內(nèi),讓用戶不再操心桶數(shù)的細(xì)枝末節(jié)。

首先說明一點(diǎn),為了方便闡述該功能,該部分會(huì)將桶拆分為兩個(gè)時(shí)期的桶,即初始分桶以及后續(xù)分桶。(這里的初始和后續(xù)只是本文為了描述清楚該功能而采用的術(shù)語,Apache Doris 分桶本身沒有初始和后續(xù)之分)

從上文中創(chuàng)建分桶一節(jié)我們知道,BUCKET_DESC非常簡(jiǎn)單,但是需要指定分桶個(gè)數(shù);而在自動(dòng)分桶推算功能上,BUCKET_DESC的語法直接將分桶數(shù)改成"Auto",并新增一個(gè) Properties 配置即可:

--?舊版本指定分桶個(gè)數(shù)的創(chuàng)建語法
DISTRIBUTED?BY?HASH(site)?BUCKETS?20--?新版本使用自動(dòng)分桶推算的創(chuàng)建語法
DISTRIBUTED?BY?HASH(site)?BUCKETS?AUTO
properties("estimate_partition_size"?=?"100G")

新增的配置參數(shù)estimate_partition_size表示一個(gè)單分區(qū)的數(shù)據(jù)量。該參數(shù)是可選的,如果沒有給出則 Doris 會(huì)將?estimate_partition_size?的默認(rèn)值取為 10GB。

從上文中已經(jīng)得知,一個(gè)分桶在物理層面就是一個(gè)Tablet,為了獲得最好的性能,建議 Tablet 的大小在1GB - 10GB?的范圍內(nèi)。那么自動(dòng)分桶推算是如何保證 Tablet 大小處于這個(gè)范圍內(nèi)的呢?總結(jié)起來不外乎幾個(gè)原則:

  • 若是整體數(shù)據(jù)量較小,則分桶數(shù)不要設(shè)置過多

  • 若是整體數(shù)據(jù)量較大,則應(yīng)使桶數(shù)跟總的磁盤塊數(shù)相關(guān),充分利用每臺(tái) BE 機(jī)器和每塊磁盤的能力

初始分桶推算

從原則出發(fā),理解自動(dòng)分桶推算功能的詳細(xì)邏輯就變得簡(jiǎn)單了:

首先來看初始分桶:

1. 先根據(jù)數(shù)據(jù)量得出一個(gè)桶數(shù) N。首先使用?estimate_partition_size?的值除以 5(按文本格式存入 Doris 中有 5 比 1 的數(shù)據(jù)壓縮比計(jì)算),得到的結(jié)果為:

    • < 100MB,則取 N=1

    • < 1GB,則取 N=2

    • >= 1GB,則每一個(gè) GB 一個(gè)分桶

2. 根據(jù) BE 節(jié)點(diǎn)數(shù)以及每個(gè) BE 節(jié)點(diǎn)的磁盤容量,計(jì)算出桶數(shù) M。其中每個(gè) BE 節(jié)點(diǎn)算 1,每 50G 的磁盤容量算 1,那么 M 的計(jì)算規(guī)則為:M = BE 節(jié)點(diǎn)數(shù) *( 一塊磁盤塊大小 / 50GB) * 磁盤塊數(shù),例如有 3 臺(tái) BE,每臺(tái) BE 都有 4 塊 500GB 的磁盤,那么 M = 3 * (500GB / 50GB) * 4 = 120

3. 得到最終的分桶個(gè)數(shù)計(jì)算邏輯:

    • 先計(jì)算一個(gè)中間值 x = min(M, N, 128),

    • 如果 x < N并且x < BE節(jié)點(diǎn)個(gè)數(shù),則最終分桶為 y 即 BE 節(jié)點(diǎn)個(gè)數(shù);否則最終分桶數(shù)為 x

上述過程偽代碼表現(xiàn)形式為:

int?N?=?計(jì)算N值;
int?M?=?計(jì)算M值;int?y?=?BE節(jié)點(diǎn)個(gè)數(shù);
int?x?=?min(M,?N,?128);if?(x?<?N?&&?x?<?y)?{return?y;
}
return?x;

有了上述算法,咱們?cè)僖胍恍├觼砀玫乩斫膺@部分邏輯:

case 1:

數(shù)據(jù)量 100 MB,10 臺(tái) BE 機(jī)器,2TB * 3 塊盤?

數(shù)據(jù)量 N = 1?

BE 磁盤 M = 10 * (2TB/50GB) * 3 = 1230

x = min(M, N, 128) = ?1?

最終: 1

case 2:?

數(shù)據(jù)量 1GB, 3 臺(tái) BE 機(jī)器,500GB * 2 塊盤?

數(shù)據(jù)量 N = 2?

BE 磁盤 M = 3 * (500GB/50GB) * 2 = 60?

x = min(M, N, 128) = ?2?

最終: 2?

case 3:

數(shù)據(jù)量 100GB,3 臺(tái) BE 機(jī)器,500GB * 2 塊盤?

數(shù)據(jù)量 N = 20?

BE 磁盤 M = 3 * (500GB/50GB) * 2 = 60?

x = min(M, N, 128) = ?20?

最終: 20?

case 4:

數(shù)據(jù)量 500GB,3 臺(tái) BE 機(jī)器,1TB * 1 塊盤?

數(shù)據(jù)量 N = 100?

BE 磁盤 M = 3 * (1TB /50GB) * 1 = 60?

x = min(M, N, 128) = ?63?

最終: 63?

case 5:

數(shù)據(jù)量 500GB,10 臺(tái) BE 機(jī)器,2TB * 3 塊盤?

數(shù)據(jù)量 N = ?100?

BE 磁盤 M = 10 * (2TB / 50GB) * 3 = 1230?

x = min(M, N, 128) = ?100?

最終: 100?

case 6:

數(shù)據(jù)量 1TB,10 臺(tái) BE 機(jī)器,2TB * 3 塊盤?

數(shù)據(jù)量 N = ?205?

BE 磁盤 M = 10 * (2TB / 50GB) * 3 = 1230?

x = min(M, N, 128) = ?128?

最終: 128?

case 7:

數(shù)據(jù)量 500GB,1 臺(tái) BE 機(jī)器,100TB * 1 塊盤?

數(shù)據(jù)量 N = 100?

BE 磁盤 M = ?1 * (100TB / 50GB) * 1 = 2048?

x = min(M, N, 128) = ?100?

最終: 100?

case 8:

數(shù)據(jù)量 1TB, 200 臺(tái) BE 機(jī)器,4TB * 7 塊盤?

數(shù)據(jù)量 N = 205?

BE 磁盤 M = 200 * (4TB / 50GB) * 7 = 114800?

x = min(M, N, 128) = ?128?

最終: 200

可以看到,詳細(xì)邏輯與原則是匹配的。

后續(xù)分桶推算

上述是關(guān)于初始分桶的計(jì)算邏輯,后續(xù)分桶數(shù)因?yàn)橐呀?jīng)有了一定的分區(qū)數(shù)據(jù),可以根據(jù)已有的分區(qū)數(shù)據(jù)量來進(jìn)行評(píng)估。后續(xù)分桶數(shù)會(huì)根據(jù)最多前 7 個(gè)分區(qū)數(shù)據(jù)量的 EMA[1](短期指數(shù)移動(dòng)平均線)值,作為estimate_partition_size?進(jìn)行評(píng)估。此時(shí)計(jì)算分桶有兩種計(jì)算方式,假設(shè)以天來分區(qū),往前數(shù)第一天分區(qū)大小為 S7,往前數(shù)第二天分區(qū)大小為 S6,依次類推到 S1;

  1. 如果 7 天內(nèi)的分區(qū)數(shù)據(jù)每日嚴(yán)格遞增,則此時(shí)會(huì)取趨勢(shì)值

有6個(gè)delta值,分別是

S7 - S6 = delta1,

S6 - S5 = delta2,

...

S2 - S1 = delta6

由此得到平均的delta值:

avg_delta = (delta1 + delta2 + ... + delta6) / 6 = (S7 - S1) / 6

那么,今天的estimate_partition_size = S7 + avg_delta

  1. 非第一種的情況,此時(shí)直接取前幾天的 EMA 平均值

今天的 estimate_partition_size = EMA(S1, ..., S7)

根據(jù)上述算法,初始分桶個(gè)數(shù)以及后續(xù)分桶個(gè)數(shù)都能被計(jì)算出來。跟之前只能指定固定分桶數(shù)不同,由于業(yè)務(wù)數(shù)據(jù)的變化,有可能前面分區(qū)的分桶數(shù)和后面分區(qū)的分桶數(shù)不一樣,這對(duì)用戶是透明的,用戶無需關(guān)心每一分區(qū)具體的分桶數(shù)是多少,而這一自動(dòng)推算的功能會(huì)讓分桶數(shù)更加合理。

自動(dòng)分桶推算功能 PR:https://github.com/apache/doris/pull/15250

?? 效果

當(dāng)我們有了合適的分區(qū)分桶時(shí),導(dǎo)入數(shù)據(jù)導(dǎo)到 Doris 后,數(shù)據(jù)會(huì)依照建表語句中的分區(qū)分桶列進(jìn)行存儲(chǔ)。上述網(wǎng)站站點(diǎn)數(shù)據(jù)的存儲(chǔ)示例如圖示:

圖2:Doris 分區(qū)分桶后的數(shù)據(jù)存儲(chǔ)

此時(shí)如果執(zhí)行 SQL 查詢:

 
select?*?from?test_tbl?where?sdate?=?"2020-03-23"??and?site?=?1

根據(jù)謂詞 sdate = "2020-03-23" 可以定位到分區(qū) p20200323,謂詞 site = 1 能定位到該分區(qū)下的 bucket_1。假設(shè)有 30 天數(shù)據(jù),自動(dòng)分桶推算得到的分桶個(gè)數(shù)為 20 個(gè)。則經(jīng)過明確的分區(qū)分桶謂詞下推,則可以將數(shù)據(jù)全表掃描量變?yōu)樵瓉淼?1/600(30 天*20 個(gè)桶 = 600),極大減少了數(shù)據(jù)的掃描范圍、提高了查詢的效率。

# ?總結(jié)

整體來看,批量創(chuàng)建分區(qū)功能語法簡(jiǎn)潔有力,解決了用戶針對(duì)大量歷史數(shù)據(jù)分區(qū)創(chuàng)建的難題,既避免了手動(dòng)創(chuàng)建大量分區(qū)的低效語法,又避免了動(dòng)態(tài)分區(qū)大量參數(shù)的學(xué)習(xí)使用成本,且方式靈活多變、隨意搭配組合各種類型的分區(qū),大大提升了 Doris 在建表過程中的易用性自動(dòng)分桶推斷功能智能高效,用戶不需再關(guān)心分桶的細(xì)枝末節(jié),系統(tǒng)自動(dòng)幫助用戶擴(kuò)縮不同分區(qū)的分桶數(shù),真正做到桶隨業(yè)務(wù)變,降低學(xué)習(xí)成本的同時(shí)更是提升了查詢效率。

在與社區(qū)用戶持續(xù)溝通中,我們也不斷收獲著許多新的需求,例如分區(qū)列為非時(shí)間列等,因此后續(xù)我們?nèi)詫⒗^續(xù)完善對(duì)其他分區(qū)列的支持,例如數(shù)字分區(qū)列的批量創(chuàng)建等。最后,我們期待傾聽更多用戶的聲音,在不斷回饋用戶以極簡(jiǎn)易用的使用體驗(yàn)的同時(shí),也期待有更多人參與到 Apache Doris 的建設(shè)中來,歡迎你的加入!

http://www.risenshineclean.com/news/22023.html

相關(guān)文章:

  • 做網(wǎng)站賺幾百萬媒體網(wǎng)站
  • wordpress添加搜索插件北京seo顧問服務(wù)
  • 本網(wǎng)站服務(wù)器設(shè)在美國服務(wù)器保護(hù)友情鏈接交易平臺(tái)源碼
  • 網(wǎng)站備案和服務(wù)器備案嗎北京seo站內(nèi)優(yōu)化
  • 備案號(hào)鏈接工信部網(wǎng)站免費(fèi)創(chuàng)建個(gè)人博客網(wǎng)站
  • 江蘇建設(shè)集團(tuán)有限公司董事長(zhǎng)seo網(wǎng)絡(luò)排名優(yōu)化方法
  • 濟(jì)寧網(wǎng)站建設(shè)神華科技推廣網(wǎng)站多少錢
  • 購物網(wǎng)站建設(shè) 屬于信息系統(tǒng)管理與設(shè)計(jì)么?百度網(wǎng)頁入口
  • 高端網(wǎng)站制作上海軟文素材
  • 網(wǎng)站集成微信登錄seo數(shù)據(jù)
  • 網(wǎng)站建設(shè)建設(shè)百度學(xué)術(shù)論文查重官網(wǎng)
  • wordpress 軍事主題快速網(wǎng)站排名優(yōu)化
  • 云南網(wǎng)站設(shè)計(jì)外包注冊(cè)公司流程和費(fèi)用
  • 萊蕪區(qū)宣傳部網(wǎng)站seo排名優(yōu)化
  • 網(wǎng)站什么也沒動(dòng)怎么不收錄啦免費(fèi)入駐的電商平臺(tái)
  • 怎么做社交網(wǎng)站日本積分榜最新排名
  • 網(wǎng)站還沒上線怎么做品牌推廣友情鏈接的四個(gè)技巧
  • 哪有做網(wǎng)站的公司b站推廣網(wǎng)站入口2023的推廣形式
  • 蚌埠網(wǎng)站制作哪家好如何搭建個(gè)人網(wǎng)站
  • 電商網(wǎng)站前端設(shè)計(jì)方案山東大學(xué)經(jīng)濟(jì)研究院
  • webydo生成的網(wǎng)站能下載代碼嗎廣東seo教程
  • 有誰幫做網(wǎng)站seo排名如何
  • 自己做pc網(wǎng)站建設(shè)如何優(yōu)化關(guān)鍵詞
  • 怎么做貝店式的網(wǎng)站全搜網(wǎng)
  • 青島百度網(wǎng)站排名濟(jì)南做seo排名
  • 請(qǐng)人做網(wǎng)站要多少錢福州百度快速優(yōu)化排名
  • 從化網(wǎng)站建設(shè)公司種子搜索神器下載
  • 做網(wǎng)站專題頁的字大小是多少seo前景
  • 廣州做企業(yè)網(wǎng)站域名注冊(cè)哪個(gè)平臺(tái)比較好
  • 石家莊上門足療杭州小周seo