PostgreSQL與MySQL技術(shù)選型
數(shù)據(jù)本質(zhì)上只是不同事實(shí)和觀察結(jié)果的集合。隨著時(shí)間的推移,開發(fā)人員意識(shí)到管理數(shù)據(jù)不僅僅是一個(gè)可選的跟蹤系統(tǒng),而是隨著世界通過互聯(lián)網(wǎng)逐漸變得更加緊密聯(lián)系而變得必不可少。
如今,企業(yè)利用數(shù)據(jù)來分析潛在客戶、實(shí)現(xiàn)他們的潛力、降低風(fēng)險(xiǎn)等。
隨著全球數(shù)據(jù)量的增加,對(duì)能幫助更有效地管理數(shù)據(jù)的強(qiáng)大靈活的數(shù)據(jù)庫的需求不斷增加。本文將研究 WordPress 最常用的兩個(gè)開源數(shù)據(jù)庫及其區(qū)別:PostgreSQL 與 MySQL。
什么是 WordPress 數(shù)據(jù)庫?
不少企業(yè)使用 WordPress 來托管他們的網(wǎng)站,占互聯(lián)網(wǎng)上所有網(wǎng)站的 43%!除此之外,它約占所有已部署內(nèi)容管理系統(tǒng) (CMS) 的 60%。其易于使用的布局使其成為初學(xué)者的完美選擇。雖然使用 WordPress 不需要事先具備編碼知識(shí),但它確實(shí)有助于理解數(shù)據(jù)庫。
沒有WordPress 數(shù)據(jù)庫,您的網(wǎng)站將無法運(yùn)行。數(shù)據(jù)庫系統(tǒng)本質(zhì)上是您網(wǎng)站的支柱。它確保一切都被跟蹤,從您博客上的內(nèi)容到不同用戶所做的評(píng)論和更改。它甚至增強(qiáng)了網(wǎng)站的加載和執(zhí)行能力。
理想的數(shù)據(jù)庫應(yīng)該是靈活的、成本友好的和可擴(kuò)展的。WordPress 數(shù)據(jù)庫有很多,我們現(xiàn)在只討論 PostgreSQL 和 MySQL。
什么是 PostgreSQL?
PostgreSQL是一種開源的對(duì)象關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它完全符合 SQL 標(biāo)準(zhǔn),并且功能豐富。它還是可擴(kuò)展的,對(duì)任何需要企業(yè)工具的人都很有用。它專為提高效率而設(shè)計(jì),幾乎可以集成到任何軟件中。
PostgreSQL 是面向?qū)ο蟮?,可以擴(kuò)展數(shù)據(jù)類型以創(chuàng)建您的自定義類型,并且它支持幾乎所有數(shù)據(jù)庫。本節(jié)將詳細(xì)介紹其歷史、功能和用例。
歷史
40 年前,年輕的開拓者、Ingres 項(xiàng)目組組長 Michael Stonebraker 離開伯克利,去開發(fā)專有版本的 Ingres。然后他回到伯克利并發(fā)起了一個(gè)后 Ingres 項(xiàng)目,該項(xiàng)目解決了當(dāng)時(shí)其他數(shù)據(jù)庫遇到的幾個(gè)問題。
那個(gè)項(xiàng)目就是 PostgreSQL 。該項(xiàng)目配備了支持多種“對(duì)象關(guān)系”數(shù)據(jù)類型所需的多項(xiàng)功能,包括支持在表之間保持一致關(guān)系的規(guī)則以及跨服務(wù)器的數(shù)據(jù)復(fù)制。PostgreSQL 的第一個(gè)版本于 1997 年 1 月 29 日形成 6.0 版。從那時(shí)起,開發(fā)人員、支持公司和志愿者都可以在其免費(fèi)和開放許可下繼續(xù)維護(hù)數(shù)據(jù)庫軟件。
主要特點(diǎn)
PostgreSQL 作為數(shù)據(jù)庫管理系統(tǒng)可以提供很多功能。它以功能穩(wěn)健性、高可靠性、性能、靈活性和易于復(fù)制而著稱。
讓我們看看是什么讓 PostgreSQL 成為您企業(yè)不可或缺的工具。
高度可靠
PostgreSQL 支持多種語言的外鍵、存儲(chǔ)過程、連接和視圖。它包括各種數(shù)據(jù)類型,支持大對(duì)象的存儲(chǔ),包括圖片、聲音和視頻。由于它是開源的,它得到了開發(fā)人員的支持,他們通過定期嘗試查找錯(cuò)誤和改進(jìn)軟件來提供無與倫比的維護(hù)系統(tǒng)。
通過預(yù)寫日志記錄功能,它還具有容錯(cuò)性,支持在線備份和基于指定時(shí)間點(diǎn)恢復(fù)。并可以通過安裝以前的物理備份數(shù)據(jù)庫來支持恢復(fù)到 WAL 數(shù)據(jù)覆蓋的任何時(shí)刻。
此外,“物理備份”不需要是數(shù)據(jù)庫狀態(tài)的即時(shí)快照。如果它是過去創(chuàng)建的,則重放該特定時(shí)間的 WAL 日志即可解決數(shù)據(jù)不一致問題。
靈活性
PostgreSQL 是開源的,因此可以免費(fèi)使用代碼進(jìn)行跨平臺(tái)修改。它可以適用于任何平臺(tái),包括 Windows、Solaris、OS X 和 Linux。除此之外,它可以同時(shí)容納多個(gè)用戶,阻止同一行的并發(fā)更新。
可擴(kuò)展性
可擴(kuò)展性是一種軟件工程原則。PostgreSQL 提供高可擴(kuò)展性,因?yàn)樗牟僮魇悄夸涷?qū)動(dòng)的,即信息存儲(chǔ)在數(shù)據(jù)庫、列、表等中。表達(dá)式即時(shí) (JIT) 編譯使支持不同的編程語言編寫代碼,而無需重新編譯代碼數(shù)據(jù)庫并定義數(shù)據(jù)類型。這種自發(fā)修改任何操作的能力特別適合快速實(shí)施新的存儲(chǔ)結(jié)構(gòu)和應(yīng)用程序。
復(fù)制
PostgreSQL 包括內(nèi)置的同步復(fù)制,它確保主節(jié)點(diǎn)會(huì)等待每次寫入,直到復(fù)制節(jié)點(diǎn)將數(shù)據(jù)寫入其事務(wù)日志。事務(wù)的持久性可以按數(shù)據(jù)庫、會(huì)話和用戶不同級(jí)別指定,有助于提高速度,因?yàn)樗恍枰_認(rèn)事務(wù)是否正在到達(dá)同步備用庫,尤其是當(dāng)某些流程不需要這些保證時(shí)。
用例
PostgreSQL 幾乎無處不在,它位居當(dāng)今最常用數(shù)據(jù)庫的前五名,僅次于 MySQL。Bloomberg、Goldman Sachs 和 Nokia 等大公司都在使用 PostgreSQL。
PostgreSQL 可用于各行各業(yè),并不局限于某一領(lǐng)域。以下是目前可以使用 PostgreSQL 的幾個(gè)示例。
- 政府 GIS 數(shù)據(jù):PostgreSQL 包含一個(gè)強(qiáng)大的名為“PostGIS”的擴(kuò)展。此擴(kuò)展提供了許多有助于處理不同幾何形式(如點(diǎn)、線)的功能,并經(jīng)過優(yōu)化以減少磁盤和內(nèi)存占用,從而提高查詢性能。電力、應(yīng)急服務(wù)和水利基礎(chǔ)設(shè)施服務(wù)主要依靠 GIS 來定位,因此對(duì)政府來說非常有用。
- 制造業(yè):許多制造業(yè)需要大量高效的數(shù)據(jù)存儲(chǔ)設(shè)施。PostgreSQL 是優(yōu)化供應(yīng)鏈性能和存儲(chǔ)的合適選擇。它是首選,因?yàn)樗?ACID 標(biāo)準(zhǔn),并且可以配置為自動(dòng)故障轉(zhuǎn)移、完全冗余和幾乎零停機(jī)升級(jí)。由于 Oracle 的新許可政策使較小的企業(yè)難以維持使用 Oracle 的成本,因此首選 PostgreSQL。
- Web 技術(shù):PostgreSQL 不僅僅是一個(gè)關(guān)系數(shù)據(jù)庫;它還可以用作 NoSQL 風(fēng)格的數(shù)據(jù)存儲(chǔ)。你可以在一個(gè)產(chǎn)品中同時(shí)支持關(guān)系和文檔。它可以在許多現(xiàn)代框架中運(yùn)行,如 Django (Python)、Hibernate (Java)、Ruby on Rails、PHP 等。由于它的復(fù)制能力,網(wǎng)站可以很容易地?cái)U(kuò)展數(shù)據(jù)庫服務(wù)器。
- 科學(xué)數(shù)據(jù):研究和科學(xué)項(xiàng)目可以生成數(shù) TB 的數(shù)據(jù),必須盡可能以最實(shí)用的方式處理這些數(shù)據(jù)。PostgreSQL 具有出色的分析能力并提供強(qiáng)大的 SQL 引擎,因此處理大量數(shù)據(jù)不會(huì)出現(xiàn)問題。PostgreSQL 也可以輕松擴(kuò)展??梢约?Matlab 和 R 來執(zhí)行多個(gè)數(shù)學(xué)和聚合函數(shù)。
什么是 MySQL?
MySQL 是一個(gè)簡單的關(guān)系數(shù)據(jù)庫系統(tǒng)。它非常高效,并且用戶友好,這是它成為最知名的技術(shù)之一的原因。使用 SQL,你可以快速掌握幾個(gè)結(jié)構(gòu)化查詢語言概念 (SQL) 來構(gòu)建強(qiáng)大的數(shù)據(jù)存儲(chǔ)系統(tǒng)。它的社區(qū)版是免費(fèi)的。
以下討論下它的歷史、主要特性和用例。
歷史
MySQL 由瑞典公司 MySQLAB 于 1995 年由 Michael “Monty” Widenius、瑞典人 David Axmark 和 Allan Larsson 創(chuàng)建。Sun Microsystems 隨后收購了 MySQLAB。
MySQL 的目的是為企業(yè)和家庭用戶等提供高效可靠的數(shù)據(jù)管理選項(xiàng)。該平臺(tái)的 Alpha 和 Beta 版本于 2000 年發(fā)布,其中大部分與主流平臺(tái)兼容。
大約在同一時(shí)間,它開源了,允許第三方開發(fā)人員對(duì)系統(tǒng)進(jìn)行重大更改。然而,開源意味著收入損失,但隨著 MySQL 開始流行,收入最終得以恢復(fù)。
到 2001 年底,活躍安裝量達(dá)到了驚人的 200 萬。2002年初,公司擴(kuò)大業(yè)務(wù),在美國設(shè)立總部。這時(shí),該平臺(tái)已經(jīng)擁有 300 萬用戶,收入達(dá)到 650 萬美元,并且從那時(shí)起它的受歡迎程度不斷提高。
主要特點(diǎn)
MySQL 服務(wù)器是多線程、多任務(wù)的,被設(shè)計(jì)用于重負(fù)載生產(chǎn)系統(tǒng)。它具有事務(wù)和非事務(wù)引擎,是最容易安裝的數(shù)據(jù)庫系統(tǒng)之一。MySQL 因其易于使用、可靠和快速而深受用戶歡迎。
現(xiàn)在你已經(jīng)了解了 MySQL 的起源,接下來討論一下它的一些關(guān)鍵特性。
使用方便
MySQL 因其易用性而流行起來。它保證了一些特性,如觸發(fā)器、存儲(chǔ)過程等。還包括各種實(shí)用程序,如崩潰時(shí)的備份程序、mysqladmin、管理客戶端和用于管理的 GUI(MySQL 工作臺(tái))。對(duì)于初學(xué)者,它通過全面的 GUI 提供了廣泛的選項(xiàng),使其成為當(dāng)今使用最多的五個(gè)數(shù)據(jù)庫之一。
高靈活性
MySQL 為大容量項(xiàng)目提供有效和安全的交易。它足夠靈活,可以在動(dòng)態(tài)環(huán)境中工作。由于它是開源的,因此代碼是免費(fèi)提供的,并且可以根據(jù)你的自身需求進(jìn)行修改。
可靠性和安全性
就像 PostgreSQL 一樣,MySQL 也遵循 ACID 模型。因此,在進(jìn)行交易時(shí)無需擔(dān)心。
如果系統(tǒng)崩潰,它將恢復(fù)到最后一個(gè)檢查點(diǎn),從而確保沒有數(shù)據(jù)丟失。此外,由于它是開源的,因此有一個(gè)龐大的開發(fā)人員社區(qū)可以確保系統(tǒng)正常運(yùn)行,在論壇中擴(kuò)展他們的支持,并修復(fù)各種錯(cuò)誤。
此外,它通過支持外鍵約束來提供數(shù)據(jù)完整性,從而避免表之間的數(shù)據(jù)不一致。它有一個(gè)密碼系統(tǒng),提供了一個(gè)安全的接口,可以保證在訪問數(shù)據(jù)庫之前根據(jù)主機(jī)驗(yàn)證密碼。密碼在連接到服務(wù)器時(shí)會(huì)被加密。
高性能
由于 MySQL 的存儲(chǔ)引擎架構(gòu)非常卓越,因此它的性能非??焖佟⒖煽?。這意味著它可以在不丟失軟件重要功能的情況下提供高性能。
隨著時(shí)間的推移,MySQL 通過具有索引壓縮的 B 樹磁盤表、優(yōu)化的嵌套循環(huán)連接和基于線程的內(nèi)存分配等功能來提高其性能。存儲(chǔ)引擎中的行級(jí)鎖定和常量讀取為多用戶并發(fā)提供了額外的性能優(yōu)勢(shì)。
可擴(kuò)展
除了免費(fèi)和開源之外,MySQL 程序還可以用多種語言編寫。MySQL 連接器/NET 允許開發(fā)人員將他們的數(shù)據(jù)鏈接到數(shù)據(jù)庫。Connector/J 接口為使用 JDBC 關(guān)聯(lián)的 Java 客戶端程序提供 MySQL 支持。用 C 編寫的客戶端庫適用于用 C 或 C++ 或任何提供 C 綁定的語言編寫的客戶端。
還可以訪問用于 C、C++、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 的 API。它也是最受歡迎的跨平臺(tái)數(shù)據(jù)庫系統(tǒng)之一,可以在Linux、Windows、Solarix等平臺(tái)上使用。這一切都表明它幾乎適用于任何軟件和操作系統(tǒng),這使得它具有很強(qiáng)的可擴(kuò)展性。
開源許可證
MySQL 在開源許可證下可供用戶使用。
由于它是開源的,它得到了開發(fā)人員的大量支持,確保錯(cuò)誤和安全問題得到快速修復(fù)。MySQL 擁有用戶群體、論壇和支持。
用例
MySQL 被證明對(duì) Web 應(yīng)用程序很有用,因?yàn)榇蠖鄶?shù)服務(wù)器都依賴 MySQL。除了用作 WordPress 數(shù)據(jù)庫外,許多非 WordPress 企業(yè)(如 Joomla、TYPO3 和 Drupal)也使用 MySQL 作為其主要數(shù)據(jù)庫。
以下是 MySQL 的一些用例,證明它是一個(gè)可靠且高效的數(shù)據(jù)庫系統(tǒng):
- OLTP 事務(wù):事務(wù)需要速度和準(zhǔn)確性。MYSQL 可以高效、輕松地?cái)U(kuò)展到每秒 1000 次查詢。事務(wù)需要保證原子性、一致性、隔離性和持久性(ACID)。MySQL 還遵守 ACID 原則,確保關(guān)鍵事務(wù)的安全。如果系統(tǒng)在事務(wù)期間出現(xiàn)故障,它會(huì)回滾到檢查點(diǎn)。
- LAMP 開源技術(shù)棧:MySQL 對(duì)于在 LAMP 開源軟件技術(shù)棧上運(yùn)行的眾多應(yīng)用程序至關(guān)重要(LAMP 代表 Linux、Apache、MySQL 和 PHP/Python/Perl)。LAMP 是 Web 服務(wù)的通用解決方案,被廣泛認(rèn)為是動(dòng)態(tài)網(wǎng)站和高性能 Web 應(yīng)用程序的首選。
- 電子商務(wù)應(yīng)用程序:MySQL 是電子商務(wù)平臺(tái)最流行的交易數(shù)據(jù)庫之一。它有利于管理客戶數(shù)據(jù)、交易和產(chǎn)品目錄。在電子商務(wù)解決方案中,MySQL 通常與其他非關(guān)系數(shù)據(jù)庫同時(shí)使用,包括用于同步訂單數(shù)據(jù)和存儲(chǔ)非產(chǎn)品數(shù)據(jù)的文檔和鍵值存儲(chǔ)。
PostgreSQL 與 MySQL:正面比較
如果你不知道該怎么選擇數(shù)據(jù)庫,本節(jié)將會(huì)闡述。
語法
說到語法,Postgresql 和 MySQL 都很相似。這是兩者的選擇查詢的樣子:
SELECT * FROM STUDENTS;
但是,MySQL 不支持多個(gè)子查詢,例如“LIMIT”或“ALL”。它還不支持標(biāo)準(zhǔn) SQL 子句,如“INTERSECT”或“OUTER JOIN”。
MySQL 不像 PostgreSQL 那樣完全符合 SQL,PostgreSQL支持上面提到的所有子查詢。如果你的業(yè)務(wù)需要經(jīng)常使用這些子查詢,那么 PostgreSQL 將是一個(gè)更合適的選擇。
支持的語言
PostgreSQL 和 MySQL 支持許多相同的語言,但存在一些差異。
另一方面,PostgreSQL 支持更廣泛的編程語言:
- C/ C++
- Delphi
- Erlang
- Go
- Java
- Javascript
- JSON (native since version 9.2)
- Lisp
- .NET
- Python
- R
- Tcl
- 其他編程語言
以下是 MySQL 支持的語言列表:
- C/C++
- Delphi
- Erlang
- Go
- Java
- Lisp
- Node.js
- Perl
- PHP
- R
速度
速度是一個(gè)不可或缺的因素,一個(gè)快速的數(shù)據(jù)庫不僅可以確保網(wǎng)站運(yùn)行得更快,而且還可以通過刪除未使用數(shù)據(jù)來減輕服務(wù)器的壓力。
PostgreSQL 和 MySQL 都以市場(chǎng)上最快的 DBMS 解決方案而聞名。然而,這一類別中沒有明顯的贏家。你可以很容易地找到基于配置、測(cè)試和硬件推薦一種數(shù)據(jù)庫的基準(zhǔn)測(cè)試。一個(gè)可能在并發(fā)性方面占上風(fēng)(PostgreSQL),而另一個(gè)可能在內(nèi)存很少的單核機(jī)器上表現(xiàn)更好(MySQL)。
最終,這取決于你如何使用。眾所周知,MySQL 在處理只讀命令時(shí)速度更快,但會(huì)犧牲并發(fā)性,而 PostgreSQL 在處理讀寫操作、海量數(shù)據(jù)集和復(fù)雜查詢時(shí)效果更好。
架構(gòu)
MySQL 是純關(guān)系數(shù)據(jù)庫,而 PostgreSQL 是對(duì)象關(guān)系數(shù)據(jù)庫。PostgreSQL 提供更復(fù)雜的數(shù)據(jù)類型,并允許對(duì)象繼承屬性。另一方面,這也使得使用 PostgreSQL 變得更加復(fù)雜。PostgreSQL 擁有一個(gè)單一的、符合 ACID 標(biāo)準(zhǔn)的存儲(chǔ)引擎。而 MySQL 除了默認(rèn)的存儲(chǔ)引擎 InnoDB 之外, 還支持 15 種不同的存儲(chǔ)引擎。
PostgreSQL 通過為每個(gè)建立的客戶端連接分配內(nèi)存來生成一個(gè)新的系統(tǒng)進(jìn)程。在具有許多客戶端連接的系統(tǒng)上,這需要大量內(nèi)存。另一方面,MySQL 使用單個(gè)進(jìn)程并為每個(gè)連接維護(hù)一個(gè)線程,因此小的企業(yè)應(yīng)用程序的更合適。
性能
PostgreSQL 是一個(gè)符合標(biāo)準(zhǔn)、功能豐富且可擴(kuò)展的數(shù)據(jù)庫。以前,PostgreSQL 性能平穩(wěn)——讀取通常比 MySQL 慢,但它可以更有效地寫入大量數(shù)據(jù)。除此之外,PostgreSQL 比 MySQL 更好地處理并發(fā)性。
在過去幾年中,它們之間的能力差距已大大縮小。如果你使用舊的 MyISAM 引擎,MySQL 在讀取數(shù)據(jù)方面仍然非??臁K€經(jīng)過優(yōu)化,可以在大量數(shù)據(jù)寫入方面趕上 PostgreSQL。
在選擇合適的工具時(shí),性能不應(yīng)成為大多數(shù)普通應(yīng)用程序的約束因素。PostgreSQL 和 MySQL 在大多數(shù)情況下都具有相同的性能。
復(fù)制與集群
數(shù)據(jù)復(fù)制是將數(shù)據(jù)從數(shù)據(jù)庫復(fù)制到其副本數(shù)據(jù)庫的過程,以確保每個(gè)實(shí)例都擁有相同級(jí)別的信息。復(fù)制還帶來了各種好處,例如容錯(cuò)、可伸縮性、自動(dòng)備份以及在不影響主集群的情況下執(zhí)行長查詢的能力。
MySQL 和 PostgreSQL 都支持復(fù)制。PostgreSQL 提供同步復(fù)制,這意味著它有兩個(gè)數(shù)據(jù)庫同時(shí)運(yùn)行,主數(shù)據(jù)庫與副本數(shù)據(jù)庫同步。你甚至可以使用 PostgreSQL 執(zhí)行同步和級(jí)聯(lián)復(fù)制。然而,在 MySQL 中,復(fù)制是單向異步的。這意味著一臺(tái)數(shù)據(jù)庫服務(wù)器充當(dāng)主服務(wù)器,其他服務(wù)器是副本。
MySQL 和 PostgreSQL 也都支持集群。集群利用共享存儲(chǔ)將一組相等的數(shù)據(jù)復(fù)制到環(huán)境中的每個(gè)節(jié)點(diǎn)。這讓數(shù)據(jù)庫能夠容忍故障,因?yàn)樵诃h(huán)境中的各個(gè)節(jié)點(diǎn)之間復(fù)制數(shù)據(jù)會(huì)產(chǎn)生冗余。
數(shù)據(jù)和表結(jié)構(gòu)
JSON 支持仍然是 MySQL 主要 NoSQL 特性之一。相比之下,PostgreSQL 支持用戶定義的類型、數(shù)組、hstore 和 XML,能夠處理更多數(shù)據(jù)類型。例如,通過接受數(shù)組作為數(shù)據(jù)類型,PostgreSQL 還可以提供與這些數(shù)組兼容的宿主函數(shù)。
盡管使用替代格式存儲(chǔ)數(shù)據(jù)具有優(yōu)勢(shì),但執(zhí)行此類數(shù)據(jù)格式可能會(huì)更加復(fù)雜,因?yàn)樗鼈儾蛔裱L期基準(zhǔn)。因此,與數(shù)據(jù)庫一起使用的組件可能并不總是遵循 PostgreSQL 格式。
就 SQL 合規(guī)性而言,MySQL 僅部分符合 SQL,因?yàn)樗恢С炙泄δ?,如無檢查約束。
相比之下,PostgreSQL 比 MySQL 更符合 SQL,支持大多數(shù)主要的 SQL 特性——準(zhǔn)確地說,支持179 個(gè)強(qiáng)制特性中的 160 個(gè)。
可擴(kuò)展性
PostgreSQL 被認(rèn)為是一種高度可擴(kuò)展的工具,因?yàn)樗С?MySQL 中找不到的各種高級(jí)數(shù)據(jù)類型。包括網(wǎng)絡(luò)地址類型、本機(jī) UUID、幾何/GIS、可以索引的 JSON 和時(shí)區(qū)感知時(shí)間戳。
因此,如果你的應(yīng)用程序正在處理非結(jié)構(gòu)化數(shù)據(jù)或獨(dú)特?cái)?shù)據(jù)類型,PostgreSQL 將會(huì)是更好的選擇。但是,如果只處理基本的數(shù)字和字符數(shù)據(jù)類型,那么這兩個(gè)數(shù)據(jù)庫都可以選擇。
索引
為了提高數(shù)據(jù)庫性能,可以創(chuàng)建索引。如果沒有索引,查詢會(huì)很慢并且會(huì)成為 DBMS 的主要負(fù)擔(dān)。
PostgreSQL 和 MySQL 都提供了不同的索引選項(xiàng)。PostgreSQL 索引類型包括以下:
- 僅排列表的一部分信息的部分索引
- B樹索引和散列索引
- 表達(dá)式索引,生成由表達(dá)式函數(shù)生成的索引
MySQL 提供以下索引選項(xiàng):
- 存儲(chǔ)在 R 樹上的索引,例如在空間數(shù)據(jù)類型上找到的索引
- 存儲(chǔ)在 B 樹上的索引,例如 PRIMARY KEY、INDEX、FULLTEXT 和 UNIQUE
- 使用 FULLTEXT 索引時(shí)的倒排列表和哈希索引
安全
PostgreSQL 和 MySQL 都支持組和用戶管理,并為各種角色授予 SQL 權(quán)限。MySQL 支持用于用戶身份驗(yàn)證的本機(jī)窗口服務(wù)、PAM 和 LDAP,而 PostgreSQL 支持使用 Kerberos 和 PAM 的基于 IP 的客戶端身份驗(yàn)證和過濾。因此,這兩個(gè)數(shù)據(jù)庫在安全性方面并駕齊驅(qū)。
支持與社區(qū)
PostgreSQL 和 MySQL 都有有用的社區(qū)來為用戶提供支持。
PostgreSQL 擁有龐大的志愿者社區(qū),他們通過郵件列表和 IRC 為用戶提供免費(fèi)建議。除此之外,你可以通過第三方提供商購買付費(fèi)支持。甚至可以通過閱讀市場(chǎng)上各種有用的 PostgreSQL 書籍和手冊(cè)來解決問題。
MySQL 也有一個(gè)龐大的志愿者社區(qū),他們會(huì)花時(shí)間提供免費(fèi)的建議和支持。你可以在 Percona 和 MySQL 網(wǎng)站上利用這種支持。除了免費(fèi)社區(qū)支持之外,Oracle 還為其所有產(chǎn)品的商業(yè)版本提供 24/7 付費(fèi)支持。與 PostgreSQL 一樣,你也可以通過深入研究大量免費(fèi)且有用的 MySQL 指南、書籍和教程來進(jìn)行故障排除。
總而言之,對(duì) PostgreSQL 的支持可能有點(diǎn)挑戰(zhàn),因?yàn)樗枰嗟募夹g(shù)專業(yè)知識(shí)才能設(shè)置和使用。此外,目前 PostgreSQL 專家的數(shù)量少于 MySQL 專家的數(shù)量。因此,在用戶支持和易管理性方面,MySQL 略勝一籌。
PostgreSQL 與 MySQL:您應(yīng)該選擇哪個(gè)?
總結(jié)一下討論,在兩個(gè)數(shù)據(jù)庫之間進(jìn)行選擇并不那么簡單。
如果你正在尋找一個(gè)功能豐富的數(shù)據(jù)庫,可以順利處理龐大的數(shù)據(jù)庫和復(fù)雜的查詢,那么你應(yīng)該選擇 PostgreSQL。
另一方面,如果你是初學(xué)者,正在尋找更易于管理和設(shè)置的數(shù)據(jù)庫,同時(shí)仍然可靠、快速且易于理解,那么可以嘗試 MySQL。