2014-10-09 46 views
1

我不完全舒服我得到準備好的聲明的概念正確,但根據python driver docs準備好的聲明是"A statement that has been prepared against at least one Cassandra node"。對我來說,讀取集羣中的某個地方有關於哪些查詢已經準備好的信息。documentation還指出"A PreparedStatement should be prepared only once. Re-preparing a statement may affect performance (as the operation requires a network roundtrip)."接收已經準備好的聲明來自卡桑德拉

如果我理解正確,從集羣接收已經準備好的語句而不是反覆重新生成它們會是有益的(1)。有沒有辦法做到這一點?如果是的話,我如何才能收到我感興趣的陳述? (1)我不是在談論一個程序的一個實例的範圍,而是沒有共享內存的多個實例執行相同的查詢。

回答

1

你是對的:集羣中的每個節點都緩存準備好的語句。但是,在客戶端沒有獲取已經準備好的語句的機制。這裏有很多原因,我不會在這裏解釋。

您的應用程序只需編寫一次聲明,並在羣集/會話的整個生命週期內保留它。這些驅動程序處理諸如在所有節點上準備語句以及在由於緩存逐出或重新啓動而丟失它們的節點上重新準備。

+0

我這麼認爲,但感謝您的確認。你知道cassandra實際上是再次準備語句還是忽略這個嘗試,但是返回一個有效的預備語句對象?如果準備好的語句的緩存應該保持最小,這將是我期望發生的行爲。 – 2014-10-09 20:11:55