2009-10-12 58 views
8

我聽到很多關於couchdb的信息,但是在閱讀了一些關於它的文檔之後,我仍然不明白爲什麼要使用它以及如何使用它。什麼是couchdb,我該如何使用它?

你能否澄清我對這個謎團?

+0

請不要針對我們這樣一個論壇的帖子或電子郵件。 – 2009-10-12 04:31:41

+2

我試着很好,但如果你不喜歡它沒關係。 – Natim 2009-10-12 05:04:35

+1

我認爲當你的問題作爲禮貌的電子郵件被處理時,它不會覺得「永恆」。無論哪種方式,這是一個很好的姿態。 – 2009-10-16 02:00:30

回答

12

這是一個非關係數據庫,開源,分佈式(增量式,雙向複製),無模式。 CouchDB數據庫是文檔的集合;每個文檔都是一串字符串「鍵」和相應的「值」(可以是數字,字符串,列表,日期等)。你可以有索引,查詢,視圖。

如果一個關係數據庫感覺受限於你(你發現模式過於僵化,無法在大量服務器上傳播數據庫引擎工作等),CouchDB值得考慮(這是最有趣的這些日子裏出現的許多非關係數據庫)。

但是,如果您的所有工作都快樂地適合關係數據庫,那麼這就是您可能想要繼續用於生產工作的原因(即使「與某些非關係型數據庫一起玩」仍然非常值得您的時間,個人成長和教育,這與從關係數據庫轉移大量生產系統完全不同! - )。

+1

另外請注意,CouchDB是版本化的:每個文檔的每個版本都會保留,您可以輕鬆地恢復到以前的版本。 – 2009-10-12 02:50:34

+7

@delroth,你回到以前的版本是錯誤的。從CouchDB的API參考:「你可以不依賴於文件修訂用於任何其他目的不是併發控制 由於壓實,修訂可能隨時消失,不能使用他們的客戶端版本的系統。」 – abbot 2009-10-12 08:39:43

1

引述wikipedia

它不是一個關係數據庫管理系統。數據庫不是將數據存儲在行和列中,而是管理JSON文檔的集合。集合中的文檔不需要共享模式,但通過視圖保留查詢能力。

CouchDB中提供了一種用於數據存儲比在其不表示數據表內的行傳統的關係數據庫不同的模型,而不是將其存儲的數據作爲JSON格式,「文件」。

數據存儲模型的這種差異是從MySQL和SQL Server等產品中區分出CouchDB的差異。

在編程方式訪問CouchDB的術語,它暴露了REST API,你可以從你的代碼發送HTTP請求訪問

我希望這個已經有些幫助,不過我acknowlege它可能不會給我最小對產品的熟悉

+0

好了,但在這我應該在網站中使用非關係數據庫作爲例子嗎? – Natim 2009-10-12 04:56:33

+0

@Natim當你有數據要存儲時,但它不是非常關係,並且不容易符合嚴格的模式。 – 2009-10-12 05:07:04

+0

你能舉個例子嗎? '不容易符合嚴格的模式' – Natim 2009-10-16 01:02:10

1

我根本不是一個專家(我所所做的就是擺弄它的一些...),但這裏就是我正在考慮使用它:

通常當我在設計應用程序時,我在負載平衡器後面有一堆應用程序服務器。很多時候,我有粘性的會話,以便每個用戶在會話期間回到同一個應用程序服務器。我想要做的是將couchdb實例綁定到每個應用程序服務器。

通過這種方式,您可以使用本地couchdb訪問用戶首選項,產品數據......您獲得的任何數據都不必完美更新。

所以......現在你已經獲得了關於這些本地CouchDB的數據。 CouchDB允許複製。因此,每一個固定的時間段,將數據合併(每隔X秒?)到其同行中以保持最新狀態。

作爲一個整體,你不應該擔心衝突B/C每個應用程序服務器有它自己的CouchDB和用戶連接到應用服務器,並且你有最終的一致性,因爲你有複製。

這是否回答你的問題?

+0

如果我理解得很好,CouchDB是在Apache內部構建的?所以只要你連接到apache服務器,你一定會連接到好的CouchDB服務器?爲什麼使用SQL服務器更難做到這一點? – Natim 2009-10-12 08:45:10

+0

1)不,couchDB不是內置的Apache ...但我想到的是將一個couchdb綁定到一個應用服務器實例。理論上,由於couchDB節點將被複制,所以我們希望避免任何衝突。負載平衡器和粘性會話是確保數據更改保持在一個節點中,直到它傳播到其餘節點的一種方法。 2)嗯,在我看來,是的。我不會將couchDB暴露在防火牆之外,因爲目前沒有任何安全措施可以防止任何人通過並混淆了couchdb數據。 3)這並不困難......我會說他們都很容易。 – 2009-10-13 05:22:21

1

一個很好的例子是,當你說要處理在任何一個網站或應用程序的人的數據。如果您希望設計數據並保持個人信息獨立,那麼對於將數據存儲在文檔而不是關係表中的CouchDB來說,這是一個很好的例子。在生產部署中,我的用戶最終可能會添加10%左右人員的特別數據,以及另外5%的其他有趣詳細信息。在關係上下文中,這可能會增加冗餘負載,但不會影響CouchDB。

而且這不只是一個事實,即CouchDB的非關係型:如果你過於專注於這一點,你錯過了點。 CouchDB的插入網絡,所有你需要開始是HTTP,用於創建和進行查詢(GET/PUT/POST/DELETE ...),這是REST風格,加上事實上,它是便攜,非常適合點對點共享。它還可以在所謂的'CouchApps'中提供Web應用程序,其中CouchDB將圖像,CSS和標記完全保存爲存儲在稱爲設計文檔的特殊文檔中的數據。

Check out this collection of videos introducing non-relational databases, the one on CouchDB should give you a better idea

相關問題