国产精品一区二区久久久-99久久久精品免费看国产-久久九九99热这里只有精品-漂亮人妻被中出中文字幕久久-五月情综合网站久久-福利姬3d全彩办公室色欲-av网站在线播放网站-亚洲日本岛国动作片在线观看-男人的天堂啊啊啊啊

日志樣式

開源數(shù)據(jù)庫SQLite、MySQL和PostgreSQL比較.

  • 標(biāo)簽 :

Linux是一款免費(fèi)開源的操作系統(tǒng),由于其自由、開放、安全、穩(wěn)定等諸多特點(diǎn),已被各大IT公司廣泛地應(yīng)用于服務(wù)器和嵌入式設(shè)備中。

由于數(shù)據(jù)存儲的需要,Linux操作系統(tǒng)需要搭配一套性能優(yōu)良的數(shù)據(jù)庫才能很好的滿足業(yè)務(wù)需求,但是Linux系統(tǒng)下可用的數(shù)據(jù)庫種類繁多,功能和性能也是各有千秋,往往我們需要根據(jù)業(yè)務(wù)場景來靈活的選擇要使用的數(shù)據(jù)庫。

開源數(shù)據(jù)庫SQLite、MySQL和PostgreSQL比較

但有時(shí)因?yàn)槿狈?jīng)驗(yàn),選擇了不合適的數(shù)據(jù)庫,導(dǎo)致業(yè)務(wù)運(yùn)轉(zhuǎn)過程中出現(xiàn)了許多問題和瓶頸,比如后臺系統(tǒng)需要進(jìn)行大量且頻繁的并發(fā)讀寫操作,但選擇了MySQL,導(dǎo)致使用過程中出現(xiàn)了許多不可避免的讀寫錯(cuò)誤;再比如很多嵌入式系統(tǒng)需要支持多用戶,卻選擇了SQLite,雖說SQLite小巧輕便,遷移性好,很適合嵌入式系統(tǒng),但是他并不支持多用戶管理。所以如何選擇一套適合的數(shù)據(jù)庫就是我們所面臨的一道難題。

當(dāng)下Linux系統(tǒng)中常用的數(shù)據(jù)庫包括兩大類,一是商業(yè)型數(shù)據(jù)庫,比如Oracle、Sybase、DB2、Informix、SQL Server等;二是開源免費(fèi)的數(shù)據(jù)庫,比如MySQL、PostgreSQL、SQLite等。商業(yè)數(shù)據(jù)庫的功能與性能自不必多說,它們背后還有強(qiáng)大的技術(shù)團(tuán)隊(duì)的支持,此處我們要講的是幾種常用的開源免費(fèi)數(shù)據(jù)庫。本文根據(jù)我們的日常開發(fā)經(jīng)驗(yàn),簡單的對MySQL、PostgreSQL、SQLite進(jìn)行比較,給大家提供一個(gè)參考。

1、SQLite數(shù)據(jù)庫

開源數(shù)據(jù)庫SQLite、MySQL和PostgreSQL比較

SQLite是一款輕量級的關(guān)系型數(shù)據(jù)庫,它是用C語言實(shí)現(xiàn)的。它是供嵌入式使用的,已廣泛地應(yīng)用到各個(gè)嵌入式系統(tǒng)中。它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。

SQLite能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如 C++、C#、PHP、Java等,和Mysql、PostgreSQL這兩款開源的世界著名數(shù)據(jù)庫管理系統(tǒng)相比,它的處理速度比他們都快。

(1)SQLite的優(yōu)勢

它的第一個(gè)特色是輕量級。SQLite的作者很看重這個(gè)特性,連它的Logo都是用的“羽毛”,來顯擺它的輕飄飄。和客戶端/服務(wù)器模式的數(shù)據(jù)庫又說不同,SQLite是本地?cái)?shù)據(jù)庫,他是進(jìn)程內(nèi)的數(shù)據(jù)庫引擎。使用SQLite室只需要帶上它的一個(gè)動(dòng)態(tài) 庫,就可以享受它的全部功能,并且這個(gè)動(dòng)態(tài)庫的尺寸也挺小。

