본문 바로가기

Database

Uber가 Postgres에서 MySQL로 전환한 이유

728x90
반응형

유튜브에서 외국 IT기술채널을 몇개만 봤을 뿐인데 알고리즘이 자꾸 추천해서 보게된 영상

영상은 업로드한지 몇 달 안된것 같지만 DB변환은 이미 5년전에 완료된듯하다.

 

www.youtube.com/watch?v=_E43l5EbNI4

 

구글링해보니 우버 기술블로그 발견

eng.uber.com/postgres-to-mysql-migration/

 

Why Uber Engineering Switched from Postgres to MySQL

Uber Engineering explains the technical reasoning behind its switch in database technologies, from Postgres to MySQL.

eng.uber.com

 

Uber 에서는 약5년전 기존 Postgres 를 사용해 오다 MySQL 로 변환하였고 해당 이유를 블로그에 자세히 작성하였다.

Uber 에서 운영한 Postges 버전은 9.2 인듯 하다.

 

운영시 Postgres 의 단점

  • 쓰기에 관련된 비효율적인 아키덱쳐
  • 비효율적인 데이터 복제
  • 테이블 손상문제
  • 잘못된 복제 MVCC 지원
  • 최신버전으로의 업그레이드 어려움.

 

1. Postgres 의 핵심 아키텍쳐는 변경 불가능한 Row Data(Record 느낌)

  • Postgres 용어로 튜플(tuples)
  • 튜플로 인한 인덱스 용량의 증가 및 속도 저하 이슈 발생에 대한 설명

2. WAL(Write-Ahead Logging) 아키덱쳐 설명

3. Write Amplification - 쓰기작업에 대한 비효율성

  • 데이터 변경 작업시 튜플에 대한 작업, 모든 인덱스에 대한 정보수정 과정이 필요
  • WAL 반영에 대한 비효율성에 대한 설명

4. Replication - 복제작업시 복제 아키덱쳐에 따른 WAL 용량의 비대함 설명

5. Data Corruption - 데이터 손상이 관련된 postgres 버그 발생 설명

  • Postges 9.2 만 존재하는 버그이며 이후 버전에서는 해결

6. Replica MVCC - 진정한 복제 MVCC 기능 미존재에 대한 설명

7. Postgres 업그레이드가 힘들다는 설명

  • 업그레이드시 서비스 중단
  • 업그레이드시 시간이 많이 걸리는 문제

 


 

MySQL 의 아키덱쳐

 

1. InnoDB 에 대한 설명

  • InnoDB는 데이터 변경작업시 해당 인덱스만 Update

2. Replication - 복제에 대한 장점

  • 다양한 복제 모드 제공
  • MySQL 복제 바이너리 로그가 Postgres WAL 보다 더 효율적

3. MySQL 아키텍쳐가 좋다는 어필(!?)

4. The Buffer Pool - 버퍼풀에 대한 장점

5. Connection Handling - 연결처리에 대한 장점

  • Postgres 는 연결시 프로세스를 생성하는 방식인 반면 MySQL은 스레드를 생성하여 많은 연결이 가능하며 오버헤드가 적다는 장점
  • 10,000개 연결도 무리없이 가능

 

## 결론

Uber 에서는 MySQL이 Postgres 보다 장점이 많아 MySQL로 이동하였고 잘 운영중이다 라는 설명

 

<끄읕>

 

728x90
반응형