MySQL vs PostgreSQL untuk Aplikasi Web [ditutup]

122

Saya sedang mengerjakan aplikasi web menggunakan Python (Django) dan ingin tahu apakah MySQL atau PostgreSQL akan lebih cocok saat menerapkan untuk produksi.

Dalam satu podcast, Joel mengatakan bahwa dia memiliki beberapa masalah dengan MySQL dan datanya tidak konsisten.

Saya ingin tahu apakah seseorang memiliki masalah seperti itu. Juga dalam hal kinerja yang dapat dengan mudah diubah?

cnu
sumber

Jawaban:

127

Catatan untuk pembaca mendatang: Teks di bawah ini terakhir kali disunting pada Agustus 2008. Itu hampir 11 tahun yang lalu saat penyuntingan ini. Perangkat lunak dapat berubah dengan cepat dari versi ke versi, jadi sebelum Anda memilih DBMS berdasarkan saran di bawah, lakukan beberapa penelitian untuk melihat apakah itu masih akurat. Periksa jawaban terbaru di bawah.


Lebih baik?

MySQL jauh lebih umum disediakan oleh host web.

PostgreSQL adalah produk yang jauh lebih matang.

Ada diskusi ini membahas pertanyaan "lebih baik" Anda

Rupanya, menurut halaman web ini , MySQL cepat ketika tingkat akses bersamaan rendah, dan ketika ada lebih banyak membaca daripada menulis. Di sisi lain, ini menunjukkan skalabilitas rendah dengan peningkatan beban dan rasio tulis / baca. PostgreSQL relatif lambat pada tingkat konkurensi rendah, tetapi berskala baik dengan peningkatan tingkat muatan, sambil menyediakan isolasi yang cukup antara akses serentak untuk menghindari perlambatan pada rasio tulis / baca yang tinggi. Ini selanjutnya ditautkan ke sejumlah perbandingan kinerja, karena hal-hal ini sangat ... sensitif terhadap kondisi.

Jadi, jika faktor keputusan Anda adalah, " mana yang lebih cepat? " Maka jawabannya adalah "tergantung. Jika itu benar-benar penting, uji aplikasi Anda terhadap keduanya. " Dan jika Anda benar-benar peduli, Anda mendapatkan dua DBA (yang berspesialisasi di setiap database) dan minta mereka untuk menghilangkan omong kosong dari database, lalu pilih. Ini menakjubkan seberapa mahal baik DBA adalah; dan nilainya setiap sen .

Saat itu penting.

Yang mana mungkin tidak, jadi pilih saja database mana saja yang Anda suka dan gunakan; kinerja yang lebih baik dapat dibeli dengan lebih banyak RAM dan CPU, dan desain database yang lebih sesuai, dan trik prosedur tersimpan yang cerdas dan sebagainya - dan semua itu lebih murah dan lebih mudah untuk random-website-X daripada susah payah memilih, MySQL atau PostgreSQL , dan penyetelan spesialis dari DBA mahal.


Joel juga mengatakan dalam podcast itu bahwa komentar akan kembali menggigitnya karena orang akan mengatakan bahwa MySQL adalah omong kosong - Joel tidak bisa mendapatkan satu countbaris pun kembali. Bentuk jamak dari anekdot bukanlah data. Dia berkata :

MySQL adalah satu-satunya database yang pernah saya program selama karir saya yang memiliki masalah integritas data, di mana Anda melakukan kueri dan Anda mendapatkan jawaban yang tidak masuk akal, itu tidak benar.

dan dia juga berkata:

Itu hanya anekdot. Dan itulah salah satu hal yang membuat saya frustrasi, sebenarnya, tentang blogging atau hanya Internet secara umum. [...] Hanya ada kecenderungan aneh untuk membuat anekdot menjadi kebenaran dan sebagai blogger sebenarnya saya mulai merasa sedikit bersalah tentang ini

Josh
sumber
15
Dan poin lainnya adalah, jika Anda menggunakan kerangka kerja, Anda mungkin dapat mengabstraksi kode Anda dari database, sehingga Anda dapat beralih dengan mudah.
Don Jones
"mana yang lebih cepat?" . Tergantung apa yang Anda inginkan, Jika Anda ingin Database yang sesuai dengan ACID, baca ini: randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx
47
Juga patut diperhatikan. MySQL dimiliki oleh Oracle. Oleh karena itu, tidak akan pernah diizinkan untuk bersaing dengan produk berbayar mereka.
unixman83
15

Hanya berbulan-bulan kemudian.

Kemampuan geografis dari kedua database sangat, sangat berbeda. PostgreSQL memiliki ekstensi PostGIS yang luar biasa. Fungsionalitas geografis MySQL praktis nol jika dibandingkan.

Jika layanan web Anda memiliki komponen lokasi, pilih PostgreSQL.

Musim panas
sumber
14

Saya belum pernah menggunakan Django, tetapi saya telah menggunakan MySQL dan PostgreSQL. Jika anda akan menggunakan database anda hanya sebagai backend untuk Django, itu tidak terlalu menjadi masalah, karena ia akan mengabstraksikan sebagian besar perbedaan. PostgreSQL sedikit lebih skalabel karena tidak mencapai dinding bata secepat MySQL karena ukuran data / jumlah klien meningkat.

Perbedaan nyata muncul jika Anda melakukan sistem baru. Kemudian saya akan merekomendasikan PostgreSQL secara langsung, karena ia memiliki lebih banyak fitur yang membuat lapisan DB Anda jauh lebih dapat disesuaikan, sehingga Anda dapat menyesuaikannya dengan persyaratan apa pun yang mungkin Anda miliki.

