2015-05-06 22 views
14

我是新的nosql概念,所以當我開始學習PouchDB時,我發現了這個轉換圖。我的困惑是,如果讓我說我有多個表,如何處理,這是否意味着我需要創建多個數據庫?因爲根據我對pouchdb的理解,數據庫可以存儲大量文檔,但是文檔是指sql中的一行還是我誤解了?PouchDB結構

enter image description here

回答

7

...這是否意味着我需要創建多個數據庫?

...文檔意味着SQL行還是我誤解?

沒錯。 SQL表定義了列標題(名稱和類型) - 它們是文檔的JSON屬性名稱。

因此,具有相同屬性(所謂的「模式」)的所有文檔(行)都等同於您的SQL表。您可以根據需要在一個數據庫中使用不同的模式(訪問json-schema.org獲取靈感)。

如何分別要求他們?創建CouchDB視圖!您可以使用SQL中的一個請求獲取表格數據的全部/部分「行」(具有相同模式的文檔)。

要寫這樣的視圖很容易,屬性type是非常常見的CouchDB文檔。您從SQL表中得知的名稱可以是您的類型,如doc.type: "animal"

您的視圖名稱可能是animalByNameanimalByWeight。取決於你的需求。

9

這個問題的答案似乎令人驚訝地沒有記錄在案。雖然@llabball明確給出了一個體面的答案,但我不認爲這些觀點總是要走的。

正如你可以在部分當不使用的map/reducehere,諾蘭解釋說,簡單的應用,關鍵是要濫用_ids,並充分利用的allDocs()力量。換句話說,如果你有兩種不同的類型(比如說藝術家和專輯),那麼你可以在每個類型的ID前面添加一個簡單的可搜索數據集。例如_id: 'artist_name' & _id: 'album_title',可以讓您輕鬆地按名稱順序檢索藝術家。

以這種方式佈置數據將導致更好的性能,因爲不需要額外的索引和更少的代碼。然而很明顯,如果你的數據需求更復雜,那麼視圖就是要走的路。

0

有時多數據庫計劃是一個很好的選擇,例如每個用戶的數據庫或每個用戶特徵的數據庫。查看CouchDB郵件列表上的this conversation