我正在查找NoSQL數據庫,該數據庫允許查詢返回落在指定範圍內的記錄。帶有範圍查詢的NoSQL數據庫
我對NoSQL命名不太好(因爲我還在研究任何他們可行的),所以我會解釋它如何在SQL中完成。
我需要做的是搜索記錄(比如說論壇帖子),這些記錄超過了特定的分數。或多或少像這樣:SELECT * FROM posts WHERE score > 2
。
問題在於,當我使用PHP時,是否可以使用任何NoSQL數據庫(鍵值或寬列)?如果任何NoSQL數據庫都支持這樣的查詢是不可能的?
我正在查找NoSQL數據庫,該數據庫允許查詢返回落在指定範圍內的記錄。帶有範圍查詢的NoSQL數據庫
我對NoSQL命名不太好(因爲我還在研究任何他們可行的),所以我會解釋它如何在SQL中完成。
我需要做的是搜索記錄(比如說論壇帖子),這些記錄超過了特定的分數。或多或少像這樣:SELECT * FROM posts WHERE score > 2
。
問題在於,當我使用PHP時,是否可以使用任何NoSQL數據庫(鍵值或寬列)?如果任何NoSQL數據庫都支持這樣的查詢是不可能的?
您可能想查看MongoDB。它的流行,並且支持範圍查詢:
不像許多其他非關係型數據庫解決方案,任何字段可以隨時進行查詢。除了完全匹配的字段之外,MongoDB還支持範圍查詢,正則表達式搜索和其他特殊類型的查詢。查詢還可以包含用戶定義的JavaScript函數(如果函數返回true,則文檔匹配)。
這裏是如何您SELECT * FROM posts WHERE score > 2
查詢看起來像在蒙戈:
db.posts.find({ score : {$gt: 2} });
延伸閱讀:
OrientDB支持擴展的架構範式少SQL。
可以執行這個查詢:
SELECT * FROM posts WHERE score > 2
但標的指數不與由=(等於)不同的運營商使用。因此,數百萬條記錄的速度可能不會太快,因爲它需要掃描整個羣集以滿足條件(類似於關係世界中的表)。
那麼這對我的需求並不好,有兩個原因:使用「大於」分數只是查詢的一部分(可能還有其他不相同的情況),第二:我確實需要這樣的查詢速度非常快 – 2010-10-13 22:39:41
此功能計劃在下一個版本中使用:http://code.google.com/p/orient/issues/detail?id=64。我們在談論多少記錄?數百萬或數十億? – Lvca 2010-10-15 22:55:41
百萬,但我打算在VPS上運行它,所以我需要所有的表現,我可以得到:) – 2010-10-16 16:22:11
我正確地發現MongoDB從ACID中移除了持久性? – 2010-10-09 16:03:15
@Hubert:這是一種折衷。你可能想看看這個問題:[是否有任何符合ACID的NoSQL?](http://stackoverflow.com/questions/2608103/is-there-any-nosql-that-is-acid-compliant) 。 MongoDB仍然是支持SQL數據庫的許多功能的NoSQL解決方案之一。 – 2010-10-09 16:36:12
@Hubert:你也可能對此感興趣:http://www.mongodb.org/display/DOCS/Durability+and+Repair和這個:http://blog.mongodb.org/post/381927266/what-關於耐久性 – 2010-10-09 16:38:14