Grey Panther
sumber
7

Meskipun agak ketinggalan zaman, ada baiknya membaca halaman MySQL Gotchas . Banyak dari item yang terdaftar di sana masih benar, sejauh pengetahuan saya.

Saya menggunakan PostgreSQL.

Greg Hewgill
sumber
6

Saya menggunakan keduanya secara ekstensif. Pilihan saya untuk proyek tertentu bermuara pada:

  • Pemberian Lisensi - Apakah Anda akan mendistribusikan aplikasi Anda (IANAL)
  • Infrastruktur dan Basis Pengetahuan yang Ada
  • Setiap saus khusus Anda harus memiliki.

Yang saya maksud dengan saus khusus adalah hal-hal seperti:

  • Replikasi mudah / murah = MySQL
  • Masalah set data besar dengan hasil kecil = PostgreSQL. Gunakan ekstensi bahasa, dan lakukan operasi data yang sangat efisien. (PL / Python, PL / TCL, PL / Perl, dll)
  • Antarmuka dengan Perpustakaan Statistik R = PostgreSQL PL / R tersedia di debian / ubuntu
Lance Bergegas
sumber
3
Postgres juga memiliki replikasi yang mudah / murah. Itu tidak dibangun di dalam , karena ada setengah lusin untuk dipilih, masing-masing dengan bagian baik dan buruknya sendiri. Jadi Anda dapat memilih satu replikasi biasa-biasa saja untuk MySQL, atau dari banyak replikasi untuk PostgreSQL. Pilihanmu.
Randal Schwartz
6
PostgreSQL 9.0+ memiliki replikasi WAL biner bawaan yang sangat mudah diatur.
Sean
1

Yah, saya tidak berpikir Anda harus menggunakan merek database yang berbeda dalam pengembangan sebelumnya (build, staging, prod) karena itu akan kembali menggigit Anda.

Dari bagaimana saya memahaminya PostgreSQL adalah implementasi database yang lebih 'benar' sedangkan mySQl kurang benar (kurang sesuai) tetapi lebih cepat.

Jadi jika Anda cukup banyak menulis aplikasi CRUD, mySQL adalah cara yang tepat. Jika Anda memerlukan fitur tertentu dari database Anda (jika Anda tidak yakin maka Anda tidak melakukannya) maka Anda mungkin ingin melihat ke postgreSQL.

SCdF
sumber
1

Jika Anda menulis aplikasi yang mungkin didistribusikan cukup banyak di server yang berbeda, MySQL membawa banyak bobot di atas PostgreSQL karena portabilitasnya. PostgreSQL sulit ditemukan di web host yang kurang memuaskan, meskipun ada beberapa. Dalam banyak hal, PostgreSQL lebih lambat dari MySQL, terutama dalam hal fine tuning pada akhirnya. Secara keseluruhan, saya akan mengatakan untuk mencoba PostgreSQL untuk waktu yang singkat, dengan cara itu Anda tidak sepenuhnya menghindarinya, dan kemudian membuat penilaian.

tslocum.dll
sumber
1
Saya setuju dengan Anda bahwa lebih banyak web-host berkualitas rendah harus menawarkan pilihan daripada mendorong MySQL di depan kita. Namun, saat menggunakan shared hosting, Anda bergantung pada mereka. Jadi pilihan DBM tidak terlalu penting.
unixman83
0

Terima kasih. Saya telah menggunakan Django dengan MySQL dan tidak masalah. Pilih database Anda pada fitur yang Anda butuhkan. Sulit membandingkan MySQL dan Postgres. Lebih baik membandingkan Postgress dengan SQl Server.

Stephen Cox
sumber
0

@Tokopedia

PostgreSQL memiliki (kecil) dukungan untuk objek, tetapi pada dasarnya, ini adalah database relasional. Dari halaman tentangnya :

PostgreSQL adalah sistem database relasional open source yang kuat .

marcospereira.dll
sumber
2
Sistem Manajemen Basis Data Objek-Relasional ISA Sistem Manajemen Basis Data Relasional. Jika Anda membaca lebih jauh dokumentasi PostgSQL, Anda akan menemukan bahwa PostgSql adalah ORDBMS. Mungkin Anda bingung ORDBMS dengan ODBMS seperti Objectivity / DB.
WolfmanDragon
-1

MySQL adalah sistem manajemen database relasional sedangkan PostgreSQL adalah sistem manajemen database objek -relasional . PostgreSQL sangat cocok untuk pengembang C ++ atau Java, karena ini memberi kita lebih banyak kendali atas bagaimana kueri ditulis. ORDBMS juga memberi kita Objek dan Jenis yang Ditentukan Pengguna. Kueri SQL sendiri lebih dekat dengan standar ISO daripada MySQL.
Apakah Anda memerlukan ORDBMS atau RDBMS? Itu akan menjawab pertanyaan Anda dengan lebih baik.

WolfmanDragon
sumber
Itu agak terlalu menyederhanakan; hanya karena Anda tidak memerlukan ORDBMS tidak berarti Anda harus menggunakan MySQL. Ada perbedaan lain yang lebih signifikan, bukan?
Don Jones
1
Anda benar. Saya mencoba untuk tidak terdengar seperti pendorong PostgreSQL. Saya tidak melihat alasan sebenarnya untuk menggunakan apa pun selain PostgreSQL kecuali desainnya memanggil database objek yang sebenarnya. Saya tidak melihat ada gunanya di MySQL selain lebih banyak orang yang mengenalnya.
WolfmanDragon