使用 Solr/Lucene 搜尋非文本表?
我正在創建一個 Web 應用程序來檢索一個大(4m 行)表的子集。4m 行每年只更換一次。該表有 200 多列布爾和數字類型。它沒有文本列。
使用者將查詢該表的子集以供下載。
我對 PostgreSQL 9.1 數據庫比較熟悉,我的計劃是:
- 該網路應用程序將幫助使用者創建諸如“WHERE a=3 AND b=true AND c>300”之類的查詢
- 數據庫將為最常用的列提供適當的索引。
現在..我在這裡讀到: https ://stackoverflow.com/questions/10053050/why-is-solr-so-much-faster-than-postgres :
我最近從 Postgres 切換到 Solr,發現我們的查詢速度提高了約 50 倍。我們執行的查詢涉及多個範圍,我們的數據是車輛列表。例如:“查找所有里程 < 50,000 的車輛, $ 5,000 < price < $ 10,000,製造=馬自達……”
所以現在我想知道:即使不涉及全文搜尋,Solr、Lucene、ElasticSearch、Amazon Cloud Search 搜尋是否會比 PostgreSQL 更快?
即使不涉及全文搜尋,Solr/Lucene 搜尋是否會/能否比 PostgreSQL 更快?
是的。根據您引用的範例,對於某些案例,它可能比關係數據庫快很多倍。真的不足為奇。
Solr
是一個搜尋引擎。PostgreSQL
是一個關係數據庫引擎。
Solr
是為了做好一件事而從頭開始建構的,搜尋。它不能完成事務數據庫系統的工作。Solr
不能保證 ACID 合規性,它不能有效地管理並發,它不是 OLTP 工作負載的可行候選者。
PostgreSQL
是從頭開始建構的,目的是做好一件事,即事務處理。它還可以提供搜尋類型的設施,但這不是它的主要作用。它確實保證了 ACID 合規性,它確實管理並發,它不是一個搜尋引擎。4m 行每年只更換一次。
在這種情況下,您可能不需要關係數據庫引擎的關鍵特性。
你需要一個搜尋引擎。可能是Solr、Lucene、ElasticSearch、Amazon Cloud Search或其他幾十個之一,但首先它是一個搜尋平台,而不是一個關係數據庫。