2016-08-16 71 views
1

我已經卡桑德拉上亞馬遜EC2具有3節點(實例)在配置。現在我想要做的是通過在單個羣集中創建單獨的keyspace,爲我的客戶在Cassandra上留出一些空間。客戶數量將會日益增加,因此我們可以假設創建的密鑰空間沒有固定的數量。在卡桑德拉有多個密鑰空間是不是很好的做法?

如果我在單個羣集中創建太多密鑰空間,會有性能問題嗎?

如果這不是很好的做法,那麼有沒有其他解決方法可以滿足我的需求?我不想配置Cassandra的多個實例。

回答

0

這取決於。取決於你最終想要擁有多少客戶(例如,我們談論的是數百還是數千?),每個密鑰空間中有多少個表以及它們是如何使用的。更多密鑰空間x更多的表=更多的memtables保存在內存中。不同的cassandra版本的表開銷也不同。如果它只是一個標準的「多租戶」,那麼您可能會考慮將tenant_id列添加到分區鍵。

也請看similar posts詢問表數。

+0

會有成千上萬的客戶。我不確定桌子的數量。解決我的需求的最佳方法是什麼? –

+0

以及每個用戶將保留多少數據?非常大的東西? – mmatloka

+0

是的,這將是巨大的。 –

1

少數單獨的密鑰空間很好,但使用大量密鑰空間會導致性能問題。問題不在於密鑰空間,而是在每個密鑰空間中複製大量表。 Cassandra需要每個表的開銷,例如保留1 MB的堆。好的建議是不要超過幾百張桌子。

Cassandra中的數千張表將如何執行?有開放的錯誤報告,表明有成千上萬的大量表可能會導致高CPU利用率CASSANDRA-10588和更長的啓動時間CASSANDRA-794

BlackRock的Randy Fraden在2015年卡桑德拉峯會上發表了精彩演講,內容涉及Multi-Tenancy in Cassandra at BlackRock。如上所述,通常的多租戶建議是將tenant_id放入分區鍵中。然後,BlackRock使用定製的IAuthenticator和IAuthorizer模塊在分區級執行租戶安全性。

對於那些需要多個鍵空間中的相同表的情況,有一個功能請求允許模板表CASSANDRA-7662,它將添加一些語法糖來緩解創建類似表的任務。