這里寫自定義目錄標題
- 開源列式OLAP數據庫clickhouse
- clickhouse
- 使用 ClickHouse 的場景
- 如何理解行式存儲和列式存儲
- clickhouse-go
開源列式OLAP數據庫clickhouse
- OLAP (分析型):專為快速掃描、聚合、分析海量數據設計。
- OLTP (事務型):專為處理大量短事務(插入、更新、刪除、點查)設計。
clickhouse
官網:https://clickhouse.com/
ClickHouse 是一個開源列式數據庫管理系統,專為在線分析處理(OLAP)而設計。它能夠快速執行高并發、高效的數據查詢,適合用于處理大量數據。
ClickHouse 是由俄羅斯Yandex公司開源的,他是俄羅斯的一家互聯網巨頭公司,雖然在國際上沒什么名氣,但在俄羅斯,他就是老大,是俄羅斯排名第一的搜索引擎公司。是和谷歌、百度一樣的存在。ClickHouse 誕生于 2016 年,就是來自于 Yandex 公司。
主要用于在線分析處理 (OLAP) 業務。它采用列式存儲結構,可使用 SQL 語句實時生成數據分析報告,另外它還支持索引,分布式查詢以及近似計算等特性,憑借其優異的表現,ClickHouse 在各大互聯網公司均有廣泛地應用。
它專為需要超快查詢速度和海量數據(PB級)掃描的實時分析場景而設計,尤其擅長大規模數據集的聚合查詢。
ClickHouse 的主要特性包括:
- 高性能:支持實時數據查詢和分析,通過列式存儲結構優化查詢速度。查詢速度快,支持并發分析場景。插入寫入高吞吐,但更新和刪除操作代價高
ClickHouse 寫入吞吐量大
單服務器日志寫入量在 50MB 到 200MB/s,每秒寫入超過 60w 記錄數,是 Elasticsearch 的 5 倍以上。 - 高度可擴展:能處理 PB 級的數據,適合大規模應用。
- SQL 支持:兼容 SQL 查詢語言,方便以 SQL 為基礎的數據操作。
- 容錯性:內置的數據冗余和快照支持,可保證數據的安全性。
不適合的場景包括:
- 核心業務系統主庫
- 高頻 update/delete 的場景
- 強一致性需求業務
使用 ClickHouse 的場景
- 實時數據分析:可以用于流量分析、用戶行為跟蹤等需要實時響應的場景。
- 大數據倉庫:處理海量數據,比如日志數據、傳感器數據等,進行長期存儲和分析。
- 業務智能:通過 OLAP 查詢,為企業提供決策支持的數據分析和報表。
- 數據集成:與 ETL(抽取、轉換、加載)流程結合,作為分析的數據存儲后端。
如何理解行式存儲和列式存儲
數據庫存儲方式主要分為兩種:行式存儲(Row-based Storage)和列式存儲(Column-based Storage)。
行式存儲 (Row-based Storage)
存儲方式:
數據按行存儲,一行的所有字段連續存放在一起
例如:
[ID1, Name1, Age1, City1]
[ID2, Name2, Age2, City2]
[ID3, Name3, Age3, City3]
傳統的 MySQL 數據庫的每一行數據都是物理的存儲在一起的。如果我要取 id 等于 10000 這一條數據的 name 列,那我就必須要把這一行數據讀取出來,然后取 name 列。
在眾多的數據中,我只取一列,但我需要把每條數據都讀取出來。
列式存儲 (Column-based Storage)
存儲方式:
數據按列存儲,同一列的所有值連續存放
例如:
[ID1, ID2, ID3]
[Name1, Name2, Name3]
[Age1, Age2, Age3]
[City1, City2, City3]
由于 name 列的數據都存儲在一起,因此效率大大的超過了傳統的數據庫。
clickhouse-go
github:https://github.com/ClickHouse/clickhouse-go
clickhouse-go
是 Go 語言的 ClickHouse 驅動程序,允許開發者使用 Go 進行數據操作。
clickhouse-go
為 Go 開發者提供了便捷的方式來與 ClickHouse 進行交互。