MySQL vs PostgreSQL для веб-додатків [закрито]


122

Я працюю над веб-додатком, використовуючи Python (Django), і хотів би знати, чи буде MySQL чи PostgreSQL більш підходящим під час розгортання для виробництва.

В одному подкасті Джоел заявив, що у нього були деякі проблеми з MySQL, і дані не узгоджувалися.

Мені хотілося б знати, чи були у когось такі проблеми. Крім того, коли мова йде про продуктивність, яку можна легко налаштувати?

Відповіді:


127

Примітка майбутнім читачам: Текст, поданий нижче, востаннє редагувався у серпні 2008 року. Це було майже 11 років тому станом на цю редакцію. Програмне забезпечення може швидко змінюватися від версії до версії, тому перед тим, як перейти до вибору СУБД на основі наведених нижче порад, зробіть кілька досліджень, щоб перевірити, чи воно все ще точно. Нижче ви знайдете відповіді.


Краще?

MySQL набагато частіше надається веб-хостами.

PostgreSQL - набагато зріліший продукт.

Там ця дискусія стосується вашого "кращого" питання

Мабуть, згідно з цією веб-сторінкою , MySQL швидкий, коли паралельний рівень доступу низький і коли читається набагато більше, ніж пише. З іншого боку, він демонструє низьку масштабованість із збільшенням навантаження та коефіцієнта запису / читання. PostgreSQL є відносно повільним при низьких рівнях одночасності, але добре розширюється із збільшенням рівня навантаження, забезпечуючи достатню ізоляцію між паралельними доступами, щоб уникнути уповільнення при високих співвідношеннях запису / читання. Він продовжує посилатися на ряд порівнянь продуктивності, тому що ці речі дуже ... чутливі до умов.

Отже, якщо вашим фактором рішення є " що швидше? ", То відповідь "це залежить. Якщо це дійсно має значення, протестуйте заявку проти обох ". І якщо ви дійсно, дійсно хвилюєтеся, ви отримуєте два DBA (той, хто спеціалізується у кожній базі даних) та отримайте їх, щоб відрегулювати сказ із баз даних, а потім виберіть. Дивно, наскільки дорогі хороші DBA; і вони варті кожного цента .

Коли це має значення.

Що, мабуть, ні, тому просто виберіть ту базу даних, яка вам сподобається, і перейдіть з нею; кращі показники можна придбати за допомогою більшої кількості оперативної пам’яті та процесора, а також більш відповідного дизайну баз даних, розумних хитрощів із збереженими процедурами тощо - і все це дешевше і простіше для випадкового веб-сайту X, ніж агонізація над тим, яку вибрати, MySQL або PostgreSQL та спеціальна настройка з дорогих DBA.


Джоел також сказав у тому подкасті, що коментар повернеться, щоб вкусити його, тому що люди скажуть, що MySQL - це лайно - Джоел не міг countповернути назад рядків. Множина анекдоту не є даними. Він сказав :

MySQL - єдина база даних, яку я ніколи не програмував у своїй кар’єрі, яка мала проблеми з цілісністю даних, де ви робите запити і отримуєте відповіді дурниць, які є невірними.

і він також сказав:

Це просто анекдот. І це одна з речей, яка мене насправді засмучує, що стосується блогів чи просто Інтернету взагалі. [...] Існує просто дивна тенденція вносити анекдоти в істини, і я фактично як блогер я починаю почувати себе трохи винним у цьому


15
І ще один момент полягає в тому, що якщо ви використовуєте фреймворк, ви зможете абстрагувати свій код із бази даних, щоб ви могли легко перемикатися.
Дон Джонс

"що швидше?" . Залежить від того, що ви хочете. Якщо ви хочете базуватися на
Sacx

47
Також заслуговує на увагу. MySQL належить Oracle. Тому забороняється ніколи конкурувати з їхніми платними продуктами.
unixman83

15

Просто кураж через багато місяців.

Географічні можливості двох баз даних дуже і дуже різняться. PostgreSQL має виняткове розширення PostGIS. Географічна функціональність MySQL є практично нульовою порівняно.

Якщо у вашій веб-службі є компонент розташування, виберіть PostgreSQL.


14

Я не використовував Django, але я використовував і MySQL, і PostgreSQL. Якщо ви будете використовувати свою базу даних лише як резервну програму для Джанго, це не має великого значення, оскільки це абстрагує більшість відмінностей. PostgreSQL трохи масштабніший, оскільки він не потрапляє в цегляну стіну так швидко, як MySQL, як збільшення розміру даних / кількість клієнтів.

