甲骨文

Oracle 不是最流行的數據庫,但卻是最著名的數據庫。雖然可以說是最受歡迎的。看怎麼算。如果你只看公司的數量,那麼 MySQL 是最受歡迎的數據庫:它非常好而且完全免費 :)

但也可以換個角度考慮。如果有一家擁有一百萬客戶的公司使用 Oracle,有 5 家公司擁有一百個客戶使用 MySQL,那麼 Oracle 有一百萬客戶而 MySQL 只有 500 人。

總的來說,如果你讓有錢的大公司看看他們選擇了哪種 DBMS,那麼世界上大約三分之一的公司都在使用 Oracle。像這樣的東西。

作為一名程序員,您將來更有可能在 Oracle 上工作,而不是在 MySQL 上工作。Internet 上有一個很棒的視頻演示了過去 20 年來 DBMS 的受歡迎程度發生了怎樣的變化。

MySQL

在所有 DBMS 中第二流行的是 MySQL。並且是所有免費DBMS中流行度第一的。現在你明白我們為什麼要從她的例子中學習 SQL 了吧。炒作歸炒作,企業在基礎設施的選擇上相當保守。

原則上,我們已經講過MySQL。一旦他們被Sun收購,然後被Oracle收購。嗯,很難稱之為善良的公司。

正是他們,在收購了Sun之後,不斷地試圖讓Java付出代價。

是的,在甲骨文收購它們之前,Sun 擁有 Java 和 MySQL。

這個事實和 Oracle 的聲譽讓 MySQL 開發人員有點害怕,他們決定 fork MySQL 項目並將其命名為 MariaDB。

MariaDB實際上是MySQL 的克隆,具有一些實現怪癖,可以讓您繞過專利和許可的細微差別。

不過,甲骨文也不是傻子。為了防止客戶和開發人員洩露給 MariaDB,Oracle 繼續資助 MySQL 的開發和開發,MySQL 繼續免費。

坐在兩把椅子上,為企業客戶發布了付費的MySQL Enterprise ,它與MySQL Community Edition沒有區別,但其許可證更適合企業。

數據庫

另一個有趣的 DBMS 是 PostgreSQL(發音為“postgres cue”)。

這是近年來迅速普及的另一種免費 DBMS。雖然離MySQL還差得很遠。

PostgreSQL 主要專注於分佈式工作。它的優勢是:

  • 高性能可靠的事務和復制機制
  • 內置編程語言的可擴展系統:PL SQL、PL JS、PL Python……
  • 表繼承
  • 索引幾何(特別是地理)對象的能力
  • 內置對 JSON 格式的半結構化數據的支持,並能夠對其進行索引
  • 可擴展性(創建新數據類型、索引類型、編程語言、擴展模塊、連接任何外部數據源的能力)

知道為什麼這麼叫嗎?事情是這樣的……

大約 50 年前,即 70 年代初,伯克利大學開始開發自己的關係型 DBMS,並將其命名為Ingres

在 80 年代初期,Michael Stonebreaker 教授離開了該項目並決定編寫自己的 DBMS 與二十一點和妓女。他和他的學生開始編寫他們自己的 DBMS,他們將其簡稱為Post Ingres,後來簡稱為Postgres

由於 Postgres 這個名字對任何人都沒有任何意義,因此決定為其添加 SQL 後綴。PostgreSQL 就這樣橫空出世,立馬丟了雙S,開始寫成PostgreSQL。但是你說名字,你需要像 PostgresQL 一樣讀它。

無SQL

如果您對數據庫感興趣,那麼您肯定聽說過NoSQL 數據庫。我趕緊打擾你:NoSQL 純粹是一個營銷名稱,而 SQL 就在那裡。他只是被截斷了。

它是什麼樣子的?想像一個用 HTML、CSS 和 JavaScript 編寫的漂亮網頁……在 1995 年的瀏覽器中打開。它依靠 10% 的 CSS 工作,完全不支持 JavaScript。這個新的精簡標準稱為…… NoHtml

例如,NoSQL 可能不支持表之間的 JOIN,然後您必須在程序中的 Java 代碼級別模擬它,或者將相關表的所有數據存儲在一個巨大的表中。

如果在 NoHtml 的情況下我們似乎回滾到 20 年前,那麼在 NoSQL 的情況下,回滾發生在大約 40 年前。

以Facebook用來存儲數十億用戶數據的Cassandra NoSQL 數據庫為例。實際上,他們開發了它,然後將其發佈為一個開源項目。

讓我們從最有趣的開始——所有的 DBMS 代碼都是用 Java 編寫的。C++ 代碼可能會運行得更快,但會有更多錯誤。而且Java代碼更容易維護和開發。

向 Casandra DBMS 發出請求的一般格式看起來非常熟悉:

  SELECT columns  
  FROM table 
  WHERE condition
  GROUP BY columns 
  ORDER BY sorting 
  LIMIT quantity

如您所見,SQL 就在那裡。你知道這裡缺少什麼嗎?加入!您只能從一個表中選擇數據:)

這是官方文檔中的引述:

您不能在 Cassandra 中執行聯接。如果您已經設計了一個數據模型並發現您需要類似連接的東西,您將不得不在客戶端完成工作,或者創建一個非規範化的第二個表來代表您的連接結果。