Solr vs. 關聯式資料庫 (RDBMS) 比較差異
不少開發人員遇見 solr 的第一個問題,總是:
“到底 Solr 與 SQL RDBMS 有啥不同? 孰優孰劣?”
其實 Solr 與 關聯式資料庫 RDBMS們(例如 MySQL、SQL、Oracle) ,這兩類並非競爭關係。
相反的,其實它們是為了成就更完整的彼此而存在。
簡單來說,RDBMS 遵循 ACID 原則(Atomicity 原子性、Consistency 一致性、Isolation 隔離性、Durability 持續性)對於交易較為嚴謹,因此存取資料偏向精準取向,且對關鍵檢索的提取較為偏弱。
Solr 則是非常自由走向,沒有事前嚴謹的資料表設計原則,但藉由 關鍵字詞反向收錄的特性,讓它檢索關鍵字、相關性等領域大為提升效率。加上關鍵字高亮、分面檢索的功能實現,基本就是一個完整強大的搜尋引擎。
從下方電商平台的問題範例,我們可以體會 Solr 與 RDBMS 兩者的差異:
- 如果你想詢問「找出所有與 “無線充電QI” 關鍵字的產品,並且依照關聯性排序」;或「符合 “apple watch” 的所有 “配件“,但請幫我依照 “廠牌” 分類好」這類問題。無疑問這就是 Solr 的強項。
- 相對的,如果你想「找出2010-2021年之間進行註冊,且消費金額超過10,000以上的客戶」,那這樣的運算就是要依靠 RDBMS 在客戶、訂單等數個資料表中拉出來進行。
所以,問題關鍵不在「誰最優秀」,而是「我該如何運用兩者的優勢」來幫助我們專案達到最好的成效。
從開發者的角度來看,以軟體專案或是WEB網站為例:如果要進行管理後台設計,勢必要使用 RDBMS 資料庫的精準資料更新特質,而關於搜索關鍵字詞,就需要運用到 Solr 的搜尋引擎強項。
(上述專案是我們以 Solr 技術, 為 “慈濟數位典藏資源網” 開發之專案)