2012-03-02 2 views
21

Django를 처음 사용하고 장고에서 데이터베이스 엔진으로 sqlite3 만 사용했습니다. 현재 작업중인 애플리케이션 중 하나가 모델의 복잡성과 요청/초 측면에서 모두 상당히 커지고 있습니다.Django 응용 프로그램을 선택할 데이터베이스 엔진은 무엇입니까?

장고가 지원하는 데이터베이스 엔진은 성능면에서 어떻게 비교 되는가? 그 중 어떤 함정이라도 사용하는 것은 어떤가? 그리고 마지막으로, 잠시 동안 한 번 사용하면 다른 엔진으로 전환하는 것이 얼마나 쉬운가요? 감사!

답변

25

관계형 데이터베이스를 사용하려는 경우 Django 커뮤니티에서 가장 인기있는 것이 PostgreSQL 인 것으로 보입니다. 내 개인적으로 좋아하는거야. 그러나 MongoDB는 Python/Django 커뮤니티에서도 꽤 인기가있는 것으로 보입니다. MySQL에는 성공적인 프로젝트가 많이 있습니다. 그러나 필자는 개인적으로 PostgreSQL 9.0 또는 9.1을 선호합니다. 희망이 도움이됩니다.

편집 : 나는이 게시물로 큰 일을하지 않았다. 단지 몇 가지 고려 사항을 추가하고 싶습니다.

대다수 웹 사이트의 경우 MySQL 또는 PostgreSQL이 정상적으로 작동합니다. 둘 다 강점과 약점이 있습니다. 나는 당신에게 "MySQL 대 PostgreSQL"이라는 구글을 추천한다.이 검색에는 많은 조회수가있다. (이 글을 쓰는 시점에는 3,000,000 이상을 얻는다.) 다음은 평가를 수행하는 데 필요한 몇 가지 팁입니다.

  1. 최근 기사를 선호합니다. MySQL 5.5를 PostgreSQL 9.0 또는 9.1과 비교하는지 확인하십시오.
  2. MySQL 스토리지 엔진을 선택해 보겠습니다. IMO, Apple to Apple 비교는 Postgres의 InnoDB를 닫습니다.
  3. InnoDB 또는 Postgres의 모든 기능을 필요로하지 않을 수도 있습니다. 다른 저장소 엔진도 살펴 봐야합니다.

또한 시스템에서 트리거를 사용하려는 경우 MySQL 및 InnoDB와 관련된 몇 가지 정말 불쾌한 버그와 ACID 준수가 있습니다. 여기에 the first one이고 여기에 another one입니다. 이 기능을 필요로하지 않을 수도 있습니다.

PostgreSQL을 사용하면 파이썬으로 db 함수를 작성할 수 있다는 점에서 가장 중요한 점 중 하나입니다. 여기에 link to the docs이 있습니다.

+3

참고. PostgreSQL 또는 MySQL을 권하고 싶습니다. – Alasdair

3

MySQL과 PostgreSQL은 Django에서 가장 잘 작동합니다. 나는 당신이 개발 중 (개발 모드에서 sqlite3을 사용하는 것과 반대되는 "실제"데이터베이스에서 prod)을 사용하는 동안 개발 설정을 사용하도록 개발 설정을 변경하는 것을 선택할 때 미묘한 행동상의 차이가 있으므로 두통이 많이 생길 수 있음을 강력하게 제안합니다. 미래.

11

MySQL과 Postgres는 Django 커뮤니티에서 사용되는 가장 일반적인 두 개의 DB 백엔드이며 비슷한 성능을 제공합니다. 내가 뒷받침 할 어떤 어려운 번호는 없지만 Postgres가 Django 커뮤니티에서 더 인기가 있다는데 동의 할 것이다. 나는 확실히 MySQL을 선택하는 것을 의미하지 않는다 그러나 나는 (일반적으로 또는 MySQL의) 장고와 MySQL을 사용하는 경우 몇 가지 일반적인 함정이있다 말할 것입니다 :의 MyISAM (5.5에서 더 이상 기본으로

  1. 없음 트랜잭션 지원.5)
  2. 날짜 시간에 어떤 밀리 초를 지원하지
  3. 고유 문자 필드는 255 자 미만
  4. 기본 데이터 정렬해야합니다 날짜 시간에 대한 어떤 시간대 지원은 대소 문자를 구분하지 않습니다

에 대한 몇 가지 문서가 있습니다 다양한 DB 백엔드에서 지원되지 않는 Django의 다양한 기능 : https://docs.djangoproject.com/en/1.3/ref/databases/.

+2

IMHO PostgreSQL은 MySQL보다 훨씬 강력하고 강력하지만 MySQL은 더 보편적입니다. 많은 "클라우드"공급자는 규모가 매우 큰 MySQL 호환 제품을 제공합니다. –

+0

@MarkLavin은 지원되지 않는 기능 목록을 제공해 주셔서 감사 드리며, 이러한 제한 사항 중 일부는 알지 못했습니다. 이것은 MySQL 대 PostgreSQL을 비교하는 것보다 훨씬 명확한 답을 제공합니다. –

+0

문제 없습니다. 그들 중 일부는 사소한 일이지만, 당신이 그들과 마주 칠 때 그들은 상당히 놀랍거나 좌절 할 수 있습니다. –

관련 문제