2013-02-06 32 views
1

我對我的Couchbase水桶的結構有個疑問。我正在運行2.0和.net客戶端。我們即將推出一些現場活動,只是想通過「正確」的桶設計進行最終測試,但已經意識到這並不像我們想象的那麼容易。Couchbase水桶/視圖限制 - 設計

我們有什麼:

基本上,我們目前有1桶1視圖。每個視圖但被寫入以不同的方式返回數據...

假設文檔具有以下值(JSON DOC):值1,值2,值3,... Value50

的觀點是這麼寫的其發射多個結果,即:

emit ([1, Value1, Value2, Value3], null)

emit ([2, Value10, Value20, Value30], null)

然而,每個視圖僅在1'文檔類型'上,即在開始時的所有視圖都具有如果條件如if(doc.docType = "Blah")

然後在.net代碼中,當我們需要基於value10,value20和value30的文檔時開始鍵和結束鍵以'2'開頭,我們就可以得到我們想要的。

問題1:這個設計好嗎?我見過很多這樣的例子,但是我們在每個視圖中都有5-10個不同的發射,所以Couchbase必須對它進行索引。任何與此相關的性能問題與將每個問題放在他們自己的視野中相比其次,我們目前使用1個桶並得到超過10個視圖的警告。所以我們要拆分桶。我們認爲我們可以根據邏輯組將它分成大約7-8個不同的桶。我們意識到有10個桶限制。

問題2:我在一個論壇上看到,.NET的SDK一次只能連接1個桶......這似乎是錯誤的。我的意思是關於SO的其他問題,如here他們使用多個桶。我們打算在每個存儲桶的global.asax中打開連接,然後通過應用程序使用它。即client1.getview...,然後client2.getview...這意味着1頁(.aspx)將從1個存儲桶和另一個存儲桶向1個呼叫填充頁面。我有一個快速發揮,它似乎工作...但只是想知道這是否是一個可接受的方式使用CB。我最好的做法是將所有與1邏輯應用有關的文檔都放在一個桶裏面,這讓我感到困惑:...... SI會爲每個文檔創建「幾乎」1個桶(這樣我們可以在它上面創建10個視圖),然後當我們達到10個桶的限制時就開始了一個新的集羣(注意:我們處於獨特的位置,我們有太多未使用的硬件,即一臺服務器有64GB未使用/未分配的內存,資源不是一個特殊問題。 ...性能是!)

我希望我的問題有道理。請讓我知道,如果不

乾杯

羅賓

注:.NET 4.0,Couchbase 2.0。我已經閱讀了這兩本手冊,但仍不清楚上述內容。

回答

0

關於您的意見設計。

您視圖的全局設計是可以的,意思是有一個單一的視圖來測試文檔的「類型/值」,並基於這個值發出不同的索引。

你說你有11個視圖,它們是如何組織的?多少設計文件?意見/設計文件?

我在問這是因爲設計文檔中的所有視圖都在同一時間更新。看看到「查看設計最佳實踐」一章:

http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-bestpractice.html

而且是大數據集/集羣?

+0

謝謝,很高興知道'測試'方法是可以接受的。嗯,我們有11個不同的json結構。每個結構都有1個視圖,其中不同的「測試」重新發射。如果doc.documenttype =「ReallyImportantJsonDoc1」',那麼視圖中的第一個'if'條件總是'',然後不同的測試會在它下面發射......這有道理嗎?所以我想我可以把每個(幾乎)放在一個單獨的桶中...... o和數據集的大小......還不確定。我試圖阻止'點擊'的數據庫就像20gb那麼不大,只是太頻繁訪問 - 性能下降....(模式結構太...'垃圾') –