SQLite的另外一個(gè)特點(diǎn)是綠色。它的核心引擎本身不依賴第三方的軟件,使用它也不需要“安裝”,只需要引入動(dòng)態(tài)庫即可,所以在部署的時(shí)候能夠省去不少麻煩。

跨平臺/可移植性,如果光支持主流操作系統(tǒng),那就沒啥好吹噓的了。除了主流操作系統(tǒng),SQLite還支持了很多冷門的操作系統(tǒng)。尤其是它對很多嵌入式系統(tǒng)支持的非常好,比如Android、Windows Mobile、Symbin、Palm、VxWorks等。

SQLite使用的是Public Domain協(xié)議,這是最爽一種,可以放心大膽地用,毫無限制的使用。

(2)SQLite的缺點(diǎn)

SQLite在并發(fā)(包括多進(jìn)程和多線程)讀寫方面的性能一直不太理想。數(shù)據(jù)庫可能會(huì)被寫操作獨(dú)占,從而導(dǎo)致其它讀寫操作阻塞或出錯(cuò)。

SQLite對SQL標(biāo)準(zhǔn)支持不全,在它的官方網(wǎng)站上,具體列舉了不支持哪些SQL92標(biāo)準(zhǔn)。特別是不支持外鍵的約束.

有時(shí)候需要訪問其它機(jī)器上的SQLite庫文件,就會(huì)把數(shù)據(jù)庫文件放置到網(wǎng)絡(luò)共享目錄上。這時(shí)候你就要小心了。當(dāng)SQLite文件放置于NFS時(shí),在并發(fā)讀寫的情況下可能會(huì)出問題(比如數(shù)據(jù)損壞),原因是由于某些NFS網(wǎng)絡(luò)文件系統(tǒng)的文件鎖在實(shí)現(xiàn)上是有Bug的。

(3)使用場景

一是嵌入式應(yīng)用場景,所有需要遷移性,不需要擴(kuò)展的應(yīng)用,例如,單用戶的本地應(yīng)用,移動(dòng)應(yīng)用和游戲。

二是代替磁盤訪問的場景,在很多情況下,需要頻繁直接讀/寫磁盤文件的應(yīng)用,都很適合轉(zhuǎn)為使用 SQLite ,可以得益于 SQLite 使用 SQL 帶來的功能性和簡潔性。

2、MySQL數(shù)據(jù)庫

開源數(shù)據(jù)庫SQLite、MySQL和PostgreSQL比較

MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是最好的關(guān)系數(shù)據(jù)庫管理系統(tǒng)應(yīng)用軟件之一。MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL由于其體積小、速度快、免費(fèi)開源,被IT公司廣泛的采用。

(1)MySQL的優(yōu)勢

它使用的核心線程是完全多線程,速度快并支持多處理器。有多種列類型:1、2、3、4、和8字節(jié)長度自有符號/無符號整數(shù)、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM類型。

它通過一個(gè)高度優(yōu)化的類庫實(shí)現(xiàn)SQL函數(shù)庫并像他們能達(dá)到的一樣快速,通常在查詢初始化后不該有任何內(nèi)存分配。沒有內(nèi)存漏洞,支持ANSI SQL的LEFT 0UTER JOIN和ODBC。

MySQL可以工作在不同的平臺上。支持C、C++、Java、Perl、PHP、Python和TCL API。

