国产熟女一区二区五月婷-又爽又黄又无遮挡网站-亚洲国产精品视频在线播放-国内偷拍国内精品网999

當(dāng)前位置:首頁 > 最新資訊 > 行業(yè)資訊

什么是高基數(shù)?

高基數(shù)列是指數(shù)據(jù)基本不重復(fù)亦或均為唯一值的列。典型的高基數(shù)列有ID標(biāo)識(shí),Email地址亦或用戶名等。一個(gè)具有高基數(shù)的數(shù)據(jù)表列的例子是具有一個(gè)名為USER_ID的列的USERS表。

這一列包含1至n的唯一值。每次在USERS表中建立一個(gè)新用戶時(shí),將在USER_ID列中建立一個(gè)新數(shù)字,以唯一地標(biāo)識(shí)它們??紤]到USER_ID列中保存的值是獨(dú)一無二的,故此該列的基數(shù)類型被稱為高基數(shù)。

假如你的工作中用到了數(shù)據(jù)庫,尤其是要處理時(shí)序數(shù)據(jù),那么可能你就會(huì)面對(duì)處理高基數(shù)數(shù)據(jù)的挑戰(zhàn)。

尤其是工業(yè)物聯(lián)網(wǎng)(如制造業(yè)、石油和天然氣、公用事業(yè)等)以及一些監(jiān)控和事件數(shù)據(jù)工作負(fù)載中,時(shí)間序列高基數(shù)的處理是一個(gè)常見問題。高基數(shù)也是開發(fā)人員經(jīng)常討論的一個(gè)話題,圍繞它經(jīng)常會(huì)有很多問題。

這里要澄清一個(gè)常見的混淆點(diǎn):高基數(shù)在時(shí)序數(shù)據(jù)世界中之所以成為如此大的問題,是因?yàn)橐恍┝餍械臅r(shí)序數(shù)據(jù)庫的局限性。假如選擇了正確的數(shù)據(jù)庫,高基數(shù)數(shù)據(jù)其實(shí)是一個(gè)已經(jīng)解決了的問題。

讓我們回過頭來首先來定義什么是高基數(shù)。

什么是高基數(shù)?

廣義上講,基數(shù)是指一個(gè)集合中的值的數(shù)量。有時(shí),集合的基數(shù)很?。ǖ突鶖?shù)),有時(shí)可能很大(高基數(shù))。比如,上圖中有很多(美味的)M&M,但該數(shù)據(jù)集的基數(shù)非常小(6):

在數(shù)據(jù)庫世界中,基數(shù)是指數(shù)據(jù)庫的特定列或字段中包含的唯一值的數(shù)量。

但是,對(duì)于時(shí)序數(shù)據(jù)來說,事情可能變得有些復(fù)雜了。時(shí)序數(shù)據(jù)往往與描述該數(shù)據(jù)的元數(shù)據(jù)(有時(shí)稱為“標(biāo)簽”)配對(duì)。

通常,主時(shí)序數(shù)據(jù)或元數(shù)據(jù)會(huì)被索引以提高查詢性能,這樣就能快速找到匹配所有指定標(biāo)簽的值。時(shí)序數(shù)據(jù)集的基數(shù)最典型是定義方式為每個(gè)索引列的基數(shù)的交叉乘積。

假如有6種顏色的m&m巧克力豆以及5種類型的m&m巧克力豆(普通的、花生的、杏仁的、椒鹽脆餅的和脆的),那么我們的基數(shù)現(xiàn)在是6x5 = 30種m&m巧克力豆。有了正確的索引,我們就能高效地找到所有藍(lán)色的、酥脆的m&m巧克力豆(這是客觀上最好的)。

假如你有多個(gè)索引列,每個(gè)列都有大量的唯一值,那么叉乘的基數(shù)可能會(huì)變得非常大。這是軟件開發(fā)人員在談?wù)摼哂?ldquo;高基數(shù)”的時(shí)序數(shù)據(jù)集時(shí),“高基數(shù)”的通常含義。

讓我們來看一個(gè)例子。

高基數(shù)示例:工業(yè)物聯(lián)網(wǎng)

想象一個(gè)物聯(lián)網(wǎng)場景,在某個(gè)采石場,有大型、沉重的設(shè)備在進(jìn)行采礦、破碎巖石和分類巖石這三種作業(yè)。

假設(shè)有10000件設(shè)備,每件設(shè)備有100個(gè)傳感器,運(yùn)行10個(gè)不同的固件版本,分布在100個(gè)地點(diǎn):這個(gè)數(shù)據(jù)集的最大基數(shù)變成了10億[10,000 x 100 x 10 x 100]?,F(xiàn)在,假設(shè)設(shè)備也可以移動(dòng),我們想要存儲(chǔ)精確的GPS位置(lat、long)(緯度,經(jīng)度),并將其用作查詢的索引元數(shù)據(jù)。因?yàn)?lat, long)是一個(gè)連續(xù)的字段(而不是像equipment_id這樣的離散字段),通過對(duì)位置進(jìn)行索引,這個(gè)數(shù)據(jù)集的最大基數(shù)現(xiàn)在是無限大的(無界)。

為時(shí)序設(shè)計(jì)的關(guān)系型數(shù)據(jù)庫如何處理高基數(shù)

不同的數(shù)據(jù)庫采用不同的方法來處理高基數(shù)。根本上說,在使用高基數(shù)數(shù)據(jù)集時(shí),數(shù)據(jù)庫的性能表現(xiàn)如何可以追溯到它從一開始是如何設(shè)計(jì)的。

假如你正在處理大量的時(shí)序數(shù)據(jù)并使用關(guān)系數(shù)據(jù)庫,那么用于索引數(shù)據(jù)的一種經(jīng)過驗(yàn)證的數(shù)據(jù)結(jié)構(gòu)是b樹。依賴b樹數(shù)據(jù)結(jié)構(gòu)來索引數(shù)據(jù)對(duì)于高基數(shù)數(shù)據(jù)集有幾個(gè)好處:

你可以清晰地理解數(shù)據(jù)庫的執(zhí)行方式。只要你希望查詢的數(shù)據(jù)集的索引和數(shù)據(jù)適合內(nèi)存(這是可以調(diào)優(yōu)的),基數(shù)就不是問題。

你可以控制索引哪些列,包括在多個(gè)列上建立聯(lián)合索引的能力。你還可以隨時(shí)添加或刪除索引,假如你的查詢工作負(fù)載發(fā)生了變化。

你可以在離散和連續(xù)字段上建立索引,尤其是因?yàn)閎樹可以很好地使用以下操作符進(jìn)行比較:<,<=,=,>=,>,BETWEEN, IN, IS NULL, IS NOT NULL。我們的示例查詢(“SELECT * from sensor_data WHERE mem_free = 0”和“SELECT * from sensor_data WHERE temperature > 90”)將運(yùn)行在對(duì)數(shù)或O(log n)的時(shí)間復(fù)雜度內(nèi)。

雖然時(shí)序數(shù)據(jù)庫使用其他方法來實(shí)現(xiàn)高基數(shù),但使用b樹結(jié)構(gòu)已被證明是可靠的。

猜你喜歡