Справжня різниця виявляється, якщо ви працюєте з новою системою. Тоді я рекомендую PostgreSQL знизити руки, оскільки він має набагато більше функцій, які роблять ваш шар БД набагато більш налаштованим, так що ви можете точно налаштувати його під будь-які вимоги, які можуть виникнути.


7

Хоча це трохи застаріло, варто прочитати сторінку MySQL Gotchas . Багато перерахованих там предметів досі є правдивими, наскільки мені відомо.

Я використовую PostgreSQL.


6

Я використовую обидва широко. Мій вибір конкретного проекту зводиться до:

  • Ліцензування - чи збираєтесь ви поширювати свою програму (IANAL)
  • Існуюча інфраструктура та база знань
  • Будь-який спеціальний соус у вас повинен бути.

Під спеціальним соусом я маю на увазі такі речі, як:

  • Проста / дешева реплікація = MySQL
  • Величезні проблеми з набором даних з невеликими результатами = PostgreSQL. Використовуйте розширення мови та використовуйте дуже ефективні операції з даними. (PL / Python, PL / TCL, PL / Perl тощо)
  • Інтерфейс з R статистичними бібліотеками = PostgreSQL PL / R, доступний в debian / ubuntu

3
Postgres також має легке / дешеве тиражування. Це просто не вбудовано , бо на вибір є півдесятка, кожен зі своїми хорошими та поганими частинами. Таким чином, ви можете вибрати одну посередню реплікацію для MySQL або одну з багатьох для PostgreSQL. Твій вибір.
Рандал Шварц

6
PostgreSQL 9.0+ має вбудовану бінарну реплікацію WAL, яку дуже легко встановити.
Шон

1

Ну, я не думаю, що вам слід використовувати інший бренд баз даних у будь-якій минулій розробці (складанні, постановці, продажі), оскільки це повернеться до укусу.

З того, як я це розумію, PostgreSQL - це більш "правильна" реалізація бази даних, тоді як mySQl менш правильний (менш сумісний), але швидший.

Тож якщо ви дуже багато пишете програму CRUD, mySQL - це шлях. Якщо вам потрібні певні функції у вашій базі даних (якщо ви не впевнені, то ви цього не зробите), ви можете заглянути в postgreSQL.


1

Якщо ви пишете програму, яка може бути досить поширена на різних серверах, MySQL має велику вагу над PostgreSQL через портативність. PostgreSQL важко знайти на менш задовільних веб-хостах, хоча їх небагато. Зважаючи на те, PostgreSQL проходить повільніше, ніж MySQL, особливо якщо мова йде про тонку настройку врешті-решт. Загалом, я б сказав, щоб дати короткий проміжок часу на PostgreSQL, таким чином, ви не повністю цього уникаєте, а потім приймете судження.


1
Я погоджуся з вами, що більш низькоякісні веб-хости повинні пропонувати вибір, а не забивати MySQL в наші обличчя. Однак, якщо ви збираєтеся зі спільним хостингом, ви все одно їм дозволені. Отже вибір DBM не має великого значення.
unixman83

0

Дякую. Я використовував Django з MySQL, і це добре. Виберіть свою базу даних за необхідними функціями. Важко порівняти MySQL та Postgres. Краще порівняти Postgress з SQl Server.


0

@WolfmanDragon

PostgreSQL має (крихітну) підтримку об'єктів, але це, по суті, реляційна база даних. З його сторінки про сторінку :

PostgreSQL - потужна реляційна система баз даних з відкритим кодом .


2
a Об'єктно-реляційна система управління базами даних ISA Система управління реляційними базами даних. Якщо ви прочитаєте далі документацію PostgSQL, то виявите, що PostgSql є ORDBMS. Можливо, ви плутаєте ORDBMS з ODBMS, такими як Objectivity / DB.
WolfmanDragon

-1

MySQL є реляційною системою управління базами даних, тоді як PostgreSQL є об'єктно- реляційною системою управління базами даних . PostgreSQL добре підходить для розробників C ++ або Java, оскільки дає нам більше контролю над тим, як запитуються запити. ORDBMS також дає нам об'єкти та визначені користувачем типи. Самі запити SQL набагато ближче до стандартів ISO, ніж MySQL.
Вам потрібні ORDBMS або RDBMS? Це краще відповість на ваше запитання.


Це щось надмірне спрощення; тільки тому, що вам не потрібна ORDBMS, не обов'язково означає, що ви повинні працювати з MySQL. Є й інші більш суттєві відмінності, ні?
Дон Джонс

1
Ви праві. Я намагаюся не звучати як штовхач PostgreSQL. Я не бачу реальної причини використовувати інше, окрім PostgreSQL, якщо дизайн не вимагає справжньої об’єктної бази даних. Я не бачу сенсу в MySQL, крім того, що з ним знайома більшість людей.
WolfmanDragon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.