PostgreSQL과MySQL비교:주

Postgres와MySQL의주MySQL차이점

  • Postgres는복잡한쿼리와대규모데이터베이스를다룰수있는기능이풍부한데이터베이스입니다。
  • MySQL은설치와관리가비교적쉽고,빠르고,신뢰할수있고,쉽게파악할수있는간단한데이터베이스입니다。
  • Postgres는테이블상속,함수오버로딩등의기능을갖춘개체관계형데이터베이스(ORDMBS)인반면,MySQL은순수관계형데이터베이스(RDBMS)입니다。

대부분의개발자는MySQL의경우웹사이트와온라인트랜잭션에적합하고PostgreSQL은복잡한대규모분석프로세스에적합하다고이야기할것입니다。또한,PostgreSQL은까다로운데이터베이스상황을처리하는데도움이되는”많은훌륭한기능(예:확장성,네이티브NoSQL기능)이있다는점도언급할것입니다。마지막으로,MySQL은기능이많지않기때문에"속도와정성에중점을둘수있다고말할것입니다。

대부분이맞는말입니다。새릴리스가출시될때마다MySQL과PostgreSQL의제품이비슷해지고있지만(표참조),두데이터베이스시스템은서로다른특징을갖고있으므로특정사용사례의경우더나은선택지가존재할수있습니다。

기능 비교 PostgreSQL 10 MySQL 8
공통테이블식(cte) 예(새로추가됨)
선언적파티셔닝 예(새로추가됨)
전체텍스트검색
지리정보시스템(gis)/공간참조시스템(srs) 예(업그레이드됨)
JSON 예(업그레이드됨)
논리 복제 예(새로추가됨)
반동기복제 예(새로추가됨)
윈도우함수 예(새로추가됨)

이가이드에서는각자의사용사례에적합한시스템을결정할수있도록MySQL과PostgreSQL의특징에대한차이점을설명합니다。다음중가장관심있는섹션으로건너뛰어도좋습니다。

  1. MySQL과PostgreSQL에대한일반개MySQL

  2. 개발자가둘중하나를선택하는이유

  3. MySQL과PostgreSQL의사용자지원비교

  4. MySQL과PostgreSQL중더욱빠른시스템은무엇가?

  5. 지원하는프로그래밍언어는무엇路人가路人?

  6. 호환되는운체제는무엇가?

  7. ?

  8. 코딩은어떻게다른가语录?

MySQL과PostgreSQL에대한일반개MySQL

MySQL:일반개

MySQL은세계에서가장많이사용되고있는DBMS로서(2019년기준,개발자의39%가사용)빠르고정적범용관계형데이터베이스관리시스템입니다。PostgreSQL만큼광범위한기능은없지만다양한애플리케이션,특히웹애플리케이션에매우적합합니다。

사실MySQL은확장가능한웹애플리케이션에적합합니다。그이유중하나가LAMP스택(Linux, Apache HTTP Server, MySQL, PHP로구성된웹애플리케이션의오픈소스제품군)의@준구성@소이기때문입니다。또한,Drupal和Joomla, WordPress와같이널리사용되고있는콘텐츠관리시스템이MySQL을사용하기때문에MySQL은사실상웹어디에서나찾아볼수있습니다。

데이터베이스테이블을보여주는SQL Workbench

MySQL의기타특징은다음과같습니다。

  • 오픈소스:MySQL은무료이며오픈소스관계형데이터베이스관리시스템(rdbms)입니다。
  • 오랜역사:MySQL은1995년에처음도입됐습니다。
  • Oracle에서유지관리:甲骨文에서MySQL을소유및유지관리하고있으며추가서비스,독자적플러그인,확장기능,사용자지원등을지원하는프리미엄(유료)버전MySQL을의제공합니다。
  • 지원커뮤니티:필한경우헌신적지원자커뮤니티가문제해결을지원합니다。
  • 정성및신뢰성:데이터베이스를"깔끔하게"유지하고정기적으로유지관리를수행하면MySQL은매우정적RDBMS이라고사용자가입을모아이야기합니다
  • MVCC기능:MySQL은현재다중버전동시성제어(mvcc)기능을제공하고있습니다。MVCC는PostgreSQL에서더잘알려진기능입니다(아래에서자세히설명)。
  • 높은업데이트빈도:MySQL은새기능과보MySQL개선사항이자주업데이트되는것이장점입니다。가장최근에이루어진업데이트는2019년4월25일에릴리스된버전8.0.16입니다。
  • 별점4.3:MySQL은G2Crowd에서총1261개의리뷰로부터별점4.3점(5점만점)을받았습니다。

