2013-07-03 25 views
1

我目前正在爲我的朋友的公司開發人力資源網絡應用程序,我仍然未決定是選擇關係數據庫還是NoSQL數據庫,或者是混合數據庫。我對這些NoSQL數據庫的用例非常感興趣,這也是我爲什麼使用這個NoSQL數據庫的想法。針對實施人力資源網絡應用程序的數據庫選擇和體系結構的建議

在數據庫中的關係示例場景:

的僱員有很多(可無或多個):

  • 教育背景記錄
  • 培訓和認證記錄
  • 工作經驗記錄
  • 志願者記錄
  • 組織和其他信息記錄

此外,大部分工作將在應用程序的決策支持方面,如確定職業發展道路和發展,爲員工繼任計劃。

去NoSQL路線是否可行?基於這些關係,數據庫具有許多以僱員表爲中心的一對多關係。通過RDBMS選擇NoSQL可以在查詢和性能方面提供好處嗎? MongoDB是我的首選(當然,因爲它是我讀過的唯一的NoSQL數據庫)。

另外,我如何處理員工的圖片和掃描文件以及證書圖片?上次我使用MySQL作爲將圖片保存爲數據庫BLOB的應用程序時,在數據查詢和查找過程中,響應速度變慢。

+0

如果您將有廣泛的關係處理,併發請求,一致性挑戰(可能與生產系統有關),並且將執行大量敏感數據的大型聚合,那麼請使用關係數據庫。如果您主要需要速度和數據一致性/關係並不重要(可能使用網絡應用程序),並且將處理複雜的基於文本的查詢,那麼請使用NoSQL。更好的選擇是嘗試兩者,然後評估他們的表現,因爲你會在這裏得到不同的意見。祝一切順利。 – Sai

+0

@Sai我同意對演出的評價。關於它,這是否意味着使用專門測量它們的工具(捆綁或專有),即mysql性能監控工具,mongodb工具等... – Panoy

+0

您可以使用特定的工具來測量他們的表現,或者你可以使用你自己的指標。如果你打算使用工具,我很確定幾個用例已經被某個人比較了,並且可以在線提供。但對於您的特定用例,您可以嘗試使用工具比較其性能。 :) – Sai

回答

2

你決定與關係數據庫或NoSQL的數據庫去很大程度上將取決於多種因素:

  • 如何存儲你所需要的數據進行建模。
  • 什麼數據預期的訪問模式是要
  • 您對可擴展性有什麼要求
  • 你有數據一致性什麼要求

典型的NoSQL可能是最好的時候你有:

  • 無模式或動態數據結構。
  • 無需使用少數索引就可以訪問數據(即,您在訪問數據時不需要太多的靈活性)
  • 您需要水平擴展(傳統上更難以做到的事情關係數據庫的)
  • 你也許並不需要的事務一致性,並可能與最終讀一致性(取決於您選擇的NoSQL系統)OK

我看你列出的使用似乎更IN-與您在典型的關係數據庫支持的應用程序中可能看到的內容保持一致。這並不是說您只應使用關係數據庫。我認爲任何需要實現高可伸縮性的足夠複雜的相關服務集可能需要大量的數據存儲機制 - 關係數據庫,NoSQL,內存中緩存,持久性平面文件存儲等。您只需要根據您的需求決定是否將這些納入考慮範圍。

關於您對圖像存儲的評論。我發現很少有將圖像存儲在數據庫中的情況。在大多數情況下,存儲對圖像位置(文件路徑,URL等)的引用將是首選方法。

相關問題