比方說,我有10萬份文件,看起來像這樣的集合:這是什麼數據庫? Mongo,SQL,Couch還是其他?
{
"_id": "33393y33y63i6y3i63y63636",
"Name": "Document23",
"CreatedAt": "5/23/2006",
"Tags": ["website", "shopping", "trust"],
"Keywords": ["hair accessories", "fashion", "hair gel"],
"ContactVia": ["email", "twitter", "phone"],
"Body": "Our website is dedicated to making hair products that are..."}
我希望能夠在數據庫中查詢任意數量,包括0,任何標籤,關鍵字和ContactVia的3個屬性。我需要能夠通過ANDS(本文件包括X和Y的兩個屬性)或OR(這個文件包括X或Y的屬性)進行選擇。
查詢示例:
給我說有標籤的網站和 購物前10個文件,用關鍵字匹配的「髮飾或時尚」 ,並與其中「電子郵件」一contact_via。
給我帶有「網站」或 「信任」標籤的第20個文檔,匹配關鍵字「髮膠」或「髮飾品」。
給我50個帶有「網站」標籤的文件。
我還需要通過在文件 (分型)或者其他領域或創建或更新日期訂購。所以基本上有四個「範圍」被定期查詢。
我開始了基於SQL的。然後,我搬到了Mongo,因爲它支持數組和哈希(我喜歡)。但是,它不支持使用索引的多個範圍,所以我的Mongo數據庫很慢。因爲它不能使用索引並且必須掃描1000萬個文檔。
有沒有更好的選擇。這正在推動這個應用程序投入生產(以及隨之而來的收入)。任何關於正確的數據庫或其他架構的想法都將不勝感激。
如果有問題,我在Ruby/Rails中。
你開始有像*站點在標籤查詢..你可能必須去像http://sphinxsearch.com/ – 2012-07-22 16:52:20
我不知道爲什麼你需要支持多個範圍查詢使用索引。如果索引用於多個查詢子句,返回的結果是否仍然很大,以至於無法有效地在內存中進行排序?您的數據集是否足夠大,以至於無法創建與不同查詢對應的多個索引? – 2012-07-22 18:59:53
是與一組關鍵字重疊的標籤集合嗎?或者它們是不重疊的集合?換句話說,一個特定的字符串既可以是關鍵字又可以是標籤? – 2012-07-22 19:02:23