저는 Python (Django)을 사용하는 웹 애플리케이션에서 작업 중이며 프로덕션 용으로 배포 할 때 MySQL 또는 PostgreSQL이 더 적합한 지 알고 싶습니다.
한 팟 캐스트에서 Joel은 MySQL에 몇 가지 문제가 있으며 데이터가 일관성이 없다고 말했습니다.
누군가 그런 문제가 있는지 알고 싶습니다. 또한 쉽게 조정할 수있는 성능에 관해서는?
답변
미래 독자를위한 참고 사항 : 아래 텍스트는 2008 년 8 월에 마지막으로 편집되었습니다.이 편집 시점은 거의 11 년 전입니다. 소프트웨어는 버전마다 빠르게 변경 될 수 있으므로 아래 조언에 따라 DBMS를 선택하기 전에 몇 가지 조사를 수행하여 여전히 정확한지 확인하십시오. 아래에서 최신 답변을 확인하세요.
보다 나은?
MySQL은 웹 호스트에서 훨씬 더 일반적으로 제공됩니다.
PostgreSQL은 훨씬 더 성숙한 제품입니다.
“더 나은”질문에 대한 토론이 있습니다.
분명히,에 따라 이 웹 페이지에 동시 액세스 수준이 낮은 경우, MySQL은 빠르고, 많은있을 때 더 쓰기보다 읽습니다. 반면에로드 및 쓰기 / 읽기 비율이 증가함에 따라 확장 성이 낮습니다. PostgreSQL은 낮은 동시성 수준에서 상대적으로 느리지 만로드 수준이 증가하면 잘 확장되며 동시 액세스간에 충분한 격리를 제공하여 높은 쓰기 / 읽기 비율에서 속도 저하를 방지합니다. 이러한 것들은 조건에 매우 민감하기 때문에 여러 성능 비교와 연결됩니다.
따라서 결정 요인이 ” 어느 것이 더 빠릅니까? ” 라면 대답은 “상황에 따라 다릅니다. 정말 중요한 경우 두 가지 모두에 대해 응용 프로그램을 테스트하십시오. “그리고 정말로 관심이 있다면 두 명의 DBA (전문가 각 데이터베이스에서) 데이터베이스에서 쓰레기를 조정하도록 한 다음 선택하십시오. 좋은 DBA가 얼마나 비싸다는 것은 놀랍습니다 . 그리고 그들은 모든 센트의 가치가 있습니다.
중요 할 때.
아마도 그렇지 않을 것입니다. 그러니 사운드가 마음에 드는 데이터베이스를 선택하고 함께 사용하십시오. 더 많은 RAM과 CPU, 더 적절한 데이터베이스 디자인, 영리한 저장 프로 시저 트릭 등으로 더 나은 성능을 구매할 수 있습니다.이 모든 것이 MySQL 또는 PostgreSQL 중에서 선택하는 것보다 random-website-X에서 더 저렴하고 쉽습니다. , 값 비싼 DBA의 전문가 튜닝.
Joel은 또한 그 팟 캐스트에서 사람들이 MySQL이 쓰레기라고 말할 것이기 때문에 댓글이 다시 올 것이라고 말했습니다. Joel count
은 행을 다시 가져올 수 없습니다 . 복수의 일화는 데이터가 아닙니다. 그는 말했다 :
MySQL은 제 경력에서 데이터 무결성 문제가있는 유일한 데이터베이스입니다. 쿼리를 수행하고 말도 안되는 답변을받을 수 있습니다.
그리고 그는 또한 말했다 :
일 화일뿐입니다. 그리고 그것은 실제로 블로깅이나 일반적인 인터넷에 대해 저를 좌절시키는 것 중 하나입니다. […] 일화를 진실로 만드는 이상한 경향이 있으며 실제로 블로거로서 나는 이것에 대해 약간의 죄책감을 느끼기 시작했습니다
답변
몇 달 후 그냥 소리가 난다.
두 데이터베이스의 지리적 기능은 매우 다릅니다. PostgreSQL에는 뛰어난 PostGIS 확장 기능이 있습니다. MySQL의 지리적 기능은 비교해 볼 때 사실상 제로입니다.
웹 서비스에 위치 구성 요소가있는 경우 PostgreSQL을 선택합니다.
답변
Django는 사용하지 않았지만 MySQL과 PostgreSQL을 모두 사용했습니다. Django의 백엔드로만 데이터베이스를 사용한다면 대부분의 차이점을 추상화 할 수 있기 때문에 그다지 중요하지 않습니다. PostgreSQL은 데이터 크기 / 클라이언트 수가 증가함에 따라 MySQL만큼 빠르게 벽돌 벽에 부딪히지 않기 때문에 확장 성이 조금 더 높습니다.
새로운 시스템을 사용하면 진정한 차이가 있습니다. 그런 다음 PostgreSQL을 권장합니다. DB 계층을 훨씬 더 사용자 정의 할 수있는 훨씬 더 많은 기능을 가지고 있기 때문에 필요한 모든 요구 사항에 맞게 미세 조정할 수 있습니다.
답변
다소 구식이지만 MySQL Gotchas 페이지를 읽어 볼 가치가 있습니다 . 여기에 나열된 많은 항목은 내가 아는 한 여전히 사실입니다.
PostgreSQL을 사용합니다.
답변
둘 다 광범위하게 사용합니다. 특정 프로젝트에 대한 나의 선택은 다음과 같이 요약됩니다.
- 라이선스-앱을 배포 하시겠습니까 (IANAL)
- 기존 인프라 및 지식 기반
- 어떤 특별한 소스 당신이이 가지고있다.
하여 특별한 소스 나는 일을 같은 의미 :
- 쉽고 저렴한 복제 = MySQL
- 작은 결과를 가진 거대한 데이터 세트 문제 = PostgreSQL. 언어 확장을 사용하고 매우 효율적인 데이터 작업을 수행합니다. (PL / Python, PL / TCL, PL / Perl 등)
- R 통계 라이브러리와의 인터페이스 = debian / ubuntu에서 사용 가능한 PostgreSQL PL / R
답변
글쎄, 나는 당신이 당신을 물기 위해 돌아올 것이기 때문에 과거의 개발 (빌드, 스테이징, 프로드)에서 다른 데이터베이스 브랜드를 사용해서는 안된다고 생각합니다.
내가 이해하는 방법에서 PostgreSQL은 더 ‘올바른’데이터베이스 구현이지만 mySQl은 덜 정확하지만 (적은 준수) 빠릅니다.
따라서 CRUD 응용 프로그램을 거의 작성하고 있다면 mySQL이 갈 길입니다. 데이터베이스에서 특정 기능이 필요한 경우 (확실하지 않은 경우) postgreSQL을 살펴볼 수 있습니다.
답변
다른 서버에 상당히 분산 될 수있는 응용 프로그램을 작성하는 경우 MySQL은 이식성 때문에 PostgreSQL보다 많은 비중을 차지합니다. PostgreSQL은 만족스럽지 않은 웹 호스트에서 찾기가 어렵습니다. 대부분의 경우 PostgreSQL은 MySQL보다 느립니다. 특히 최종적으로 미세 조정에 관해서는 더욱 그렇습니다. 대체로 PostgreSQL에 짧은 시간 동안 기회를 주면 완전히 피하지 않고 판단을 내릴 수 있습니다.