Solr vs. 關聯式資料庫 (RDBMS) 比較差異



不少開發人員遇見 solr 的第一個問題,總是:

到底 Solr 與 SQL RDBMS 有啥不同 孰優孰劣?”

其實 Solr  關聯式資料庫 RDBMS們(例如 MySQLSQLOracle ,這兩類並非競爭關係。

相反的,其實它們是為了成就更完整的彼此而存在。

簡單來說,RDBMS 遵循 ACID 原則(Atomicity 原子性、Consistency 一致性、Isolation 隔離性、Durability 持續性)對於交易較為嚴謹,因此存取資料偏向精準取向,且對關鍵檢索的提取較為偏弱。

Solr 則是非常自由走向,沒有事前嚴謹的資料表設計原則,但藉由 關鍵字詞反向收錄的特性,讓它檢索關鍵字、相關性等領域大為提升效率。加上關鍵字高亮、分面檢索的功能實現,基本就是一個完整強大的搜尋引擎。

             

從下方電商平台的問題範例,我們可以體會 Solr 與 RDBMS 兩者的差異:

  • 如果你想詢問「找出所有與 無線充電QI” 關鍵字的產品,並且依照關聯性排序」;或「符合 “apple watch”  的所有 配件,但請幫我依照 廠牌分類好」這類問題。無疑問這就是 Solr 的強項
  • 相對的,如果你想「找出2010-2021年之間進行註冊,且消費金額超過10,000以上的客戶」,那這樣的運算就是要依靠 RDBMS 在客戶、訂單等數個資料表中拉出來進行

所以,問題關鍵不在「誰最優秀」,而是「我該如何運用兩者的優勢」來幫助我們專案達到最好的成效。


從開發者的角度來看,以軟體專案或是
WEB網站為例:如果要進行管理後台設計,勢必要使用 RDBMS 資料庫的精準資料更新特質,而關於搜索關鍵字詞,就需要運用到 Solr 的搜尋引擎強項

(上述專案是我們以 Solr 技術, 為 “慈濟數位典藏資源網” 開發之專案)