MySQL全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(shù)(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查詢中混來自不同數(shù)據(jù)庫的表。所有列都有缺省值。你可以用INSERT插入一個(gè)表列的子集,那些沒用明確給定值的列設(shè)置為他們的決省值。

(2)MySQL的缺點(diǎn)

MySQL最大的缺點(diǎn)是其安全系統(tǒng),主要是復(fù)雜而非標(biāo)準(zhǔn),另外只有到調(diào)用mysqladmin來重讀用戶權(quán)限時(shí)才發(fā)生改變。

MySQL的另一個(gè)主要的缺陷之一是缺乏標(biāo)準(zhǔn)的RI(Referential Integrity-RI)機(jī)制;Rl限制的缺乏(在給定字段域上的一種固定的范圍限制)可以通過大量的數(shù)據(jù)類型來補(bǔ)償。 MySQL沒有一種存儲過程(Stored Procedure)語言,這是對習(xí)慣于企業(yè)級數(shù)據(jù)庫的程序員的最大限制。

(3)MySQL的使用場景

分布式操作場景:當(dāng)你需要的比SQLite可以提供的更多時(shí),把MySQL包括進(jìn)你的部署棧,就像任何一個(gè)獨(dú)立的數(shù)據(jù)庫服務(wù)器,會(huì)帶來大量的操作自由和一些先進(jìn)的功能。

高安全性場景:MySQL的安全功能,用一種簡單的方式為數(shù)據(jù)訪問(和使用)提供了可靠的保護(hù)。

Web網(wǎng)站和Web應(yīng)用場景:絕大多數(shù)的網(wǎng)站(和Web應(yīng)用程序)可以忽視約束性地簡單工作在MySQL上。這種靈活的和可擴(kuò)展的工具是易于使用和易于管理的——這被證明非常有助于長期運(yùn)行。

定制解決方案場景:如果你工作在一個(gè)高度量身定制的解決方案上,MySQL能夠很容易地尾隨和執(zhí)行你的規(guī)則,這要感謝其豐富的配置設(shè)置和操作模式。

多用戶應(yīng)用場景:如果你在開發(fā)的應(yīng)用需要被多用戶訪問,而且這些用戶都用同一個(gè)數(shù)據(jù)庫,那么相比 SQLite,最好還是選擇一個(gè)功能完整的關(guān)系型數(shù)據(jù)庫MySQL。

3、PostgreSQL數(shù)據(jù)庫

開源數(shù)據(jù)庫SQLite、MySQL和PostgreSQL比較

PostgreSQL是一個(gè)功能非常強(qiáng)大的、源代碼開放的客戶/服務(wù)器關(guān)系型數(shù)據(jù)庫管理系統(tǒng),以加州大學(xué)計(jì)算機(jī)系開發(fā)的POSTGRES,4.2版本為基礎(chǔ)發(fā)展起來的對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。PostgresSQL憑借其經(jīng)過驗(yàn)證的架構(gòu),可靠性,數(shù)據(jù)完整性,強(qiáng)大的功能集,可擴(kuò)展性以及軟件背后的開源社區(qū)的奉獻(xiàn)精神贏得了良好的聲譽(yù),PostgreSQL被廣泛地應(yīng)用到各大IT軟件系統(tǒng)中。

(1)PostgreSQL的優(yōu)勢

PostgreSQL支持存儲過程,且有眾多的商業(yè)邏輯的存在,此時(shí)使用存儲過程可以在較少地增加數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān)的前提下,對這樣的商業(yè)邏輯進(jìn)行封裝,并可以利用數(shù)據(jù)庫服務(wù)器本身的內(nèi)在機(jī)制對存儲過程的執(zhí)行進(jìn)行優(yōu)化。此外存儲過程的存在也避免了在網(wǎng)絡(luò)上大量的原始的SQL語句的傳輸,這樣的優(yōu)勢是顯而易見的。

PostgreSQL支持視圖,視圖的存在可以最大限度地利用數(shù)據(jù)庫服務(wù)器內(nèi)在的優(yōu)化機(jī)制。而且對于視圖權(quán)限的合理使用,事實(shí)上可以提供行級別的權(quán)限,這是MySQL和SQLite的權(quán)限系統(tǒng)所無法實(shí)現(xiàn)的

PostgreSQL支持觸發(fā)器,觸發(fā)器的存在不可避免的會(huì)影響數(shù)據(jù)庫運(yùn)行的效率,但是與此同時(shí),觸發(fā)器的存在也有利于對商業(yè)邏輯的封裝,可以減少應(yīng)用程序中對同一商業(yè)邏輯的重復(fù)控制。合理地使用觸發(fā)器也有利于保證數(shù)據(jù)的完整性。

PostgreSQL支持R-trees這樣可擴(kuò)展的索引類型,可以更方便地處理一些特殊數(shù)據(jù),支持ODBC。

(2)PostgreSQL的缺點(diǎn)

PostgreSQL運(yùn)行速度明顯低于MySQL和SQLite,因?yàn)镸ySQL使用了線程,而PostgreSQL使用的是進(jìn)程。在不同線程之間的環(huán)境轉(zhuǎn)換和訪問公用的存儲區(qū)域顯然要比在不同的進(jìn)程之間要快得多。

