2013-03-01 52 views
0

我想使用面向json文檔的couchbase。 但我不知道什麼是最好的方式來存儲和結構數據,並在以後檢索。Couchbase JSON結構模型

有沒有什麼教程可以開始(couchbase.com上的學習資源沒有幫助)?

我使用PHP訪問couchbase。 我已經得到了下面的示例:

(new document) 
user1 
{ 
"uid":1, 
"name":"marius" 
} 

(new document) 
planet1 
{ 
"pid":1, 
"user_uid":1, 
"name":"earth" 
} 

(new document) 
user2 
{ 
"uid":2, 
"name":"anyone" 
} 

(new document) 
planet2 
{ 
"pid":2, 
"user_uid":2, 
"name":"saturn" 
} 

現在被設置(插入)這些文件到數據庫中最聰明的方式,以及如何我可以得到(選擇)通過選擇文件。

要說它在SQL我想 - >SELECT * FROM用戶,行星,user.uid = 1 AND planet.user_uid = 1個

回答

0

Couchbase存儲數據不同於關係數據庫。

主要有兩種方式獲取數據從Couchbase的:

鍵/值。這意味着你給你的文檔一鍵查詢,然後顯然這個值將是整個文檔。因此,對於用戶:


user = couch.get(123) 

,將返回整個文檔的用戶ID 123

意見。您可以使用map/reduce函數在Couchbase中編寫視圖。最酷的是,這些視圖可以以類似於CouchDB中的視圖的方式訪問,因此您可以執行諸如排序和限制等操作。 http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options

查看Couchbase門戶中的設計文檔/視圖。當你寫一個它會給你一個URL來測試你的地圖/減少的東西。然後,您可以將參數添加到URL以執行其他工作。

0

有沒有一般的方式來說明你的文件應該如何設計。它取決於你的應用程序的特點。寫與讀比例?數據是如何消耗的等等。憑藉在沙發上使用視圖來轉換數據的優勢,我想你可以製作更多的「通用」文檔,並創建特定的視圖來轉換文檔以適合您的用例。當然,這不是一個應該適用於所有用例的解決方案(不要將其視爲銀子彈設計)。

一個典型的例子是博客例子。您是否應該在帖子中存儲評論或者提取評論並自己提供,並提供參考?這取決於特點。有幾條評論是否更常見?還是通常會有很多評論?

另一個示例。如果您存儲訂單文件,該怎麼辦?客戶應該是訂單的一部分還是客戶的訂單?它可以是兩個嗎?是的,它可以。我會說,對於文檔dbs,您需要更加開放地重複數據。難道客戶文檔仍然是客戶的「當前視圖」,他的所有數據和訂單都包含客戶快照的片段;對於訂單環境和應用程序中的一些概述有用,然後使用對實際客戶文檔的引用?大概。但是,這又取決於你如何使用數據。

關於SQL翻譯:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-sql.html