G2Crowd리뷰어가MySQL을잘을잘。

MySQL은안정적인무료오픈소스데이터베이스관리시스템으로,프로덕션애플리케이션에서사용할수있습니다。개발자가대규모다중계층애플리케이션이있는프로덕션애플리케이션서버와데스크톱에설치해사용할수있는경량의데이터베이스입니다。Windows, Linux, Mac등모든플랫폼에설치가능합니다。보성이뛰어나며어떠한보취약성에도취약하지않습니다。

MySQL을사용하는주MySQL조직은다음과같습니다。

  • 脸谱网
  • 谷歌
  • Flickr
  • GitHub
  • 美国国家航空航天局
  • 网飞公司
  • Spotify
  • 特斯拉
  • 推特
  • 超级
  • 미국해군(美国海军)
  • 微信
  • 维基百科
  • YouTube
  • Zappos
  • Zendesk

Integrate.io의 네이티브 MySQL 커넥터에 대한 자세한 내용은통합페이지를참조하세。

PostgreSQL:일반특징

PostgreSQL은복잡한대량의데이터작업을수행하는데적합한솔루션으로,식되고있습니다。이유는PostgreSQL이특수한데이터베이스상황(추후에상세설명)처리에더우수하기때문입니다。

PostgreSQL은다른데이터베이스관리시스템들보다"기능이더많습니다"(사용자가이를명).또한,“카탈로그기반작업이므로”확장 가능합니다。즉,테이블과열에대한정보를단순히저장만하지않고사용자가데이터형식,인덱스형식,함수형언어를정의할수있습니다。

또다른특징으로는PostgreSQL은개체관계형이고,酸를준수하고,동시연결성이높고,NoSQL지원을제공(MySQL도버전8.0부터NoSQL지원제공)한다는점이있습니다。

마지막으로,PostgreSQL는세상에서가장“인기있는”데이터베이스시스템은아니지만가장빠르게성장하는DBMS로지난2년간올해의데이터베이스상을수상하기도했습니다。

PostgreSQL테이블을보여주는pgAdmin

PostgreSQL의기타특징은다음과같습니다。

  • 오픈소스:PostgreSQL은무료이며오픈소스개체관계형데이터베이스관리시스템(ordbms)입니다。RDBMS가아닌ORDBMS로서PostgreSQL은개체지향적기능과관계형데이터베이스기능을모두허용합니다。
  • 맞춤구성가능:DBMS가요구사항에부합하도록플러그인을개발함으로써PostgreSQL을맞춤구성할수있습니다。또한PostgreSQL을사용하면C / c++, Java등다른프로그래밍언어로만들어진사용자지정기능도통합할수있습니다。
  • 오랜역사:PostgreSQL은1988년에처음도입됐습니다。
  • 높은업데이트빈도:가장최근에이루어진PostgreSQL업데이트는2019년5월9일에릴리스된버전11.3입니다。
  • 자유로운오픈소스라이선스:PostgreSQL에는DBMS를원하는대로자유롭게사용,수정,배포할수있는오픈소스라이선스가있습니다。
  • MVCC기능:PostgreSQL은다중버전동시성제어(mvcc)기능을구현한첫dbms입니다。
  • 지원커뮤니티:헌신적개발자및지원자들로구성된커뮤니티가필할때도움을제공합니다。사설외부업체의지원서비스도이용할수있습니다。동일한커뮤니티에서PostgreSQL을지원하고PostgreSQL全球开发小组(PostgreSQL글로벌개발그룹)을통해플랫폼을업데이트합니다。
  • 별점4.4:G2Crowd의415개의리뷰로부터별점4.4(5점만점)를받았습니다。

G2Crowd사용자가PostgreSQL을잘驻点약한글을소개합니다。

