2011-02-16 108 views
3

我開始ASP.NET MVC 3通用管理系統(項目管理是第一個組件)。現在我已經在RavenDB上讀了一些,聽起來很有趣。我喜歡的最重要的事情之一是我不需要ORM上的任何類型來處理來自數據庫的數據。這將使我的代碼更加清潔和快捷。然而,在過去的6年多時間裏,我僅僅使用了MySQL的背景,我傾向於認爲與我的數據非常相關。有一些看起來像NoSQL的東西不會有好處。我想把這些東西扔在那裏,也許這些問題可以在NoSQL解決方案中處理,我只是想到關係(再次,也許這個項目應該用MySQL來完成)。這些是我正在考慮的問題:我可以使用RavenDB(NoSQL)還是應該使用MySQL(RDBMS)?

  1. 獨特的Idenifiers:我希望能夠擁有許多事物的唯一標識符。對於像項目這樣的東西,這個名字應該是唯一的,並且可以使用它,但是當它涉及項目下的任務時,標題可能不是唯一的,這是我將使用quto增量字段的地方,但我可以在RavenDB中執行此操作從我可以告訴)

  2. 鏈接:使用狀態和類型等字段我只是使用鏈接與外鍵。現在,對於一對多的關係,我可以使用文本,而不是嘗試鏈接外鍵(您在NoSQL中沒有),而是使用多對多鏈接,這是因爲問題。例如,我打算有一個標籤系統(就像這裏),大多數商品可以有一個到多個標籤,然後我可以在這些標籤上搜索商品。有沒有辦法在NoSQL中做到這一點?

是一個RDBMS真的在這裏工作的最佳工具還是我只是沒有正確覺得「的NoSQL」的方式,我可以用的NoSQL(RavenDB)做到這一點?

回答

0

Ayende寫了一篇文章"Modeling reference data in RavenDB"它回答了你的一些問題,重新鏈接。您將擁有參考文檔和其他文檔之間的數據副本,並且文檔數據庫的冗餘性「可以」。您仍然可以基於您存儲的ID或文本來構建索引或查詢。

我希望SQL支持一個事務處理系統,例如Accounts Receivable應用程序,您需要執行即席查詢。對於文檔數據庫,您真的需要考慮如何提取數據並預先構建索引來回答這些問題。在RavenDB中,還有一個動態索引函數,用於從數據庫中獲取和緩存查詢。

對於大多數項目都是任務的項目管理,我會認爲RavenDB會適合您的需求。

2

我知道這是一箇舊帖子。最初編寫的文檔可能不太好。但是,如果在此處遇到其他絆腳石,請參考:

  1. Raven默認帶有HiLo文檔ID生成策略。在沒有指定id的情況下存儲新文檔將獲得自動遞增的ID,例如「projects/1」,「projects/2」等。更多信息here

  2. 文檔中處理文檔關係的不同方式的最佳指導是here。對於你描述的情況,你根本不需要單獨的文檔。您可以簡單地將標籤名稱的字符串數組嵌入到每個項目中。文件不平坦,可以構造。是的,你仍然可以查詢他們。

希望你自己從原帖子發現了這個。

相關問題