某處我聽說在卡桑德拉使用多行選擇是不好的,因爲對於每一行選擇它運行新的查詢,所以例如,如果我想一次獲取1000行,它將與運行1000一次分開查詢,這是真的嗎?卡桑德拉多行選擇
如果每次頁面加載時選擇大約50行,如果說我在一分鐘內有1000次頁面瀏覽量,會不會嚴重拖慢cassandra?
P.S我使用PHPCassa
爲我的項目
某處我聽說在卡桑德拉使用多行選擇是不好的,因爲對於每一行選擇它運行新的查詢,所以例如,如果我想一次獲取1000行,它將與運行1000一次分開查詢,這是真的嗎?卡桑德拉多行選擇
如果每次頁面加載時選擇大約50行,如果說我在一分鐘內有1000次頁面瀏覽量,會不會嚴重拖慢cassandra?
P.S我使用PHPCassa
爲我的項目
是,運行1000行的查詢是與運行1000個查詢(如果你使用推薦RandomPartitioner
)。但是,我不會過分擔心這一點。在卡桑德拉,通過密鑰查詢連續行爲是非常普遍的,非常快速的操作。
至於你的第二個問題,很難提前知道。構建並測試它。請注意,Cassandra確實在內存緩存中使用,因此如果您查詢的是相同的行,那麼它們將緩存。
我們正在使用Playorm for Cassandra,並且在那裏有一個「findAll」模式,它提供了快速獲取所有行的支持。請訪問 https://github.com/deanhiller/playorm/wiki/Support-for-retrieving-many-entities-in-parallel瞭解更多詳情。
1)我有點調試了Cassandra代碼庫,並根據我的觀察,同時查詢多行cassandra提供了也在phpcassa中繼承的multiget()功能。
2)Multiget的進行了優化,以處理批量要求,並將其保存您的網絡跳。(像1K行會有1K往返,所以它肯定減少了999往返時間)
3 )關於phpcassa中的multiget()的更多信息:php cassa multiget()
還有一個問題,如果你說通過行鍵查詢速度很快,那麼切片這些行會減慢速度? – Linas
這是使用相對粗略的哨兵值作爲關鍵字的一個很好的理由,那麼你可以在列名上切片(可能使用組合)來獲得真正快速的查詢。 –