PostgreSQL目前仍不完全適應(yīng)24×7小時(shí)運(yùn)行,這是因?yàn)槟惚仨毭扛粢欢螘r(shí)間運(yùn)行一次VACUUM。

PostgreSQL在權(quán)限系統(tǒng)上也不是很完善。PostgreSQL只支持對于每一個(gè)用戶在一個(gè)數(shù)據(jù)庫上或一個(gè)數(shù)據(jù)表上的INSERT、SELECT和UPDATE/DELETE的授權(quán),而MySQL允許你定義一整套的不同的數(shù)據(jù)級、表級和列級的權(quán)限。

PostgreSQL生成每頁的速度要比MySQL慢,PostgreSQL還欠缺一些比較高端的數(shù)據(jù)庫管理系統(tǒng)需要的特性,比如對大對象的有效支持,以及查詢緩沖等提高數(shù)據(jù)庫性能的機(jī)制等。

(3)PostgreSQL的使用場景

數(shù)據(jù)完整性場景:當(dāng)可靠性和數(shù)據(jù)完整性是絕對必要而無需理由時(shí),PostgreSQL是更好的選擇。

復(fù)雜的自定義過程場景:如果你需要你的數(shù)據(jù)庫執(zhí)行自定義過程,可擴(kuò)展的PostgreSQL是更好的選擇。

整合遷移場景:在將來,如果可能要把整個(gè)數(shù)據(jù)庫系統(tǒng)遷移到另一個(gè)適當(dāng)?shù)慕鉀Q方案(例如Oracle)中,PostgreSQL對于這種切換將是最兼容和易于操作的。

復(fù)雜的設(shè)計(jì)場景:相比其他的開源和免費(fèi)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)實(shí)現(xiàn)來說,對于復(fù)雜的數(shù)據(jù)庫設(shè)計(jì),PostgreSQL提供了大部分的功能和可能性,同時(shí)并沒放棄其他有價(jià)值的地方。

4、我們項(xiàng)目中的數(shù)據(jù)庫使用情況

就我們目前工作中接觸到的服務(wù)器平臺而言,它需要處理大量的數(shù)據(jù)信息,需要較高的安全性,以及支持多用戶并發(fā)的需求,我們采用的是MySQL數(shù)據(jù)庫,而事實(shí)上也正好驗(yàn)證了我們的預(yù)期結(jié)果。

我們項(xiàng)目中常用的存儲陣列,則屬于嵌入式設(shè)備,對于嵌入式設(shè)備,業(yè)內(nèi)常采用的就是輕量級的數(shù)據(jù)庫,而且需要頻繁直接讀/寫磁盤文件,需要進(jìn)行數(shù)據(jù)遷移,但不需要擴(kuò)展等因素,所以我們的陣列設(shè)備使用了采用SQLite數(shù)據(jù)庫,這也正好符合上述的結(jié)論。

5、寫在最后

沒有最好的,只有適合的!選擇一個(gè)適合的數(shù)據(jù)庫會(huì)讓你的工作事半功倍,而一個(gè)不適合的數(shù)據(jù)庫會(huì)讓你煩擾不斷,問題頻發(fā)。

在選擇數(shù)據(jù)庫之前,必須先了解清楚設(shè)備的軟硬件環(huán)境,然后根據(jù)具體的業(yè)務(wù)需求和實(shí)用場景,針對不同數(shù)據(jù)庫的優(yōu)缺點(diǎn),揚(yáng)長避短,選擇最合適的數(shù)據(jù)庫。

天津市犀思科技有限公司是專業(yè)從事web應(yīng)用定制開發(fā)的一家公司,主營業(yè)務(wù)包括定制功能型網(wǎng)站建設(shè)開發(fā)、微信小程序開發(fā)微信公眾號開發(fā)、APP定制開發(fā)、天津企業(yè)微信開發(fā)、ERP、CRM、OA等企業(yè)應(yīng)用場景信息化解決方案等服務(wù),致力于成為中國領(lǐng)先的IT服務(wù)及行業(yè)解決方案的提供商。


發(fā)表評論

電子郵件地址不會(huì)被公開。 必填項(xiàng)已用*標(biāo)注

看不清?點(diǎn)擊更換