我過去的資料庫經驗以 RDBMS (關聯式資料庫)為主,近年來常聽到 NoSQL 但都沒實際碰過,直到年初試玩 Redis才踏出第一步,查找資料過程發現一堆沒看過的資料庫名字,為了怕被笑沒見過世面,決定來認識市場上的主流資料庫。

想了解當今的主流資料庫引擎,DB Engines Ranking 應是最權威的參考來源。

DB-Engines 排名的依據是「受歡迎程度/流行度」(Popularity) (非市佔率),其計算資料來源如下:參考

  • 網站上提及次數:以 Google / Bing 查詢結果數量來衡量
  • 網友感興趣程度:以 Google Trends 中的搜索頻率為準
  • 技術討論頻率:採計 Stack Overflow 和 DBA Stack Exchange 相關問題數量和感興趣用戶數量
  • 相關工作機會數量:計算求職搜索引擎 Indeed 和 Simply Hired 上的工作機會
  • 在 LinkedIn 個人檔案被提到次數
  • 提及的 Twitter 推文數量

之後會進行一些標準化及平均計算,以量化流行度,當系統 A 的值是系統 B 的兩倍,則代表平均各評估標準時相等於兩倍流行。

DB-Engines 排名並不衡量系統的安裝數量或在 IT 系統的使用情況,但基於「在討論或職務說明愈常被提及,可預期未來該系統使用愈普遍」,故 DB-Engines 排名可視為一種早期指標。

2023/02 的資料庫排名如下:


圖片來源

來認識前 20 名:

前三名 Oracle、MySQL、MSSQL 積分遙遙領先,大家也都耳熟能詳,這裡就不介紹了。

第四名 PostgreSQL (發音是 post-gress-Q-L) 跟 MySQL 一樣是開源,二者常被拿來比較。我自己的感覺,PostgreSQL 之於 MySQL,就像 Debian 之於 Ubuntu。前者偏向開發社群推動,標榜自由軟體精神;後者有商業公司支援,有免費的社群版及付費的商業授權版本。(註:免費未必是優點,在企業實務中,付錢完全不是問題,出包時有廠商出來坦才是重點) PostgreSQL 在功能上更先進,依循 SQL 標準,較易移轉到其他資料庫。MySQL 較輕巧易用、社群資源豐富。

第五名 MongoDB 是文件導向的 NoSQL 資料庫,資料以類似 JSON 的文件格式保存,為 NoSQL 資料庫之首。

第六名 Redis 是以 Key/Value 形式儲存資料的 NoSQL 資料庫,資料都存在記憶體,是它最大的特色與優勢,不適合長期保存資料,最常用於快取。

第七名 IBM DB2 是歷史悠久的老牌資料庫,二十多年前我剛出社會跟它打過交道,不過十幾年沒再聽人提起它,居然還在前七名讓我頗驚訝。

第八名 ElasticsearchELK 日誌中心化解決方案的開源資料庫,偏向全文搜尋引擎,一般會用在 Log 蒐集查詢,不太會當成應用程式的資料庫來源。

第九名 SQLite 是全球安裝數量最多的資料庫,背後有段奇妙的故事: FB 貼文

SQLite 是世上使用最普遍的資料庫(手機、飛機、太空... 無所不在),是 Dwayne Richard Hipp (DRH) 為奧斯卡·奧斯汀號驅逐艦(DDG-79 Oscar Austin)開發軟體時的副產品,當時因為對 Informix 資料庫不滿意,乾脆自己寫一套。
先寫了 Byte Code 引擎、再寫了 Compiler 將 SQL 指令轉成 Byte Code,SQLite 誕生~ 丟上 Internet 後迅速被 Motorola、AOL、Nokia、Mozilla、Android 採用。 有趣的是 DDG 79 最後並沒有採用 SQLite,因為客戶想要 Informix。(OS: 花大錢但出包時有廠商可以罵,無價!)
身為常常在造輪子的人,DRH 的這段註腳讓我咀嚼再三:
這是個瘋狂的點子,我要自己寫個資料庫引擎而不是裝個資料庫,如果你去徵詢專家的看法,他們會說「不可能,不會成功的,別傻了」
所幸,我不認識任何專家,所以我還是幹了,結果事情就變成這樣。我想,也許不要什麼都聽專家的意見,做你覺得合理的事,解決你的問題就對了。
不過,如果當初就知道這有多困難,我應該不會自已寫。

第十名 Microsoft Access,與其說是資料庫,感覺更像 Office 軟體的一員。記憶中二十幾年前是小型資料庫應用的優先選項之一,甚至能當 ASP 網站的資料來源。我一樣很久沒聽到它的消息了,但它可能還散佈在辦公室角落,是許多助理妹妹小祕書們不可或缺的好夥伴。

第 11 名 Snowflake,是一個 SaaS 的資料庫平台,這幾年快速竄起。

第 12 名 Cassandra (社群常簡稱為 C*),為開源式分散 NoSQL 資料庫,採用 Wide Column 模型,每列資料由 Row Key 唯一標識,最多可以有 20 億個欄,每欄有其 Column Key 標識,可理解為個二維 Key-Value 儲存體 (<key1, map<key2,value>>)。

第 13 名 MariaDB 是 MySQL 的 Fork 版本,由 MySQL 原始開發者帶領社群開發,有商業支援,與 MySQL 高度相容,但堅持 GNU GPL 開源精神,旨在防止 MySQL 在 Oracle 收購後走向封閉。

第 14 名 Splunk 常用於 SIEM、日誌管理... 等機器資料的蒐集與整理,跟 Elasticsearch 的定位有點像,偏向搜尋引擎。

第 15 名 Amazon DynamoDB 是 AWS 的全受管、無伺服器、鍵值 NoSQL 資料庫。

第 16 名 Azure SQL Database 是微軟的 PaaS 雲端資料庫,與 SQL Server 完全相容,程式換連線字串便能改接。好處是擴充容易,費用彈性。(延伸閱讀:Azure 成本管理 03 - SQL Database 費用解析和選擇定價層 by 黯雲端記事錄)

第 17 名 Hive 是基於 Hadoop 的資料倉儲工具,離我有點遠,跳過。

第 18 名 Teradata 一樣是大數據、資料倉儲,我再跳。

第 19 名 Databricks 還是巨量資料、資料湖、大數據類,我繼續跳。

第 20 名 Neo4j 是一種 Graph Database,不同於 RDBMS,用節點跟關係組織資料。在社交網路圖譜、企業網路圖譜、反洗錢/反詐欺多維關聯分析等應用情場下特別吃香。

整理完畢,稍微緩解一些資訊焦慮,哈!


Comments

# by Ming

近十來年都在跟DB2打交道,的確冷門但又很「大牌」(大品牌啦!)。之前客戶打算遷移到Oracle,因為種種因素結果不了了之。給我兩者挑一個,我會選DB2,原因很簡單,IBM跟Oracle,我還比較喜歡IBM的東西 XD

# by Huang

學校教什麼,學生就學什麼,業界就用什麼...(倚天系統策略),不過有錢公司(付錢=省事)和古老的系統(大到不能改)還是依舊,市佔率居高不下XD。

# by Anonymous

這集寫的不錯又限中肯

# by smalltwo

IBM DB2的數字,歸功於IBM AS400強悍的金融業界占有率

# by 佛弟子孫守真任真甫

只會一點 MS Access 的末學前來朝聖進學解。感恩感恩 讚歎讚歎 南無阿彌陀佛

Post a comment