成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是高基數?

譯文 精選
數據庫 其他數據庫 工業物聯網
本文主要探查導致高基數的原因,以及為什么高基數在處理時序數據時是一個常見問題。

高基數列是指數據基本不重復或者均為唯一值的列。典型的高基數列有ID標識,電子郵件地址或者用戶名等。一個具有高基數的數據表列的例子是具有一個名為USER_ID的列的USERS表。

這一列包含1-n的唯一值。每次在USERS表中創建一個新用戶時,將在USER_ID列中創建一個新數字,以唯一地標識它們。由于USER_ID列中保存的值是唯一的,因此該列的基數類型被稱為高基數。

如果你的工作中用到了數據庫,特別是要處理時序數據,那么可能你就會面對處理高基數數據的挑戰。

特別是工業物聯網(如制造業、石油和天然氣、公用事業等)以及一些監控和事件數據工作負載中,時間序列高基數的處理是一個常見問題。高基數也是開發人員經常討論的一個話題,圍繞它經常會有很多問題。

這里要澄清一個常見的混淆點:高基數在時序數據世界中之所以成為如此大的問題,是因為一些流行的時序數據庫的局限性。如果選擇了正確的數據庫,高基數數據其實是一個已經解決了的問題。

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

Image

什么是高基數? 

廣義上講,基數是指一個集合中的值的數量。有時,集合的基數很小(低基數),有時可能很大(高基數)。例如,上圖中有很多(美味的)M&M,但該數據集的基數非常小(6):

Image

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

然而,對于時序數據來說,事情可能變得有些復雜了。時序數據往往與描述該數據的元數據(有時稱為“標簽”)配對。

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

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

如果你有多個索引列,每個列都有大量的唯一值,那么叉乘的基數可能會變得非常大。這是軟件開發人員在談論具有“高基數”的時序數據集時,“高基數”的通常含義。

讓我們來看一個例子。

高基數示例:工業物聯網 

想象一個物聯網場景,在某個采石場,有大型、沉重的設備在進行采礦、破碎巖石和分類巖石這三種作業。

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

為時序設計的關系型數據庫如何處理高基數 

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

如果你正在處理大量的時序數據并使用關系數據庫,那么用于索引數據的一種經過驗證的數據結構是b樹。依賴b樹數據結構來索引數據對于高基數數據集有幾個好處:

  • 你可以清晰地理解數據庫的執行方式。只要你希望查詢的數據集的索引和數據適合內存(這是可以調優的),基數就不是問題。
  • 你可以控制索引哪些列,包括在多個列上創建聯合索引的能力。你還可以隨時添加或刪除索引,如果你的查詢工作負載發生了變化。
  • 你可以在離散和連續字段上創建索引,特別是因為b樹可以很好地使用以下操作符進行比較:<,<=,=,>=,>,BETWEEN, IN, IS NULL, IS NOT NULL。我們的示例查詢(“SELECT * from sensor_data WHERE mem_free = 0”和“SELECT * from sensor_data WHERE temperature > 90”)將運行在對數或O(log n)的時間復雜度內。

雖然時序數據庫使用其他方法來實現高基數,但使用b樹結構已被證明是可靠的。如果你遇到有關高基數的數據問題,可以留言一起討論。

參考鏈接:https://dzone.com/articles/what-is-high-cardinality

譯者介紹

盧鑫旺,51CTO社區編輯,半路出家的九零后程序員。做過前端頁面,寫過業務接口,搞過爬蟲,研究過JS,有幸接觸Golang,參與微服務架構轉型。目前主寫Java,負責公司可定制化低代碼平臺的數據引擎層設計開發工作。

責任編輯:閆懷德 來源: 51CTO
相關推薦

2020-09-21 06:53:41

NoSQL高并發面試

2019-04-25 09:36:18

Kafka高可靠高可用

2018-02-27 14:30:17

2021-03-20 22:46:22

IaaSSaaSPaaS

2024-08-23 20:53:47

2025-01-10 09:15:57

2023-09-01 13:49:00

內存進程線程

2019-05-06 11:12:18

Redis高并發單線程

2019-11-22 16:09:02

企業安全網絡風險管理IT

2019-11-23 17:23:53

網絡風險網絡安全網絡攻擊

2020-07-14 14:59:00

控制反轉依賴注入容器

2017-12-19 21:29:58

物聯網區塊鏈大數據

2019-12-10 13:01:08

安全網絡風險數據

2020-11-20 10:51:03

云計算

2018-01-30 11:17:56

集群分布式SOA?

2017-07-10 09:42:48

2025-06-09 07:46:44

服務降級高并發

2016-05-09 10:31:29

DockerLinux

2021-07-28 09:48:54

XML標記語言

2011-08-16 18:39:05

Ubuntu
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久婷婷国产麻豆91 | 日本网站免费在线观看 | 国产99久久久国产精品下药 | 蜜臀网| av网站免费在线观看 | 欧美精品1区 | 国产一区二区 | 亚洲一区二区三区免费视频 | 国产三级电影网站 | 国产中文字幕在线观看 | 欧美日韩在线一区二区三区 | 红桃视频一区二区三区免费 | 国产精品久久久亚洲 | 欧美一区2区三区4区公司二百 | 视频一区二区国产 | 国产在线不卡视频 | 国产高清视频一区 | 日日摸夜夜添夜夜添精品视频 | 中文字幕一区在线观看视频 | 欧美成年网站 | 亚洲国产成人精品在线 | 91美女在线 | 97精品超碰一区二区三区 | 亚洲视频在线看 | 日日干干 | 日韩精品一区二区三区中文在线 | 久久久999精品 | jizz18国产 | 亚洲国产免费 | 国产日韩一区二区三免费高清 | 麻豆久久 | 欧洲在线视频 | 久久久久久国产精品免费免费男同 | 91免费在线视频 | 亚洲国产伊人 | 日韩三区在线观看 | 在线观看av网站永久 | 欧美视频免费 | av毛片在线免费观看 | 一级大黄色片 | 亚洲狠狠 |