MySQL - Web Uygulamaları için PostgreSQL [kapalı]


122

Python (Django) kullanan bir web uygulaması üzerinde çalışıyorum ve üretim için dağıtım yaparken MySQL veya PostgreSQL'in daha uygun olup olmayacağını öğrenmek istiyorum.

Bir podcast'te Joel, MySQL ile bazı sorunları olduğunu ve verilerin tutarlı olmadığını söyledi.

Birisinin böyle sorunları olup olmadığını bilmek isterim. Ayrıca, kolayca ayarlanabilen performans söz konusu olduğunda?

Yanıtlar:


127

Gelecekteki okuyucular için bir not: Aşağıdaki metin en son Ağustos 2008'de düzenlenmiştir. Bu düzenleme itibariyle yaklaşık 11 yıl öncesine aittir. Yazılım, sürümden sürüme hızla değişebilir, bu nedenle aşağıdaki tavsiyelere göre bir DBMS seçmeden önce, hala doğru olup olmadığını görmek için biraz araştırma yapın. Aşağıda daha yeni cevapları kontrol edin.


Daha iyi?

MySQL çok daha yaygın olarak web barındırıcıları tarafından sağlanır.

PostgreSQL çok daha olgun bir üründür.

"Daha iyi" sorunuzu ele alan bir tartışma var

Görünüşe göre, bu web sayfasına göre , eşzamanlı erişim seviyeleri düşük olduğunda ve yazma işleminden çok daha fazla okuma olduğunda MySQL hızlıdır. Öte yandan artan yükler ve yazma / okuma oranları ile düşük ölçeklenebilirlik sergilemektedir. PostgreSQL, düşük eşzamanlılık düzeylerinde nispeten yavaştır, ancak yüksek yazma / okuma oranlarında yavaşlamaları önlemek için eşzamanlı erişimler arasında yeterli izolasyon sağlarken, artan yük seviyeleri ile iyi ölçeklenir. Bir dizi performans karşılaştırmasına bağlanmaya devam ediyor, çünkü bunlar koşullara çok duyarlıdır.

Yani karar faktörünüz " hangisi daha hızlı? " İse, o zaman cevap "duruma göre değişir. Gerçekten önemliyse, uygulamanızı her ikisine karşı test edin. " Ve gerçekten, gerçekten önemsiyorsanız, iki DBA alırsınız (biri uzman her bir veritabanında) ve veritabanlarından saçmalığı ayarlamalarını sağlayın ve ardından seçim yapın. İyi DBA'ların ne kadar pahalı olduğu şaşırtıcı ; ve her kuruşa değer .

Önemli olduğu zaman.

Muhtemelen öyle değildir, bu yüzden hangi veritabanının sesini beğendiğinizi seçin ve onunla devam edin; Daha fazla RAM ve CPU ile daha iyi performans, daha uygun veritabanı tasarımı ve akıllıca depolanan yordam hileleri vb. ile satın alınabilir - ve bunların tümü rastgele web sitesi X için MySQL veya PostgreSQL'i seçmek için uğraşmaktan daha ucuz ve kolaydır. ve pahalı DBA'lardan uzman ayarı.


Joel ayrıca o podcast'te bu yorumun onu ısırmak için geri geleceğini çünkü insanlar MySQL'in bir bok parçası olduğunu söyleyeceğini söyledi - Joel bir countsatır geri alamazdı . Anekdotun çoğulu veri değildir. Dedi ki :

MySQL, kariyerimde veri bütünlüğü problemleri olan, sorgulama yaptığınız ve yanlış olan saçma sapan cevaplar aldığınız tek veritabanıdır.

ve ayrıca şunları söyledi:

Bu sadece bir anekdot. Ve aslında blog yazmak ya da genel olarak İnternet hakkında beni sinirlendiren şeylerden biri de bu. [...] Anekdotları gerçeğe dönüştürmek için garip bir eğilim var ve aslında bir blogcu olarak bu konuda biraz suçlu hissetmeye başlıyorum


15
Bir başka nokta da şudur ki, bir çerçeve kullanırsanız, kodunuzu veritabanından soyutlayarak kolayca geçiş yapabilirsiniz.
Don Jones

"hangisi daha hızlı?" . Ne istediğinize bağlı, ACID uyumlu Veritabanı istiyorsanız, şunu okuyun: randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx

47
Ayrıca dikkate değer. MySQL, Oracle'a aittir . Bu nedenle, ücretli ürünleriyle rekabet etmesine asla izin verilmez.
unixman83

15

Sadece aylar sonra çalıyor.

İki veritabanının coğrafi yetenekleri çok ama çok farklı. PostgreSQL, olağanüstü PostGIS uzantısına sahiptir. MySQL'in coğrafi işlevselliği, kıyaslandığında neredeyse sıfırdır.

Web hizmetinizin bir konum bileşeni varsa, PostgreSQL'i seçin.


14

Django kullanmadım ama hem MySQL hem de PostgreSQL kullandım. Veritabanınızı yalnızca Django için bir arka uç olarak kullanacaksanız, bu farkların çoğunu soyutlayacağı için çok da önemli değil. PostgreSQL, veri boyutu / müşteri sayısı artışı kadar MySQL kadar hızlı bir şekilde tuğla duvara çarpmadığı için biraz daha ölçeklenebilir.

Yeni bir sistem yapıyorsanız gerçek fark ortaya çıkar. O halde PostgreSQL'i hemen tavsiye ederim, çünkü DB katmanınızı çok daha özelleştirilebilir kılan çok daha fazla özelliğe sahiptir, böylece sahip olabileceğiniz her türlü gereksinime göre ince ayar yapabilirsiniz.


