2012-12-29 72 views
1

某處我聽說在卡桑德拉使用多行選擇是不好的,因爲對於每一行選擇它運行新的查詢,所以例如,如果我想一次獲取1000行,它將與運行1000一次分開查詢,這是真的嗎?卡桑德拉多行選擇

如果每次頁面加載時選擇大約50行,如果說我在一分鐘內有1000次頁面瀏覽量,會不會嚴重拖慢cassandra?

P.S我使用PHPCassa爲我的項目

回答

3

是,運行1000行的查詢是與運行1000個查詢(如果你使用推薦RandomPartitioner)。但是,我不會過分擔心這一點。在卡桑德拉,通過密鑰查詢連續行爲是非常普遍的,非常快速的操作。

至於你的第二個問題,很難提前知道。構建並測試它。請注意,Cassandra確實在內存緩存中使用,因此如果您查詢的是相同的行,那麼它們將緩存。

+0

還有一個問題,如果你說通過行鍵查詢速度很快,那麼切片這些行會減慢速度? – Linas

+1

這是使用相對粗略的哨兵值作爲關鍵字的一個很好的理由,那麼你可以在列名上切片(可能使用組合)來獲得真正快速的查詢。 –

1

1)我有點調試了Cassandra代碼庫,並根據我的觀察,同時查詢多行cassandra提供了也在phpcassa中繼承的multiget()功能。

2)Multiget的進行了優化,以處理批量要求,並將其保存您的網絡跳。(像1K行會有1K往返,所以它肯定減少了999往返時間)

3 )關於phpcassa中的multiget()的更多信息:php cassa multiget()