2012-03-30 117 views
0

我開始設計一個網站,它有一些我從未真正處理過的要求。具體而言,數據對象將具有相似但不準確的屬性。是的,我大概可以找出大多數可能的屬性,然後不填充那些沒有意義的屬性,因此保留傳統的「關係」表和列設計,但我認爲這可能是一個很好的學習NoSQL的時間。NoSQL或SQL Server

此外,用戶將有1,並且只有1個文本框進行搜索,並且我將需要搜索所有數據對象及其屬性以查找該字符串。

理想情況下,我想按照「重要性」的順序返回搜索結果,這意味着如果在「名稱」屬性中找到用戶輸入字符串的匹配項,它將作爲更高置信度匹配返回比如果字符串在子屬性上匹配。

任何人都有這種情況的經驗嗎?你有什麼嘗試過,或沒有工作?我錯在認爲這個項目非常適合NoSQL類型的數據庫嗎?

+0

如果您需要「實體」和/或事務一致性之間的關係(如果一致性比可用性更重要),那麼使用傳統的SQL Server。如果您的數據在形狀上更「不可預知」,並且(接近)100%可用性比關係一致性更重要 - 那麼您可以查看NoSQL及其文檔存儲模型。 – 2012-03-30 05:37:16

回答

2

堅持使用傳統的關係型數據庫,如MySQL或Postgresql。我會建議您在獲得匹配結果後按照您的應用代碼中的相關性進行排序。結果集的大小應該會影響您的設計選擇,但是如果您的結果少於1-2k,那麼請保持簡單並且不要過多地考慮優化。

NoSQL只是一個啞鍵值存儲區,是一個可以跨多個應用程序實例共享的持久字典。它可以解決可伸縮性問題,但會引入新的問題,因爲您現在只有一個啞數據存儲。關係數據庫已經進行了多年的性能調優並且做得很好。

我發現NoSQL更適合存儲狀態數據,如用戶首選項或緩存。如果你正在分析數據之間的關係,那麼你需要一個關係數據庫。