postgresql也很強大,為何在中國大陸,mysql成為主流,postgresql屈居二線呢?
postgresql能否替代mysql?
我感覺postgresql非常強大,很多地方超過了mysql。舉幾個例子:1.豐富的數據類,支持數組、字典、json、序列號。2.強大的審計函數
3.強大的索引,易於sql調優postgresql在許多地方,有mysql無法比擬的優勢。但是在中國大陸,許多公司的核心業務庫,都是mysql,postgresql則屈居二線,作為審計類的資料庫來使用。為什麼不讓postgresql來扛大樑呢,而要用mysql,postgresql不合適么?
國際市場上pg也還在二線。pg沒有成為最流行的產品,有路徑依賴的問題,市場最初的選擇有偶然性,也確實有一部分是因為它的一些特性不夠好。近幾年pg發展很快,資料庫這個東西一旦用起來,用戶很少遷移,目前的趨勢說明pg在一些領域正在追上來。突出到讓用戶考慮遷移了。
PostgreSQL 名字太難記
歷史問題吧。會慢慢上來的。亞馬遜的Redshift是基於Postgresql的數據倉庫服務。以後可能會成為主流。
postgresql非常老牌,我在07年就開始關注了,一直以來我認為此產品可在節約成本時代替oracle,沒火起來是因為太重量級,重量級的產品一般大企業才用得上,但是使用它有面臨著一系列的風險,自然不像oracle那麼容易打理,所以才屈居二線。postgresql的很多特點都被oracle「借鑒」走了。
json的支持如果早5年,或許現在是另一番景象。
當然現在也不晚,我現在手上已經沒有mysql的項目了。pg資料太少入門太高,企業培養一個陳本太大pg擴展性的選擇沒mysql方便,這是互聯網行業比較實用的pg索引類型多強大這毋庸置疑的,但是看場景不一定比mysql跑的快mysql5.7已經改進不少,性能提升比5.6強很多,所以目前暫時應該還是mysql主流吧,個人愚見
說說鄙人的見解,從技術而言,PG 功能豐富,SQL 支持得很完備,強大的數據類型,嚴謹的關係模型,很難從關係模型去找出PG 的不合理之處,多年的積累,連全文索引詞庫都非常豐富,據說對於一些簡單的搜索,都可以擺脫搜索引擎了,優化器做得很好,在代價選擇上PG 實現了基因演算法,這一點連Oracle 也沒有做到。讀過一部分PG 的代碼和MySQL 的代碼,對比起來,PG 的代碼寫得非常工整,注釋也很細緻,真的可以稱得上code 教科書級別的工程,一定是一幫有情懷的coder 寫出來的,對比起來,MySQL 就是一坨屎。。。
可是這個問題是一個工程性問題,就不要用這些方面來衡量一個工程問題!歷史總是時勢造英雄,看看MySQL 火起來的那段時間,正是互聯網爆髮式增長的那幾年,由於PG 豐富的功能,所以它顯得太重了,多進程並發,再加上早期的存儲做得不夠好,太吃資源,在那個時代,內存和存儲都是比較昂貴的資源,早期的PG 性能也不太好,由於關係模型支持得很好,用起來會有諸多限制,學習成本會比較高,比起這些,MySQL 要輕量很多,到現在這也是它的一個優點,在互聯網這個特定的場景中,大家為了追求快速迭代和拓展性,使用的SQL 功能不會太多,都夠用,而PG 由於更嚴謹的SQL 關係模型,很多用法都限制得比較死,MySQL 卻要靈活很多,你的劣勢就出來了,這個讓用戶用起來很爽,但是對於兼容MySQL 的兼容實現者很痛苦,有些feature 在特定的場景中用起很便利,但是在通用的模型中卻禁不起推敲,要不要兼容它呢?但用戶很難感知到這些,除非測試去亂試,一般人不會那麼無聊,這就是工程上的權衡。很難說誰好誰壞。
而用的人多了,相關的使用經驗會匯總到社區,形成部署方案,工具等,這又是工程中的正反饋。在江湖中,有幾個身負各項絕技的大俠最後成了將軍和皇帝的?0---在伺服器很金貴,1GB內存十幾萬的時代,計算能力不足的時候PG的性能差的沒人敢用,在伺服器能力過剩的時候,殺出個猛將MYSQL,PG又不那麼好用,學習難度不小,還經常弄出一些稀奇古怪的玩意(三大主流庫都沒有的xx)。
1--- 形象的說:15年前,大企業時代,PG 被Oracle,SQL給秒殺了,15年後,進入互聯網時代,PG又倍Mysql 用簡單、直接、好維護給秒殺了,PG簡直就是個悲劇,PG的春天會在哪裡,暫時看不到
2--- 如果是一個大項目負責人,人才多與少,熟悉程度,資金開支,遠比功能更重要
3--- SQL92都基本實現了的資料庫,之外的功能就不是重要的維度,沒必要用功能多少來比較,說資料庫功能多的都是沒有從高層來看待問題:所謂PG支持json,hstore和jsonb,列支持數組等,資料庫SQL92之外的功能不需要多,只需要性能強,你只要強過你所有對手,你才能贏得市場。 其他所謂功能對比,都是7上8下,見仁見智,我的意見是SQL的四個語句支持的好就足夠了,如果應用程序過度依賴dbms特有的功能,意味這你這個系統遷移到其他dbms難度加大,反而使得該項目越來越彆扭,你的代碼和資料庫設計結構 與別的公司通用系統比,越來越像怪物,到時候出問題怎麼遷移,怎麼應對客戶的特別平台要求。
當然PG最大的問題在於,在複雜環境下,難當大任,如:數據量大的情況下、實體很多、索引很多,事務壓力大、redo生成很快的情況、有複製的複雜情況下,性能很差,管理很麻煩,這些都是PG數據最早的機制問題,很難扭轉。具體可以去了解PG的原理。mysql已經成oracle的了,pg是正宗開源項目,未來應該有很好的前景。。。。
開源的一項副作用就是沒有人給你做售後,出了問題得自己解決,使用成本可能會更高.
說PG強大,是對比的近幾年;而mysql 流行是更早一些。
PG 9.x 之後才被人們津津樂道,而 MySQL 4.x 就已經很穩定了。
不防對比一下兩個資料庫的時間線:2010年底PG 才發布 9.0版;同年4月 MySQL 已經發布了 5.5;4.1版是在2004年發布的。也就是說PG發跡略晚了一些。另外可能跟商業支持有些關係。推薦閱讀:
※OCC和MVCC的區別是什麼?
※無任何IT相關經驗,30歲轉行學DBA或者系統管理員可否??
※同時精通金融跟IT行業是種怎樣的體驗?
※為了防止受騙,如何根據公司名稱全稱查詢該公司信息,如是否真實存在,是否已註冊,法人、電話、主營業務等?
※剛到手的6p丟了 有沒有人有辦法??? 圖片老上傳不了。。