簡體   English   中英

ClickHouse 中的多租戶

[英]Multi Tenancy in ClickHouse

很多人不想使用 ClickHouse 來為他們的公司或項目進行分析。 他們希望將其用作 SaaS 數據/分析項目的支柱。 大多數情況下需要支持半結構化 json 數據,這可能會導致為您擁有的每個用戶創建大量列。

現在,一些有經驗的 ClickHouse 用戶更少的表意味着更高的性能。 因此,為每個用戶提供單獨的表不是一種選擇。

此外,將太多用戶的數據放入同一個數據庫會導致列數非常多,一些實驗表明這可能會使 CH 無響應。

那么每個數據庫有 20 個用戶,每個用戶限制為 50 列呢? 但是如果你有成千上萬的用戶呢? 您應該創建數千個數據庫嗎?

這個問題的最佳解決方案是什么?

注意:在我們的案例中,數據隔離不是問題,我們正在應用程序級別解決它。

單庫1000表和單表1000庫沒有區別。

1000 個表和具有 *1000 個分區的表之間幾乎沒有區別partition by (tenant_id, .some_expression_from_datetime.)

問題在於 MergeTree 和 ReplicatedMergeTree 引擎的開銷。 並且是您需要創建/讀取的文件數量(與文件無關的數據局部性問題,在沒有文件系統的情況下將是相同的)。

如果您有 1000 個租戶,唯一的方法是使用order by (tenant_id,..) + 使用行策略或應用程序級別的限制。

我有一個擁有 700 個復制表的客戶的經驗——復制經常出現問題,需要調整后台池,ZK 的問題(巨大的數據庫大小,CH 和 ZK 之間的巨大網絡流量)。 Clickhouse 啟動 4 小時,因為它需要從所有 1000000 個部件中讀取元數據。 分區修剪工作較慢,因為它在每個查詢的查詢分析期間迭代所有部分。

問題的根源是原始設計,我猜他們在 metrika 中有大約 3 張桌子。

檢查這個例如https://github.com/ClickHouse/ClickHouse/issues/31919

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM