一、MySql、Postgresql和MongoDB這三者的區別
1、概念不同
MySql:MySQL是一種開源的關系型數據庫管理系統Postgresql:PostgreSQL是一種開源的關系型數據庫管理系統,具有很強的擴展性和功能性MongoDB:MongoDB是一種開源的面向文檔的非關系型數據庫管理系統2、應用場景不同
MySql:適用于Web應用程序等場景Postgresql:適合于高并發、大規模的企業級數據應用MongoDB:適用于Web應用程序等場景3、作用不同
MySql:使用的編程語言為SQL,支持交互式操作和批處理處理;支持復制、負載平衡和備份和恢復等高可用性功能Postgresql:對SQL標準的支持比MySQL更完整,支持更高級的數據類型,如數組、JSON、XML和GIS;支持多版本控制、事務管理以及高級的并發控制技術,因此常用于高并發、大規模的應用場景;提供了許多工具和插件支持,使得它易于擴展和集成MongoDB:不使用表和行,而是使用文檔和集合作為數據組織方式。文檔可以是JSON格式,可以存儲復雜的數據類型和結構;對于大型數據量在處理速度上具有優勢,適合于需要大量寫入和查詢操作的場景;支持高可用性和自動分片,使其易于擴展和管理二、MySql介紹
1、簡介
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,屬于Oracle旗下產品。MySQL是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是較好的 RDBMS(Relational Database Management System,關系數據庫管理系統)應用軟件之一。MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網站的開發都選擇 MySQL 作為網站數據庫。
2、系統特性
MySQL使用 C和 C++編寫,并使用了多種編譯器進行測試,保證了源代碼的可移植性支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統為多種編程語言提供了 API。這些編程語言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和 Tcl 等支持多線程,充分利用 CPU 資源優化的 SQL查詢算法,有效地提高查詢速度既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作數據表名和數據列名提供 TCP/IP、ODBC 和 JDBC等多種數據庫連接途徑提供用于管理、檢查、優化數據庫操作的管理工具支持大型的數據庫,可以處理擁有上千萬條記錄的大型數據庫支持多種存儲引擎MySQL 是開源的,所以你不需要支付額外的費用MySQL 使用標準的 SQL數據語言形式MySQL 對 PHP 有很好的支持,PHP是比較流行的 Web 開發語言MySQL是可以定制的,采用了 GPL協議,你可以修改源碼來開發自己的 MySQL 系統在線 DDL/更改功能,數據架構支持動態應用程序和開發人員靈活性復制全局事務標識,可支持自我修復式集群復制無崩潰從機,可提高可用性復制多線程從機,可提高性能3倍更快的性能新的優化器原生JSON支持多源復制GIS的空間擴展三、Postgresql介紹
1、簡介
PostgreSQL是一種特性非常齊全的自由軟件的對象-關系型數據庫管理系統(ORDBMS),是以加州大學計算機系開發的POSTGRES,4.2版本為基礎的對象關系型數據庫管理系統。POSTGRES的許多名列前茅概念只是在比較遲的時候才出現在商業網站數據庫中。PostgreSQL支持大部分的SQL標準并且提供了很多其他現代特性,如復雜查詢、外鍵、觸發器、視圖、事務完整性、多版本并發控制等。同樣,PostgreSQL也可以用許多方法擴展,例如通過增加新的數據類型、函數、操作符、聚集函數、索引方法、過程語言等。另外,因為許可證的靈活,任何人都可以以任何目的免費使用、修改和分發PostgreSQL。
2、存儲系統
存儲系統是PostgreSQL的最底層模塊,它向下通過操作系統接口訪問物理數據,向上為上層模塊提供存儲操作的接口和函數。PostgreSQL對物理數據的訪問和操作都是通過其存儲系統模塊來進行的。PostgreSQL存儲系統是由以下幾個子模塊所構成的:
頁面管理子模塊:對PostgreSQL緩沖區頁面的組織結構進行定義以及提供頁面操作的方法。緩沖區管理子模塊:管理PostgreSQL的緩沖區,包括本地緩沖區和共享緩沖區。存儲設備管理子模塊:數據庫記錄是存儲在存儲介質上的,存儲設備管理子模塊將屏蔽不同物理存儲設備(塊設備,流設備)接口函數的差異,向上層緩沖區管理子模塊提供統一的訪問接口函數。文件管理子模塊:一般的操作系統對一個進程允許打開的文件數是有限制的,而PostgreSQL服務器有些時候需要打開的文件數是很多的,因此PostgreSQL文件管理子模塊自身為了突破這個瓶頸,封裝了文件的讀寫操作,在這里建立了一個LRU鏈表,通過一定的替換算法來對打開的文件進行管理,使得可以打開的文件數目不受操作系統平臺的限制。四、MongoDB介紹
1、簡介
MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
2、設計特征
MongoDB 的設計目標是高性能、可擴展、易部署、易使用,存儲數據非常方便。其主要功能特性如下:
面向集合存儲,容易存儲對象類型的數據:在MongoDB 中數據被分組存儲在集合中,集合類似RDBMS 中的表,一個集合中可以存儲無限多的文檔模式自由,采用無模式結構存儲:在MongoDB 中集合中存儲的數據是無模式的文檔,采用無模式存儲數據是集合區別于RDBMS 中的表的一個重要特征支持完全索引,可以在任意屬性上建立索引,包含內部對象:MongoDB的索引和RDBMS 的索引基本一樣,可以在指定屬性、內部對象上創建索引以提高查詢的速度。除此之外,MongoDB 還提供創建基于地理空間的索引的能力支持查詢:MongoDB 支持豐富的查詢操作,MongoDB 幾乎支持SQL中的大部分查詢強大的聚合工具:MongoDB 除了提供豐富的查詢功能外,還提供強大的聚合工具,如count、group 等,支持使用MapReduce 完成復雜的聚合任務支持復制和數據恢復:MongoDB 支持主從復制機制,可以實現數據備份、故障恢復、讀擴展等功能。而基于副本集的復制機制提供了自動故障恢復的功能,確保了集群數據不會丟失使用高效的二進制數據存儲,包括大型對象(如視頻):使用二進制格式存儲,可以保存任何類型的數據對象自動處理分片,以支持云計算層次的擴展:MongoDB 支持集群自動切分數據,對數據進行分片可以使集群存儲更多的數據,實現更大的負載,也能保證存儲的負載均衡延伸閱讀1:MySQL授權協議
MySQL 遵守的不只是 GPL 協議,而是雙授權模式(dual license)即你在遵守 GPL 協議的開源項目使用 MySQL,需要遵守 GPL 協議方能使用。如果你在非開源項目使用(即軟件不打算開放源代碼),且該軟件用來銷售,則需要向 MySQL 支付相應 license 費用。