2010-10-09 76 views
2

我正在查找NoSQL數據庫,該數據庫允許查詢返回落在指定範圍內的記錄。帶有範圍查詢的NoSQL數據庫

我對NoSQL命名不太好(因爲我還在研究任何他們可行的),所以我會解釋它如何在SQL中完成。

我需要做的是搜索記錄(比如說論壇帖子),這些記錄超過了特定的分數。或多或少像這樣:SELECT * FROM posts WHERE score > 2

問題在於,當我使用PHP時,是否可以使用任何NoSQL數據庫(鍵值或寬列)?如果任何NoSQL數據庫都支持這樣的查詢是不可能的?

回答

2

您可能想查看MongoDB。它的流行,並且支持範圍查詢:

不像許多其他非關係型數據庫解決方案,任何字段可以隨時進行查詢。除了完全匹配的字段之外,MongoDB還支持範圍查詢,正則表達式搜索和其他特殊類型的查詢。查詢還可以包含用戶定義的JavaScript函數(如果函數返回true,則文檔匹配)。

來源:Wikipedia - MongoDB Features

這裏是如何您SELECT * FROM posts WHERE score > 2查詢看起來像在蒙戈:

db.posts.find({ score : {$gt: 2} }); 

延伸閱讀:


見:MongoDB : Production Deployments

+0

我正確地發現MongoDB從ACID中移除了持久性? – 2010-10-09 16:03:15

+0

@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

+0

@Hubert:你也可能對此感興趣:http://www.mongodb.org/display/DOCS/Durability+and+Repair和這個:http://blog.mongodb.org/post/381927266/what-關於耐久性 – 2010-10-09 16:38:14

0

OrientDB支持擴展的架構範式少SQL。

可以執行這個查詢:

SELECT * FROM posts WHERE score > 2 

但標的指數不與由=(等於)不同的運營商使用。因此,數百萬條記錄的速度可能不會太快,因爲它需要掃描整個羣集以滿足條件(類似於關係世界中的表)。

+0

那麼這對我的需求並不好,有兩個原因:使用「大於」分數只是查詢的一部分(可能還有其他不相同的情況),第二:我確實需要這樣的查詢速度非常快 – 2010-10-13 22:39:41

+0

此功能計劃在下一個版本中使用:http://code.google.com/p/orient/issues/detail?id=64。我們在談論多少記錄?數百萬或數十億? – Lvca 2010-10-15 22:55:41

+0

百萬,但我打算在VPS上運行它,所以我需要所有的表現,我可以得到:) – 2010-10-16 16:22:11