PostgreSQL은오픈소스관계형데이터베이스분야에서가장흥미로운옵션중하나입니다。무료데다가즘에는다양한고급옵션을제공하고있습니다。사실오늘날최첨단데이터베이스엔진으로간주되고있습니다。Postgres에서는트랜잭션을할때읽기잠금을사용할필요가없으므로확장성이크게향상됩니다。또한,개인이나회사가아닌개발자커뮤니티가관리하므로쉽고빠르게작업할수있습니다。

PostgreSQL을사용하는조직은다음과같습니다。

  • 苹果
  • BioPharm
  • 思科
  • Debian
  • Etsy
  • 脸谱网
  • 富士通
  • IMDB
  • Instagram
  • Macworld
  • 红色的帽子
  • Skype
  • Spotify
  • 太阳微系统
  • 雅虎

Integrate.io의 네이티브 PostgreSQL 커넥터에 대한 자세한 내용은통합페이지를참조하세。

개발자가둘중하나를선택하는이유

“풍부한기능”면에서PostgreSQL이개발자로부터많은지지를얻고있습니다。아래설명에서와같이PostgreSQL에는부가기능이많습니다。그럼에도불구하고데이터베이스설계측면에서볼때MySQL의단순함,용이성,기타특징이특정사용사례에서는더유용합니다。이러한면에서dbms들은서로다른债市역에서탁월합니다。

MySQL과PostgreSQL DBMS개발자가중하나를선택하는이유의관점에서두시스템의주요기능을살펴보도록하겠습니다。

개발자가MySQL을선택하는이유

MySQL의가장중MySQL한장점은다음과같습니다。

고도의유연성및확장성:MySQL을사용하면스토리지엔진에대한선택의폭이커집니다。따라서다양한테이블유형의데이터를유연하게통합할수있습니다。MySQL 8.0은다음과같은스토리지엔진을지원합니다。

  • InnoDB
  • MyISAM
  • 内存
  • CSV
  • 存档
  • 黑洞
  • NDB / NDBCLUSTER
  • 合并
  • 联邦
  • 例子

속도및정성에집중:MySQL은특SQL정기능을포함하지않음으로써속도와안전성에지속적으로우선순위를둡니다。MySQL의속도는고도의동시읽기전용기능에서특히두드러집니다。이러한이유로특정비즈니스,텔리전스용으로는탁월한선택입니다。그렇지만부하가많은상태에서복잡한쿼리를대량으로실행해야한다면PostgreSQL이더나은선택이될수있습니다。

서버최적화를위한옵션:MySQL은sort_buffer_size, read_buffer_size, max_allowed_packet등변수를조정하여MySQL서버를수정및최적화하는옵션을많이제공합니다。

사용의용이성및대중성:MySQL이널리사용된다는것은광범위한MySQL경험이있는데이터베이스관리자를쉽게찾을수있다는것을의미합니다。사용자들에따르면,MySQL이설치가용이하고다른DBMS솔루션보다미세조정의필요성이크지않습니다。이튜토리얼에서는초보자가처음으로MySQL데이터베이스를설치하는것이얼마나쉬운지를보여줍니다。,또한다양한프론트엔드(예:admin, MySQL工作台,HeidiSQL,dbForge工作室)가보다사용자친화적경험을제공하는그래픽터페이스를MySQL에추가합니다。

클라우드지원dbms:MySQL은클라우드를지원합니다。여러클라우드플랫폼에서MySQL데이터베이스를유료로설치하고유지관리해주는MySQL기능을제공합니다。

InnoDB엔진에서다중버전동시성제어(MVCC)및ACID규정준수제공:현재MySQL버전의기본엔진은InnoDB으로,MVCC와酸규정준수가추가되었습니다。MySQL그러나의InnoDB는MyISAM테이블형식때문에테이블오염관련문제가계속해서발생할수있습니다。MySQL에따르면”MyISAM테이블형식은매우신뢰할만하지만(SQL문에의한테이블의모든변경사항은해당SQL문이반환되기전에작성됨)테이블의오염가능성은여전히존재“한다고합니다。그리고다른엔진을선택하면MVCC와酸규정을준수하지못하는결과가초래될수있습니다。

