簡體   English   中英

NoSQL數據庫架構設計

[英]NoSQL db schema design

我正在嘗試找到一種方法來創建數據庫模式。 對數據庫的大多數操作都是Read。

假設我在應用程序上銷售書籍,因此架構可能如下所示

{
 { title : "Adventures of Huckleberry Finn"
  author : ["Mark Twain", "Thomas Becker", "Colin Barling"],
  pageCount : 366,
  genre: ["satire"] ,
  release: "1884",
 },
 { title : "The Great Gatsby"
  author : ["F.Scott Fitzgerald"],
  pageCount : 443,
  genre: ["Novel, "Historical drama"] ,
  release: "1924"
 },
 { title : "This Side of Paradise"
  author : ["F.Scott Fitzgerald"],
  pageCount : 233,
  genre: ["Novel] ,
  release: "1920"
 }
}

所以大多數操作都是這樣的

1) Grab all books by "F.Scott Fitzgerald"
2) Grab books under genre "Novel"
3) Grab all book with page count less than 400
4) Grab books with page count more than 100 no later than 1930

我應該為作者和流派創建單獨的集合,然后像在關系數據庫中那樣引用它們或像上面那樣嵌入它們? 因為看起來我嵌入它們,為了在db中存儲數據我必須手動輸入作者名稱,我可能會錯誤地將F.Scott Fitzgerald放入文檔中,我不會得到結果。

首先,我會說一個不錯的數據庫選擇。

就mongo而言,應該定義模式,以便最好地為您的訪問模式提供服務。 在設計模式時,我們還必須注意到mongo不支持SQL等連接和事務。 因此,考慮到所有這些和其他屬性,我建議您選擇架構最好,因為它為您的訪問模式提供服務。 通常每當我們提取任何書籍細節時,我們都需要所有信息,如作者,頁面,流派,年份,價格等。它就像面向對象編程,其中一個類必須具有其所有屬性,並且所有非類屬性應保存在其他類。 將作者單獨收集只需添加一個額外的集合,然后您需要通過代碼處理連接和事務。 考慮到您對手動輸入作者姓名的擔憂,我實際上並沒有得到。 假設用戶希望通過作者“xyz”查看書籍,以便他點擊作者姓名“xyz”(如某些標簽),您可以獲取查詢以將所有具有所選名稱的書籍作為作者之一。 如果用戶手動鍵入用戶名,那么它只是通過輸入的字符串查找文檔。 我這里看不到任何手冊。 只需添加,價格鍵也適用於每個文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM