@Xeoncross
我建我的模式,使他們不需要加入這讓我對索引的INT列的簡單的搜索操作。換句話說,列在RAM和快速值檢查通過他們(WHERE user_id IN(12,43,5,2)或修訂版= 4)
那麼,你會愛上MongoDB。 MongoDB支持索引,因此您可以索引user_id和revision,並且此查詢將能夠相對較快地返回。
但是,請注意,許多NoSQL數據庫只支持密鑰查找,不一定支持「二級索引」,因此您必須爲此做一些功課。
所以我試圖想象如何在數據庫中查看每一行可以被認爲是可以接受的(如果的確如此)。
那麼,如果你在運行一個基於SQL的數據庫查詢,你沒有這樣的數據庫將執行表掃描(即:通過每一行看)的索引。
他們搜索每個記錄並將其傳遞給您編寫的JavaScript函數,該函數通過查看每個記錄來計算返回的結果。
所以實際上大多數NoSQL數據庫都支持這個。但請不要將它用於實時查詢。此選項主要用於執行用於彙總數據的map-reduce操作。
下面是對NoSQL的不同看法。 SQL在關係操作方面非常出色,但關係操作的伸縮性並不好。許多NoSQL專注於面向Key-Value/Document的概念。
SQL的工作原理是您希望標準化非重複數據,並且您要以大集合來獲取數據。 NoSQL的工作原理是,您希望快速查詢某些「塊」數據,但是您願意等待數據依賴「大集合」(在後臺運行映射 - 縮減)。
這是一個很大的權衡,但如果在現代Web應用程序上有很多意義。大部分時間用於加載一個頁面(博客文章,wiki條目,SO問題),大部分數據都與這個元素相關聯或「懸掛」。因此,通過一個查詢水平可伸縮查詢獲取所需的所有內容的概念非常有用。
這不是一切的解決方案,但它是很多用例的一個非常好的選擇。
謝謝你的完整答案。由於MongoDB支持二級索引,因此不再有問題。我在看CouchDB,它似乎只支持主鍵,這使得它看起來很沒用。 MongoDB似乎是要走的路,因爲它具有普通SQL數據庫的大部分功能,不包括連接和事務(我也不使用它們)。 – Xeoncross 2010-10-21 15:26:51
是的,我更喜歡MongoDB!我設置它並在10分鐘內編寫它(包括閱讀示例教程)。 – bbqchickenrobot 2010-10-21 18:35:20