개발자가PostgreSQL을선택하는이유

PostgreSQL의가장중驻点한장점은다음과같습니다。이미파악했을수있겠지만PostgreSQL에기술적지식이좀더요구되는이유는다음과같습니다。

단순히rdbms가아닌ordbms:PostgreSQL은개체관계형프로그래밍언어(ORDBMS)로서개체지향프로그래밍과관계지향/절차지향프로그래밍사이를연결하는역할을합니다(c++와유사)。따라서개체및테이블상속을정의할수있으므로데이터구조가더복잡해집니다。Ordbms는엄격한관계형모델에맞지않는데이터를처리할때탁월합니다。

복잡한쿼리에탁월:유효성검사가필요한데이터를사용하면서복잡한읽기-쓰기작업을수행해야하는경우PostgreSQL이탁월한선택입니다。그러나ORDBMS는읽기전용작업을처리할때속도가느려질수있습니다(이경우MySQL이탁월)。

NoSQL및다양한데이터형식지원:NoSQL기능을고려하는경우PostgreSQL을많이선택합니다。PostgreSQL은JSONhstoreXML매우다양한데이터형식을기본적으로지원합니다。사용자는본래의데이터형식을정의하는것은물론,사용자지정함수도설정할수있습니다。

초대형데이터베이스관리용으로설계:PostgreSQL은데이터베이스의크기에제한을두지않습니다。Adjust.com의데이터베이스관리자에따르면,자신의회사에서는PostgreSQL을사용하여”약4pb[페타바이트]의데이터를관리하고있습니다。4페타바이트는4000테라바이트입니다。해당관리자는”회사의환경에서초당만10 ~ 25만개의요청을처리(이후기록)한다”라고말합니다。정말로엄청난양이아닐수없네정말로엄청난양이아닐수없네!

다중버전동시성제어(mvcc):MVCC는기업이PostgreSQL을선택하는가장중한이유중하나입니다。MVCC를통해데이터를읽는사람과작성하는사람이서로통신하여PostgreSQL데이터베이스를동시에관리할수있습니다。따라서데이터와통신해야할때마다읽기-쓰기잠금을할필요가없으므로효율성이향상합니다。MVCC는이것을“스냅샷격리”(Oracle에서지칭하는방법)를통해구현합니다。스냅샷은특정순간의데이터상태를나타냅니다。

酸준수:PostgreSQL은데이터오염을방지하고트랜잭션수준에서데이터무결성을보존합니다。여기에서PostgreSQL의ACID규정준수의가치를자세히알아보세。(위에언급한바와같이MySQL도酸규정준수기능을제공하지만복잡한문제가발생할수있습니다。)

MySQL과PostgreSQL의사용자지원비교

두RDBMS솔루션모두DBMS소유자또는외부공급업체가제공하는유료지원옵션외에도헌신적인커뮤니티가사용자에게유용한지원을제공합니다。다음은두시스템을사용자지원측면에서비교한것입니다。

MySQL사용자지원

오픈소스프로젝트MySQL인의경우,지원과권장사항을무료로제공하는대규모지원자커뮤니티가있습니다。MySQLPercona웹사이트가대明文적明文커뮤니티입니다。

다음은G2Crowd에올라온MySQL고객지원에대한어느它전문가의의견입니다。

MySQL에서가장좋았던부분은오픈소스프로젝트이기때문에지원이든든하고인터넷에서도움을무상으로받을수있다는점입니다。특히자칫어려울수있었던상황을해결할때이러한장점이매우유용하게작용했습니다。MySQL의가장큰장점중하나는대중성이높기때문에엄청나게많은커뮤니티사람들이어떤문제라도해결해줄수있다는것입니다。

무료커뮤니티지원과별도로甲骨文(MySQL의소유자)에서는구매하려는지원패키지의수준에따라가격이2천달러~ 1만달러인상용제품을통해全天候유료지원을제공합니다。또한여기에서확할수있는무료MySQL서적,매뉴얼,가이드를숙지하면스스로문제를해결할수있습니다。

PostgreSQL사용자지원