7

Biraz güncel olmamasına rağmen, MySQL Gotchas sayfasını okumaya değer . Orada listelenen öğelerin çoğu, bildiğim kadarıyla hala doğrudur.

PostgreSQL kullanıyorum.


6

İkisini de yoğun olarak kullanıyorum. Belirli bir proje için seçimim şu şekilde özetlenebilir:

  • Lisanslama - Uygulamanızı dağıtacak mısınız (IANAL)
  • Mevcut Altyapı ve Bilgi Tabanı
  • Sahip olmanız gereken herhangi bir özel sos .

By özel sos Bir şeyler gibi demek:

  • Kolay / ucuz çoğaltma = MySQL
  • Küçük sonuçlarla büyük veri kümesi sorunları = PostgreSQL. Dil uzantılarını kullanın ve çok verimli veri işlemlerine sahip olun. (PL / Python, PL / TCL, PL / Perl, vb.)
  • R İstatistik Kitaplıkları ile Arayüz = Debian / ubuntu'da bulunan PostgreSQL PL / R

3
Postgres ayrıca kolay / ucuz çoğaltma özelliğine sahiptir. Sadece yerleşik değil , çünkü her biri kendi iyi ve kötü yanlarına sahip yarım düzine seçenek var. Yani seçebilir biri MySQL için vasat çoğaltma veya birçok birinden PostgreSQL için. Senin seçimin.
Randal Schwartz

6
PostgreSQL 9.0+, kurulumu çok kolay olan yerleşik ikili WAL replikasyonuna sahiptir.
Sean

1

Pekala, geçmiş geliştirmelerde (inşa etme, hazırlama, üretme) farklı bir veritabanı markası kullanmanız gerektiğini düşünmüyorum, çünkü bu sizi ısıracak.

Anladığım kadarıyla PostgreSQL daha 'doğru' bir veritabanı uygulaması iken mySQl daha az doğru (daha az uyumlu) ama daha hızlı.

Dolayısıyla, hemen hemen bir CRUD uygulaması yazıyorsanız, mySQL gitmenin yoludur. Veritabanınızdan belirli özelliklere ihtiyaç duyuyorsanız (emin değilseniz, istemiyorsanız) postgreSQL'e bakmak isteyebilirsiniz.


1

Farklı sunucularda epeyce dağıtılabilen bir uygulama yazıyorsanız, MySQL taşınabilirlik nedeniyle PostgreSQL'e göre çok fazla ağırlık taşır. Birkaç tane olsa da, PostgreSQL'i tatmin edici olmayan web sunucularında bulmak zordur. Çoğu bakımdan PostgreSQL, özellikle sonunda ince ayar söz konusu olduğunda MySQL'den daha yavaştır. Sonuç olarak, PostgreSQL'e kısa bir süre için bir şans vermenizi söyleyebilirim, böylece ondan tamamen kaçınmazsınız ve sonra bir yargıya varırsınız.


1
Daha düşük kaliteli web sunucularının MySQL'i yüzümüze itmek yerine bir seçenek sunması gerektiği konusunda sizinle hemfikirim. Ancak, paylaşımlı barındırma ile giderken yine de onların insafına kalıyorsunuz. Dolayısıyla bir DBM seçimi o kadar önemli değil.
unixman83

0

Teşekkür ederim. MySQL ile Django kullandım ve sorun değil. İhtiyaç duyduğunuz özelliklerle ilgili veritabanınızı seçin. MySQL ve Postgres'i karşılaştırmak zor. Postgress'i SQl Server ile karşılaştırmak daha iyidir.


0

@WolfmanDragon

PostgreSQL nesneler için (küçük) desteğe sahiptir, ancak doğası gereği ilişkisel bir veritabanıdır. Onun itibaren yaklaşık sayfa :

PostgreSQL güçlü, açık kaynaklı bir ilişkisel veritabanı sistemidir.


2
Nesne-İlişkisel Veritabanı Yönetim Sistemi ISA İlişkisel Veritabanı Yönetim Sistemi. PostgSQL belgelerini daha detaylı okursanız, PostgSql'in bir ORDBMS olduğunu göreceksiniz. Belki de ORDBMS'yi Nesnellik / DB gibi ODBMS ile karıştırıyorsunuz.
WolfmanDragon

-1

MySQL ilişkisel bir veritabanı yönetim sistemidir , PostgreSQL ise nesne ilişkisel bir veritabanı yönetim sistemidir . PostgreSQL, sorguların nasıl yazılacağı konusunda bize daha fazla kontrol sağladığından, C ++ veya Java geliştiricileri için çok uygundur. ORDBMS ayrıca bize Nesneler ve Kullanıcı Tanımlı Türler verir. SQL sorguları ISO standartlarına MySQL'den çok daha yakındır.
ORDBMS'ye veya RDBMS'ye ihtiyacınız var mı? Bu, sorunuzu daha iyi cevaplayacaktır.


Bu bir tür aşırı basitleştirme; bir ORDBMS'ye ihtiyacınız olmaması, mutlaka MySQL ile gitmeniz gerektiği anlamına gelmez. Daha önemli başka farklılıklar var, değil mi?
Don Jones

1
Haklısın. PostgreSQL itici gibi konuşmamaya çalışıyorum. Tasarım gerçek bir nesne veritabanı gerektirmedikçe PostgreSQL dışında bir şey kullanmak için gerçek bir neden göremiyorum. MySQL'de daha fazla insanın aşina olduğu bir nokta göremiyorum.
WolfmanDragon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.