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

GO TO FULL VERSION