MySQL처럼PostgreSQL도IRC메일링리스트를통해사용자에게무료로지원을제공하는대규모지원자커뮤니티가있습니다。외부공급업체를통한유료지원도제공됩니다。또는여기에서확할수있는다양한PostgreSQL매뉴얼과서적을숙지하면스스로도문제해결이가능합니다。

다음은G2Crowd에올라온PostgreSQL지원에대한어느데이터베이스관리자의의견입니다。

...지원적인측면에서볼때,포럼을통해다른사용자들을돕는사용자커뮤니티가가장든든한지원군입니다。

G2Crowd에올라온또다른리뷰어의의견은다음과같습니다。

개인적으로경험한단점한가지는커뮤니티지원을받거나谷歌검색으로결과를얻기가다소어렵다는점입니다。그러나PostgreSQL을사용할수록커뮤니티지원을받기가수월해졌습니다。

결론적으로PostgreSQL지원은(1)설치및사용에기술적전문성이요구되고(2)PostgreSQL전문가가MySQL전문가에비해적기때문에좀더어려울수있습니다。

MySQL과PostgreSQL중더욱빠른시스템은무엇가?

MySQL과PostgreSQL은모두현재제공되고있는DBMS중가장빠른시스템으로잘알려져있습니다。그러나둘중어느것이더 빠른가에대한대답은명확하지않습니다。TechTarget에서Scott Noves가설명한바에따르면,

하드웨어,구성,테스트등에따라어느한데이터베이스를다른데이터베이스보다좋다라고할만한기준은쉽게찾을수있습니다。한데이터베이스는메모리가거의없는싱글코어프로세서에서더나은성능을발휘하는반면,다른데이터베이스는멀티코어프로세서로확장되는이점을더잘활용할수있습니다。한쪽은읽기에우수하고다른하나는쓰기에유리합니다。

TechTarget에따르면,속력테스트에서상반되는결과가도출됩니다。예를 들어Windows的技能에서는MySQL이속도가더빠르다고하고Benchw는PostgreSQL이더빠르다고합니다。결국속도는데이터베이스를사용하는방식에따라달라집니다。PostgreSQL은대량의데이터집합,복잡한쿼리,읽기-쓰기작업을처리할때더빠른것으로알려져있습니다。그에반해MySQL은읽기전용명령을사용해더빠르다고알려져있습니다。

지원하는프로그래밍언어는무엇路人가路人?

MySQL과Postgres는여러동일한언어를지원하지만약간의차이는존재합니다。

MySQL지원언어

MySQL이지원하는언어는다음과같습니다。

  • C / c++
  • 特尔斐
  • Erlang
  • Java
  • 口齿不清
  • node . js
  • Perl
  • PHP
  • R

PostgreSQL지원언어

PostgreSQL이지원하는언어는다음과같이좀더다양합니다。

  • C / c++
  • 特尔斐
  • Erlang
  • Java
  • JavaScript
  • 口齿不清
  • net
  • Python
  • R
  • Tcl
  • 기타프로그래밍언어

호환되는운체제는무엇가?

다음은MySQL과PostgreSQL의운영체제요구사항에대해알아야할사항입니다。

MySQL操作系统호환성

MySQL은클라우드기반지원과온프레미스설치를제공하며다음운체제및형식과호환됩니다。

  • 窗户
  • MacOS
  • Linux(Ubuntu, Debian, Generic, SUSE Linux企业服务器,Red Hat企业,Oracle)
  • Oracle Solaris
  • Fedora
  • FreeBSD
  • 开放源码构建

PostgreSQL OS호환성

PostgreSQL은클라우드기반지원과온프레미스설치를제공하며사용자는주Linux로서버에PostgreSQL을설치합니다。또한PostgreSQL은PostgREST REST API를제공합니다。PostgreSQL웹사이트에따르면,

PostgREST는PostgreSQL데이터베이스를직접RESTful API로전환하는독립실행형웹서버입니다。이데이터베이스의구조적제약조건과권한에따라API엔드포트와작업이결정됩니다。

