2014-10-22 49 views
1

我創建了一個非常簡單的發展觀生產 Couchbase服務器Couchbase發展觀不顯示,直到發佈到生產

function (doc, meta) { 
    if (meta.id.indexOf("user:") == 0) emit(meta.id, doc); 
} 

這種觀點不返回任何結果的結果。在本地的couchbase服務器上測試相同的視圖可以正常工作。

將此視圖發佈爲生產視圖可以正常工作。

什麼可能是錯的?我正在使用Couchbase版本:2.2.0社區版(build-837)

回答

0

在開發視圖時,Couchbase將僅使用您的存儲桶中的數據子集來獲取結果。 IIRC這是一個vBucket的數據價值。它使用數據的一個子集,因爲某些視圖可能非常大,並且在開發新視圖時不希望陷入整個羣集。所以雖然很少見,但當您運行開發視圖時,可能會在該羣集上拾取的數據的子集沒有匹配的結果。一旦該索引被提升爲生產視圖,即你已經完成了開發並準備在產品中使用它,那麼它將使用該桶中的整個數據集。

在相關說明中,如果我沒有弄錯,它看起來像是發出整個文檔。根據您的數據集和該數據視圖的選擇性,隨着您的數據增長,這可能會相當昂貴。所以你將不得不看這個。確保你有足夠的磁盤空間來存儲這個足夠的OS RAM(Couchbase沒有佔用這個空間),以便在內存中保留儘可能多的索引,因爲它與Couchbase對象的處理方式不同。發射大量數據也會減慢重新平衡,特別是如果您使用默認內部設置(如索引感知重新平衡)。我不明白你的使用情況,但是最好只是發出ID,然後批量獲取這些ID或其他內容。是的,這可能是其中一種觀點可以做到這一點的情況之一,但是如果他們有,並且有更好的方法來解決同樣的問題。無論如何,只是想一想。

+0

感謝您的回答@Kirk。如果Couchbase選擇不返回數據(這是我知道的事實),那麼完成開發視圖非常困難。你確定這是預期的行爲嗎?這是在文檔中的任何地方陳述?只是試圖確定這裏沒有技術問題。 你注意到發射整個視野非常好。謝謝 – Lior 2014-10-22 22:40:11

+0

以下是關於開發視圖的相關文檔。 http://docs.couchbase.com/admin/admin/Views/views-development.html它提到了強制它看到完整數據集的方法,但我不記得在WebUI中將它看作是一個選項。所以它可能在REST API中或通過SDK完成。我會做更多的挖掘,看看我能不能找出答案。 – Kirk 2014-10-23 15:26:36

+0

它是在webUI中看起來,我從來沒有用過它。在WebUI中有一個按鈕,您可以在其中強制將開發視圖構建在完整數據集上。嘗試一下,看看你是否得到了結果。根據您的數據集,可能需要一段時間才能構建。 – Kirk 2014-10-23 16:42:52