PostgreSQL이 MySQL과의 경쟁에서 살아남은 이유: 오픈소스 데이터베이스 역사 2부
작성자: Tom Kincaid | 2025년 10월 19일
1990년대 오픈소스 관계형 데이터베이스 시장에서 MySQL은 Windows 지원, 웹 환경에 적합한 속도, 초기 투자와 LAMP 스택을 바탕으로 PostgreSQL보다 빠르게 성장했습니다. 그렇다면 PostgreSQL은 이러한 격차에도 어떻게 사라지지 않고 살아남아 오늘날 가장 널리 주목받는 데이터베이스 중 하나로 성장할 수 있었을까요?
이 글에서는 MySQL이 초기 시장을 선점한 이유와 PostgreSQL이 라이선스, ACID 트랜잭션, 소스 코드, 옵티마이저 및 확장성을 바탕으로 살아남은 배경을 살펴봅니다. 저자의 15년 이상에 걸친 Postgres 업계 경험과 초기 프로젝트 참여자 및 도입 기업 관계자들과의 대화를 바탕으로 정리한 오픈소스 데이터베이스 역사 시리즈의 2부입니다.
목차
PostgreSQL 성장 과정 3부작 소개
올해 8월, 저는 PostgreSQL이 개발자들에게 최고가 되기까지의 놀라운 여정이라는 제목의 블로그를 게시했습니다. 이 글에서는 Stack Overflow의 연례 개발자 설문조사 결과를 바탕으로 Postgres가 어떻게 ‘가장 많이 사용되고, 가장 사랑받으며, 가장 원하는’ 데이터베이스가 되었는지 살펴봤습니다.
당시에는 이 시리즈를 2부작으로 만들고 싶다고 했지만, 조금 더 생각한 끝에 3부작 시리즈로 구성하기로 했습니다.
- 1부: PostgreSQL이 개발자들에게 최고가 되기까지의 놀라운 여정 — Stack Overflow 설문조사에 따라 Postgres가 개발자들에게 가장 사랑받고, 가장 원하며, 가장 많이 사용되는 데이터베이스가 되었다는 ‘사실’을 다룹니다.
- 2부: 1990년대 중후반 MySQL이 압도적인 1위를 차지하던 시기에 Postgres가 ‘아주 먼 2위’의 위치에서도 살아남을 수 있었던 이유를 살펴봅니다. 현재 읽고 계신 글입니다.
- 3부: Postgres가 어떻게 최고의 자리를 차지하게 되었는지 살펴볼 예정입니다. 이번에는 언제 이 글이 나올지 예측하는 실수를 저지르지 않겠습니다.
저자의 경험과 PostgreSQL·MySQL 분석 배경
이제 오픈소스 관계형 데이터베이스 초창기에 MySQL이 놀라운 인기와 성공을 거두었음에도 Postgres가 어떻게 살아남았는지 이야기해 보겠습니다. 시리즈의 첫 번째 글이 주로 ‘사실’을 다뤘다면, 이번 글은 대부분 제 개인적인 경험과 그 경험에서 비롯된 의견을 기반으로 합니다.
저는 15년 이상 Postgres 및 Postgres 관련 기업들과 함께해 왔습니다. Postgres 프로젝트 첫날부터 참여했던 많은 분과 초기 도입자(early adopter)들을 만날 수 있는 영광을 누렸습니다.
또한 저는 Sun Microsystems에 재직했으며, 당시 제 상사는 Sun의 10억 달러 규모 MySQL 인수를 이끌었습니다. 이를 통해 MySQL의 탄생과 이후의 성공에 관여한 사람들, 그리고 업계에 큰 영향을 준 인수의 전략적 배경에 있던 여러 관계자와 대화할 기회를 얻었습니다.
MySQL이 초기 오픈소스 데이터베이스 시장에서 앞서 나간 이유
MySQL과 Postgres는 모두 1990년대 중반에 등장했습니다. 이후 많은 것이 달라졌으며, 두 데이터베이스는 서로의 강점 일부를 받아들이면서 발전해 왔습니다.
여러 관계자와의 대화, 제 기억 그리고 웹상의 다양한 출처에서 수집한 정보를 종합하면, 초창기에 MySQL이 Postgres를 앞질렀던 이유는 다음과 같습니다.
1. PostgreSQL보다 7년 빨랐던 Windows 지원
MySQL은 Postgres보다 7년 먼저 Windows를 지원했습니다. MySQL은 1998년에 Windows 버전을 출시했지만, Postgres는 7년 후인 2005년에야 출시했습니다.
Windows NT와 1995년에 출시된 Windows 95가 등장한 이후 대다수 개발자는 Windows 95 이상 버전으로 이동했습니다. 당시 Windows는 직장뿐 아니라 개인 프로젝트용 로컬 컴퓨터에서도 많은 개발자가 사용하던 운영체제였습니다. 결과적으로 Postgres는 출시 후 첫 7년 동안 상당수 개발자가 쉽게 접근하기 어려웠습니다.
2. 초기 웹 애플리케이션에 적합했던 속도
MySQL은 짧고 간단한 쿼리에서 매우 빨랐습니다. 이는 월드 와이드 웹(World Wide Web)의 등장과 함께 탄생한 신규 산업에 정확히 필요한 특성이었습니다.
반면 당시 Postgres는 적절한 트랜잭션 처리와 복잡한 쿼리 최적화에 더 중점을 두었기 때문에 일반적인 웹 애플리케이션에서는 더 느리고 덜 적합했습니다. 다만 이 시기의 두 데이터베이스에 대한 성능 수치는 확보하지 못했으므로, 이는 전적으로 제가 들은 내용에 근거한 평가입니다.
3. 초기 기업 투자와 적극적인 마케팅
MySQL은 초기부터 투자 기반 회사인 MySQL AB의 지원을 받았습니다. 이에 따라 기술을 적극적으로 마케팅하고 사용자 컨퍼런스를 개최할 수 있었습니다.
Postgres가 이와 같은 규모의 지원을 받기 시작한 것은 훨씬 나중의 일이었습니다. Postgres가 MySQL과 유사한 수준의 마케팅 투자를 받기 시작한 시점에 대해서는 의견이 분분하며, Postgres를 지원한 초기 회사로는 Great Bridge와 EDB 등이 있습니다.
4. LAMP 스택의 ‘M’이 만든 높은 인지도
LAMP(Linux, Apache, MySQL, PHP) 브랜드가 부상하면서 MySQL의 ‘M’은 강력한 인지도를 얻었습니다. LAMP는 매일 새로운 웹사이트와 웹 기반 비즈니스가 등장하던 시기에 가장 빠르게 성장한 웹 개발 플랫폼 중 하나가 되었습니다.
LAMP 스택을 활용한 개발 서적이 다양하게 출판됐고, 많은 대학 과정과 부트캠프도 이 새로운 웹사이트 및 웹 애플리케이션 개발 방식을 가르쳤습니다.
PostgreSQL이 MySQL에 밀리고도 사라지지 않은 이유
그렇다면 초창기의 Postgres는 왜 LAMP 스택의 ‘L’인 Linux에 밀려 거의 사라진 Berkeley Unix와 같은 길을 가지 않았을까요?
관계자들과의 대화, 개인적인 경험 그리고 웹에서 확인한 자료를 바탕으로 보면, MySQL의 압도적인 초기 우위에도 Postgres가 강력하고 충성도 높은 사용자층을 확보할 수 있었던 배경에는 다음과 같은 기술적·생태계적 특성이 있었습니다.
1. 활용 범위가 넓은 관대한 라이선스
Postgres는 과거에도 그랬고 지금도 가장 관대한 라이선스(permissive license) 중 하나를 보유하고 있습니다. 이러한 라이선스 덕분에 초기 Greenplum, Netezza, EDB를 비롯한 여러 회사가 자사 제품에 Postgres를 활용할 수 있었습니다.
그 결과 Postgres의 작동 방식과 기능에 대한 이해가 이들 기업과 사용자 기반 전반으로 확산될 수 있었습니다.
2. 데이터 무결성을 위한 ACID 트랜잭션
MySQL은 2000년대 초반까지 진정한 ACID 트랜잭션을 지원하지 않았으며, 당시 기본 스토리지 엔진인 MyISAM도 ACID를 준수하지 않았습니다.
이 차이는 데이터베이스 원칙을 중요하게 생각한 전문가와 학계뿐 아니라, 금융기관처럼 이러한 트랜잭션 속성이 반드시 필요한 조직이 Postgres에 관심을 두는 계기가 됐습니다.
3. 깔끔하고 체계적으로 관리된 소스 코드
제가 들은 내용과 직접 확인한 경험에 따르면 Postgres의 소스 코드는 매우 깔끔하게 관리돼 있습니다. 최고 수준의 개발자들이 이 소스 코드로 작업하는 것을 좋아했습니다.
특히 데이터베이스 학계에 있거나, 상용 데이터베이스 회사(proprietary database companies)에서 근무한 후 계속 데이터베이스 기술을 개발하고 싶었던 개발자들에게 매력적인 프로젝트였습니다. 엄격한 검토 및 개발 프로세스를 통해 소스 코드는 오늘날까지 깨끗하고 잘 문서화된 상태를 유지하고 있습니다.
4. 복잡한 쿼리를 처리하는 데이터베이스 옵티마이저
Oracle이나 다른 상용 데이터베이스에서 마이그레이션하는 많은 애플리케이션에는 Postgres가 제공하는 일부 최적화 기술이 필요했습니다. 기존 데이터베이스 옵티마이저에 대한 경험이 있던 전문가들도 Postgres 옵티마이저로 작업하기를 원했습니다.
제가 오랫동안 활동한 여러 Postgres 커뮤니티 구성원에게 “무엇이 당신을 Postgres로 이끌었나요?”라고 물었을 때, 그들은 간단히 “옵티마이저”라고 답했습니다.
5. 새로운 데이터 타입을 지원하는 확장성
MySQL은 서드파티가 스토리지 엔진을 플러그인할 수 있다는 점에서 뛰어난 확장성을 제공했습니다. 하지만 Postgres는 새로운 데이터 타입(data type)을 플러그인할 수 있는 구조를 갖추고 있었습니다.
이 기능은 Postgres가 지리 공간 정보(geospatial data) 분야에서 강력한 솔루션으로 발전할 수 있었던 기반이 됐습니다. 특히 PostGIS 확장 기능을 통해 완전히 새로운 유형의 기업과 활용 사례가 Postgres 생태계로 유입됐습니다.
PostgreSQL 생태계 성장의 기반
MySQL은 Windows 지원, 초기 웹 환경에 적합한 속도, 기업 투자와 LAMP 스택을 바탕으로 오픈소스 데이터베이스 시장의 출발선에서 우위를 확보했습니다.
그러나 Postgres는 관대한 라이선스, ACID 트랜잭션, 높은 품질의 소스 코드, 정교한 옵티마이저와 데이터 타입 확장성을 바탕으로 살아남았습니다. 이를 통해 강력한 사용자층을 확보하고 개발자들 사이에서 꾸준히 성장할 수 있었습니다.
Postgres가 이러한 기반 위에서 어떻게 정상에 올랐는지에 대한 제 견해는 이 블로그 시리즈의 3부에서 이어서 소개하겠습니다.
PostgreSQL과 MySQL의 역사에 관한 FAQ
초기 오픈소스 데이터베이스 시장에서 MySQL이 PostgreSQL보다 앞선 이유는 무엇인가요?
MySQL은 PostgreSQL보다 일찍 Windows를 지원했고 짧고 간단한 웹 쿼리에서 빠른 성능을 제공했습니다. 초기 기업 투자와 마케팅, LAMP 스택의 확산도 MySQL의 빠른 성장에 영향을 주었습니다.
PostgreSQL이 MySQL과의 경쟁에서 살아남은 핵심 이유는 무엇인가요?
관대한 라이선스, ACID 트랜잭션 지원, 높은 품질의 소스 코드, 정교한 옵티마이저와 확장성이 핵심 기반이었습니다. 이러한 특성은 학계와 금융기관, 데이터베이스 개발자 및 다양한 기술 기업을 PostgreSQL 생태계로 끌어들였습니다.
PostgreSQL과 초기 MySQL의 트랜잭션 지원에는 어떤 차이가 있었나요?
PostgreSQL은 데이터 무결성이 중요한 환경에 필요한 ACID 트랜잭션을 제공했습니다. 반면 MySQL은 2000년대 초반까지 진정한 ACID 트랜잭션을 지원하지 않았고 당시 기본 스토리지 엔진인 MyISAM도 ACID를 준수하지 않았습니다.
PostgreSQL의 확장성이 성장에 어떤 역할을 했나요?
PostgreSQL은 새로운 데이터 타입을 추가할 수 있는 확장 구조를 제공했습니다. 특히 PostGIS 확장 기능은 PostgreSQL이 지리 공간 정보 분야에서 강력한 솔루션으로 자리 잡고 새로운 기업과 활용 사례를 확보하는 데 기여했습니다.
LAMP 스택은 MySQL의 성장에 어떤 영향을 주었나요?
Linux, Apache, MySQL, PHP로 구성된 LAMP 스택은 웹 개발 플랫폼으로 빠르게 확산했습니다. 관련 서적과 대학 과정, 부트캠프가 늘어나면서 스택의 ‘M’에 해당하는 MySQL도 높은 인지도와 사용자 기반을 확보했습니다.