PostgreSQL은다음운체제에서사용가능합니다

  • MacOS
  • Solaris
  • 窗户
  • BSD (FreeBSD, OpenBSD)
  • Linux(CentOS/Fedora/Scientific/Oracle에디션등Red Hat제품군Linux, Debian GNU/Linux및파생제품,Ubuntu Linux및파생제품,SuSE및OpenSuSE,기타Linux운체제)

?

인덱스는대규모데이터테이블을처리할때SQL쿼리속도를높여데이터베이스성능을향상합니다。데이터베이스를인덱싱하지않으면쿼리가느려지고DBMS에과도한부담을줄수있습니다。MySQL와PostgreSQL은서로다른덱싱옵션을제공합니다。

MySQL官网덱스유형

MySQL官网덱스유형은다음과같습니다。

  • 索引,全文,主键,唯一등B-tree에저장된덱스
  • 공간데이터형식에서찾을수있는R-tree에저장된
  • 全文:덱스사용시해시덱스및역리스트

PostgreSQL @덱스유형

PostgreSQL @덱스유형은다음과같습니다。

  • 해시B-tree덱스
  • 테이블일부의정보만정리하는부분,덱스
  • 열값과반대로수식함수의결과로덱스를만드는수식덱스

코딩은어떻게다른가语录?

다음은꼭알아야하는MySQL과PostgreSQL의세가지코딩차이점입니다。

  1. 대소문자구분
  2. 기본문자집합및문자열
  3. 如果및ifnull문과case문의비교

대소문자구분

MySQL은대소문자를구분하지않습니다.쿼리작성시데이터베이스에,시되는대로문자열을대문자로,시되는대로문자열을대문자로,기할필,가없습니다。PostgreSQL은대소문자를구분합니다.데이터베이스에표시되는것과동일하게문자열을대문자로표기하지않으면쿼리가실패합니다。

기본문자집합및문자열

특정MySQL버전의경우문자집합과문자열을UTF-8로변환해야합니다.PostgreSQL경우문자집합과문자열을UTF-8로변환할필가없습니다.게다가UTF-8구문은PostgreSQL에서허용되지않습니다。

如果및ifnull문과case문의비교

MySQL에서IF및IFNULL문을사용해도아무런문제가되지않습니다。PostgreSQL에서는IF및IFNULL문은사용할수없습니다。대신案例문을사용해야합니다。

PostgreSQL과MySQL의추세비교

결론

결론적으로MySQL과PostgreSQL중어느것을선택하느냐는종종다음과같은질문에의해결정됩니다。

  1. 복잡한쿼리와대규모데이터베이스를다룰수있는기능이풍부한데이터베이스가필요한가요?PostgreSQL이선택지가될수있습니다。
  2. 설치와관리가비교적쉽고,빠르고(안정적이며,파악이어렵지않은간단한데이터베이스가필요한가요?MySQL이선택지가될수있습니다。

하지만이가이드를통해확인했듯이이러한답변보다는좀더미세한차이로결정이달라질수있습니다。Integrate.io에서는 귀하가 현재 사용 중인 DBMS 솔루션과 해당 솔루션을 선택한 이유가 무엇인지 알고자 합니다. 이메일로 알려주시면 감사하겠습니다!

Integrate.io: MySQL 및 PostgreSQL의 데이터 통합 솔루션

MySQL또는PostgreSQL DBMS의데이터를비즈니스인텔리전스플랫폼으로통합하면문제가지속적으로발생할수있습니다。Integrate.io를 이용하면 이러한 문제를 해결할 수 있습니다. Integrate.io에서는 MySQL, PostgreSQL, 기타 데이터베이스 시스템 중 어느 것을 사용하든지 상관없이 거의 모든 데이터 소스에서 정보를 추출하는 매우 강력하고 직관적인Etl솔루션을제공한다음,데이터를변환하여고객의BI데이터웨어하우스로원활하게통합합니다。지금 바로Integrate.io에 문의하여整合。IO솔루션으로어떻게데이터통합문제를해결할수있는지알아보세hg .;

你可能也会喜欢我们的其他帖子……


Integrate.io
确保数据安全
-
数据安全完整指南
保持数据安全:数据安全完整指南
获取免费电子书
2021년최고의etl툴7가지
读下一个:
2021년최고의etl툴7가지
Baidu
map