Postgres vs Mysql - есть ли свежие тесты?

svetasmirnova

маленький монстрик
MiksIr
>Репликация кластера на другой кластер? Бррр... это тут причем?
...
>Особо в такой специфичной штуке, как мастер-мастер кластер...

Мастер-мастер репликация обычных серверов поддерживается.

Krishna
>Тогда может быть тебя нужно спрашивать о преимуществах MySQL над Postgres? (если такие есть)

Они разные. СУБД в смысле. Если серьёзно говорить о преимуществах и недостатках, надо приводить данные типа: есть такая-то задача, так-то её решает MySQL, так-то PostgreSQL. Боюсь у меня нет новых тестов где решается именно одна задача при помощи каждой из СУБД.

-~{}~ 26.09.07 14:42:

MiksIr
Репликация, это копирование данных между репликами, которые находятся на разных нодах кластера. Используется обычно или асинхронная мастер-слейв репликация, или синхронная мастер-мастер репликация. Асинхронная мастер-слейв в мускуле есть очень давно, прелести же решения mysql cluster именно в том, что это синхронная мультимастер репликация.
Где я тут неправ?
Аааа, вот оно что. Да, в общем прав.
 

Krishna

Продался Java
svetasmirnova
Я понимаю, что они разные. Будь они одинаковые - это был бы 1 и тот же проект. И тем не менее, несмотря на то, что они разные, обе существуют и занимают приличную долю рынка СУБД для веб.
Видимо, и у той и у другой СУБД есть свои достоинства для серьезных веб-приложений. Если бы было иначе - одна из них покинула бы рынок, как например FireBird, которую в здравом уме для веб практически никто не использует в настоящее время.
Однако, при перечисленных выше преимуществах Postgres мы видим, что MySQL используют такие серьзеные проекты как Wikipedia, Mamba и т.п.

Я пытаюсь понять почему. Любопытство не праздное, я собираюсь заниматься стартапами и хочу понимать в каких случаях выбор Postgres или MySQL оптимален.
То есть, хотелось бы услышать хотя бы примеры проектов, для которых стоит выбрать MySQL и почему :)
Это если не сводить всё к банальному "какая СУБД круче всех".

-~{}~ 26.09.07 15:05:

З.Ы.
Просто с Postgres мне пока почти не приходилось иметь дела, по-этому собственного мнения у меня еще нет.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krishna
На встрече с московской группой юзеров MySQL Константин Осипов сказал, что основная масса багов в ветке 5.х уже исправлена и что он рекомендует тем, кто еще пользует 4.х переходить сразу на 5.1, по выходу релиза.
А что тебе мешает попробовать Postgres, в котором эти фичи давно реализованы и стабильны, раз ресь идёт о разработке новых проектов? ;)

Я правильно понял, что по твоему MySQL не имеет никаких преимуществ перед Postgres? )
Почему --- имеет. В MySQL + MyISAM можно хранить много не слишком ценной информации только-для-чтения и быстро её оттуда доставать. У InnoDB архитектура близка к PostgreSQL, хотя и есть важные отличия, в некоторых проектах это может существенно качнуть чашу весов в одну или в другую сторону. А вот во всём, что выше этого уровня "storage engine", MySQL до PostgreSQL ещё далековато.

В таком случае, возникает вопрос - почему столь много крупнейших проектов рунета и не только используют MySQL, а не Postgres?
Рамблер для тебя достаточно крупный проект? А Skype?

А вообще, опять вспоминая своё выступление года три назад, отвечу воп'осом на воп'ос: "А поцчему таки Выньдовс популярнее *nix-like операционных систем"?
 

Krishna

Продался Java
А вообще, опять вспоминая своё выступление года три назад, отвечу воп'осом на воп'ос: "А поцчему таки Выньдовс популярнее *nix-like операционных систем"?
Это крайне неудачный пример. В качестве десктопного решения и игровой платформы у Windows масса преимуществ перед nix (на сегодняшний момент) такие как DirectX, Plug'and'Play и так далее. Windows и Nix никак нельзя назвать даже схожими решениями, у них совсем разная ниша. Впрочем, не будем разводить флейм и оффтоп на эту тему.

Мне кажется, MyISAM не так уж разительно отличается скоростью чтения от InnoDB, чтобы становиться важнейшим фактором.
А что тебе мешает попробовать Postgres, в котором эти фичи давно реализованы и стабильны, раз ресь идёт о разработке новых проектов?
Прежде чем что-то "пробовать" на живом проекте неплохо бы иметь серьезные причины для этого :) Я и пытаюсь узнать есть ли такие причины.

Мне таки никто пока не ответил, почему например та же Википедия могла предпочесть MySQL постгресу :)

Получается, что Постгрес весь из себя такой замечательный, но почему-то его пользователи в меньшинстве. Парадокс? :)
Я в такие парадоксы не верю, у них всегда бывают рациональные объяснения.

-~{}~ 26.09.07 16:34:

А что тебе мешает попробовать Postgres
Добавлю сюда еще то, что как это часто бывает - MySQL мне хорошо знаком, и мне нужны веские доводы для перехода на что-то другое (но если они будут - я готов :) )
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krishna
Мне кажется, MyISAM не так уж разительно отличается скоростью чтения от InnoDB, чтобы становиться важнейшим фактором.
Когда кажется, креститься нужно. Скорость чтения там в общем случае выше хотя бы за счёт более компактного формата данных на диске (сконверти более-менее солидных размеров базу из одного формата в другой и посмотри на изменение размера).

Прежде чем что-то "пробовать" на живом проекте неплохо бы иметь серьезные причины для этого :) Я и пытаюсь узнать есть ли такие причины.
Выпиши в столбик причины перехода с MySQL 4 на MySQL 5 для начала. Потом я этот столбик дополню...

Мне таки никто пока не ответил, почему например та же Википедия могла предпочесть MySQL постгресу :)
Патамушта в Wikipedia работает специально обученный дядя, получающий зряплату от ООО "Мыскль". Если твой проект будет уровня Википедии, то ООО "Мыскль" тоже пришлёт к тебе специального дядю, только чтобы ты с MySQL не слез.

Интуитивно понятно, что если одного из твоих сотрудников зовут "Света Смирнова" или там "Петя Зайцев", то MySQL --- лучший выбор.

Порт Mediawiki под PostgreSQL, впрочем, существует. И по отзывам пользователей, работает не медленнее.


Получается, что Постгрес весь из себя такой замечательный, но почему-то его пользователи в меньшинстве. Парадокс? :)
Я в такие парадоксы не верю, у них всегда бывают рациональные объяснения.
Я таки опять предлагаю вернуться к АНАЛогии про "Выньдовс vs *nix-like"...
 

algo

To the stars!
Krishna: твои проблемы решит Оракл.

P.S упс, я похоже не в тот топик влез... 8() Ухожу, ухожу...
 

Krishna

Продался Java
Sad Spirit

Всё ясно. Единственное, что мешает Постгресу захватить мир - это Света Смирнова. А так бы он ухх..
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krishna
Всё ясно. Единственное, что мешает Постгресу захватить мир - это Света Смирнова. А так бы он ухх..
Ну так и надо было начинать тему: я юзаю MySQL, никуда с него слезать не собираюсь, докажите мне что круче него только яйцы. Я б в такую тему писать и не стал.

А теперь получается, что ты банально слил, начал про то, что крупные проекты не юзают Postgres, тебе привели примеры (ещё я, кстати, sourceforge забыл). Начал про конкретно wikipedia, тебе объяснили, что им слезать банально незачем, т.к. у них есть человек, который может из MySQL вылепить конфетку, а найдут ли они --- бесплатно! --- такого же для другой базы неизвестно. Как ещё извернёшься?

Тема про *nix-like vs. windows, кстати, не такой уж и офтопик, т.к. родной порт PostgreSQL под windows появился только с версией 8.0 в 2005 году, а большая часть разработчиков использует в кач-ве десктопа именно windows. А ты-то небось и до сих пор думаешь, что Postgres под винду через жо... эээ... cygwin ставится.
 

MiksIr

miksir@home:~$
Кстати, медиавики не тока может работать с постгресом, но и умеет работать с расширением полнотекстового поиска уже (не дожидаясь включения в ядро).

-~{}~ 26.09.07 19:22:

PS: Мой круг использует постгрес
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: MiksIr
PS: Мой круг использует постгрес
Ага, и поэтому --- по аналогии с "Гугль использует MySQL" --- мы можем сказать: "Яндекс использует Postgres". :)
 

MiksIr

miksir@home:~$
Яндекс, кстати, сказал, что постгрес у них тока в одном месте... как раз в круге ;) Все остальное - мускуль. Ну, конечно, не в поиске - там свои БД.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: MiksIr
Яндекс, кстати, сказал, что постгрес у них тока в одном месте... как раз в круге ;) Все остальное - мускуль.
Всё ли? Мне ещё послышалось слово "Oracle"...
 

MiksIr

miksir@home:~$
Мдя? Не слышал... ну, даже если и проскакивало, то, наверно, в том же объеме, что и Постгрес ;) Но, в общем, тут тема не про Оракл ;)
 

Krishna

Продался Java
Sad Spirit
Значит, для начала, я не собирался (и не собираюсь) разводить здесь holy war. Это занятие для пионеров. Я никому не буду ничего доказывать - это не в моих интересах. Я хочу получить информацию полезную для себя, в частности определиться с тем, какую СУБД стоит использовать в тех или иных случаях.
А не меряться чужими пиписьками.

так и надо было начинать тему: я юзаю MySQL, никуда с него слезать не собираюсь, докажите мне что круче него только яйцы.
Подобие SQL я впервые начал применять в 1С. Потом была трешка MySQL, в качестве начинающего веб-программиста, потом немного был Oracle (не сложную CMS переводил на Оракл с Мускула, потому как основная часть проекта была разработана на Java+Oracle). Потом писали демоверсию системы обмена отчетами под MsSQL (гос. тендер - такие условия). Потом на своем проекте и паре леваков опять был MySQL, 4ый и 5ый.
Потом в качестве ведущего человека-оркестра был FireBird, с которым уже пришлось разбираться несколько плотнее, чем Ораклом и MsSQL и от которого меня тошнит до сих пор.
Это не понты, это чтобы отпали такие дурацкие утверждения. Хотя, не спорю, мускул мне знаком лучше остальных и даже привычен. Но сменить его в качестве основной СУБД на что-то более достойное и не менее доступное - плёвое дело, был бы повод.

А теперь получается, что ты банально слил,
Если ты достаточно навоевался - можешь деревянную сабельку отложить и передохнуть. Я тут ни с кем не "впрягался" и "сливать" посему мне нечего.


тебе привели примеры (ещё я, кстати, sourceforge забыл).
Про примеры - Рамблер хоть и достаточно крупный проект, но приводить этот проект-неудачник в качестве success story просто смешно. Если ты был достаточно долго пользователем Интернета, то знаешь, что первое место Яндексу он просто подарил. Не даром на его примере пишут про провальные проекты. Мойкруг - мне полгода назад говорили, что там есть вакансия на ведущего, и первая задача - перевести с Постгреса на MySQL. Как мне сказали по причине проблем с масштабированием. Что на данный момент и как там на самом деле - мне щас неведомо. Такие вот дела. Единственный удачный пример - Skype, но задачи у него специфические, не веб. sourceforge заколебал своими тормозами.
Ну это я уже так, рефлекторно начинаю таки втягиваться в holy war.

начал про то, что крупные проекты не юзают Postgres,
Ведь если что, это утверждение в запале праведного гнева придумал ты - я этого не говорил ни разу.

Начал про конкретно wikipedia, тебе объяснили, что им слезать банально незачем, т.к. у них есть человек, который может из MySQL вылепить конфетку, а найдут ли они --- бесплатно! --- такого же для другой базы неизвестно. Как ещё извернёшься?
Интуитивно понятно, что если одного из твоих сотрудников зовут "Света Смирнова" или там "Петя Зайцев", то MySQL --- лучший выбор.
А вот это вообще не иначе, как святая простота и наивность.
Как ты думаешь, каким образом они будут лепить конфетку, если изначально MySQL (как надо полагать судя по твоему фразеологизму) дерьмо? MySQL AB вносит серьезные изменения в ветку разработку только для таких крупных контор, как например SAP. При том, что большая часть крупных пользователей MySQL вообще решают свои проблемы самостоятельно, вплоть до написания собственных storage.

А "волшебников" умеющих кастовать для мускула пятикратный левел ап в природе не бывает. Если ты не был на сегодняшнем семинаре с Зайцевым - могу тебе практически дословно (по мере возможностей моей памяти) передать его слова, что в 99% случаев те решения, которые они предлагают своим клиентам можно заполучить тщательным изучением Интернета по проблемному вопросу. Так что аргумент крайне слабый.

По-этому, в процессе сравнения объяснять численное превосходство MySQL исключительно кознями MySQL AB - просто нелепо. И мой вопрос почему Постгрес столь малопопулярен в веб-проектах, по сравнению с MySQL, если он во всём круче - совершенно закономерен.
Я хочу понять причины этого явления, потому что без понимания этих причин я не могу принять факт, что "Постгрес во всём круче, просто ему не повезло!".

Тема про *nix-like vs. windows, кстати, не такой уж и офтопик, т.к. родной порт PostgreSQL под windows появился только с версией 8.0 в 2005 году, а большая часть разработчиков использует в кач-ве десктопа именно windows. А ты-то небось и до сих пор думаешь, что Postgres под винду через жо... эээ... cygwin ставится.
А вот это уже другое дело. Данный факт (сложность эксплуатация под виндой) мне был не известен и является серьёзным аргументом в пользу непопулярности Постгреса среди основной массы разработчиков, а следовательно дефицита специалистов.
Наличие на рынке специалистов по той, или иной технологии - серьёзный критерий для бизнеса при их (технологий) выборе.

-~{}~ 27.09.07 01:16:

Кстати, могу сообщить следущее, что на встрече с Зайцевым я задал ему прямой вопрос - какие преимущества у MySQL есть над Postgres?
Он назвал только возможность выбора storages.
Правда, в последствии при разговоре о InnoDB он упомянул о каком-то случае его превосходства над storage Postgres, но я уже забыл подробности. Что-то касательно версионности индексов, кажется.
 

Alexandre

PHPПенсионер
Мне ещё послышалось слово "Oracle"...
Яндексу еще недавно требовался ораклист, значит не спроста ;)

почему Постгрес столь малопопулярен в веб-проектах, по сравнению с MySQL, если он во всём круче
А мне кажется - все закономерно, причин несколько и вот мои рассуждения:
- MySQL вышел раньше и поэтому завоевал большую популярность...
- Большинство WEB проектов просто не нуждаются в тех особенностях постргреса, которые отсутствуют у мускуля.
- Постгрес - сложнее в освоении, соответственно спецов меньше.

Что нужно большинству мелких и средних WEB проектов: быстрая и простая БД, расчитанная на программиста с год опыта (посмотрите кто требуется на рынке труда?)... Мускуль - полностью отвечает этим требованиям. Знаю - многие проекты еще сидят на 3.23 и им - этих возможностей вполне достаточно. У мускуля - есть уже раскрученный годами бренд ;)

Что до возможностей, то хотел сегодня на мускуле сделать простой запрос
Код:
UPDATE table SET 'count' = (SELECT count(*) FROM table WHERE  parent_id=xxx)
WHERE id=xxx
на постгресе такая фишка прокатывала
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krishna
Это не понты, это чтобы отпали такие дурацкие утверждения. Хотя, не спорю, мускул мне знаком лучше остальных и даже привычен. Но сменить его в качестве основной СУБД на что-то более достойное и не менее доступное - плёвое дело, был бы повод.

Если ты достаточно навоевался - можешь деревянную сабельку отложить и передохнуть. Я тут ни с кем не "впрягался" и "сливать" посему мне нечего.
ОК, принято. Просто фраза
Единственное, что мешает Постгресу захватить мир - это Света Смирнова.
не настраивает на рабочий лад как-то.


Про примеры - Рамблер хоть и достаточно крупный проект, но приводить этот проект-неудачник в качестве success story просто смешно. Если ты был достаточно долго пользователем Интернета, то знаешь, что первое место Яндексу он просто подарил. Не даром на его примере пишут про провальные проекты.
Проглядел, по-моему ключевая мысль данной книги в том, что Ашманову недодали денег. Учитывая, что мне рассказывали про Ашманова и его сотрудников, думаю, товарищ недостаточно подробно раскрывает свой вклад в провал Рамблера.

Но в любом случае, сложно отрицать что Рамблер всё равно один из, цитирую, "крупнейших проектов Рунета"? Про успешность-то речь не шла?

Мойкруг - мне полгода назад говорили, что там есть вакансия на ведущего, и первая задача - перевести с Постгреса на MySQL. Как мне сказали по причине проблем с масштабированием.
Ты открыл мне глаза --- оказывается Котеров меня летом зазывал переводить МойКруг на MySQL! И сейчас они разработчика ищут не иначе как для того же!

В общем, я бы на твоём месте не очень в будущем доверял автору этой сплетни.

А вот это вообще не иначе, как святая простота и наивность.
Как ты думаешь, каким образом они будут лепить конфетку, если изначально MySQL (как надо полагать судя по твоему фразеологизму) дерьмо?
Про дерьмо-то на самом деле речи не шло, я же выше сказал, что движок InnoDB очень похож на используемый в PostgreSQL, речь о том, что если в конторе есть гуру, то смысла менять работающее решение нет, потому что гуру из него всё что можно выжмет. Вот если гуру в нужный момент нету, то может возникнуть ситуация как с feedlounge.

MySQL AB вносит серьезные изменения в ветку разработку только для таких крупных контор, как например SAP. При том, что большая часть крупных пользователей MySQL вообще решают свои проблемы самостоятельно, вплоть до написания собственных storage.
Ну крупные конторы и с Postgres'ом решают проблемы самостоятельно, вот Sony решила деньги, которые раньше уходили на лицензии Oracle, отдать на доработку Postgres'а, чтобы он понимал Oracle'овый синтаксис (EnterpriseDB).

А "волшебников" умеющих кастовать для мускула пятикратный левел ап в природе не бывает. Если ты не был на сегодняшнем семинаре с Зайцевым - могу тебе практически дословно (по мере возможностей моей памяти) передать его слова, что в 99% случаев те решения, которые они предлагают своим клиентам можно заполучить тщательным изучением Интернета по проблемному вопросу. Так что аргумент крайне слабый.
Полностю с Петром согласен. Но при этом также абсолютно уверен, что если щас дать настроить MySQL Зайцеву и мне, то настроенная им версия будет работать быстрее в несколько раз. :)

По-этому, в процессе сравнения объяснять численное превосходство MySQL исключительно кознями MySQL AB - просто нелепо.
Причём здесь "козни"? По-моему ситуация с wikipedia вполне нормальная, wikipedia имеет нахаляву человека, который им всё настраивает, а MySQL --- неслабый пиар за относительно мелкий прайс.

И мой вопрос почему Постгрес столь малопопулярен в веб-проектах, по сравнению с MySQL, если он во всём круче - совершенно закономерен.
Я хочу понять причины этого явления, потому что без понимания этих причин я не могу принять факт, что "Постгрес во всём круче, просто ему не повезло!".
Давай определимся: мы хотим сравнить современные версии (о чём шла речь в первом сообщении) или вернуться на много лет назад? А то вот Яндексов на highload спросили, используют ли они Postgres, ответ был примерно "ну мы сравнивали MySQL и PostgreSQL году в 2000, тогда MySQL нам подошёл больше". Естественно переползать им сейчас смысла нету, если всё более-менее работает.

Кстати, могу сообщить следущее, что на встрече с Зайцевым я задал ему прямой вопрос - какие преимущества у MySQL есть над Postgres?
Он назвал только возможность выбора storages.
Ну вот, если даже Зайцев даёт такой ответ...

Правда, в последствии при разговоре о InnoDB он упомянул о каком-то случае его превосходства над storage Postgres, но я уже забыл подробности. Что-то касательно версионности индексов, кажется.
InnoDB хранит таблицу упорядоченной по индексу, в Postgres'е это независимые объекты. Из-за этого в InnoDB есть такая полезная штука как next-key locking, а также возможность сканирования по первичному ключу в любимом запросе select count(*). Может ещё что-то...
 

svetasmirnova

маленький монстрик
Alexandre
>на постгресе такая фишка прокатывала
Подзапросы работают начиная с версии 4.1 У тебя синтаксические ошибки

-~{}~ 27.09.07 11:12:

Sad Spirit
> Патамушта в Wikipedia работает специально обученный дядя, получающий зряплату от ООО "Мыскль". Если твой проект будет уровня Википедии, то ООО "Мыскль" тоже пришлёт к тебе специального дядю, только чтобы ты с MySQL не слез.

Ну вообще-то "специального дядю" ООО "Мыскль" переманил из Wikipedia, а не наоборот ;)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Разверну-ка я мысль из первого своего сообщения в этой теме.

Вот люди задают вопрос "что выбрать --- апгрейд MySQL или переход на PostgreSQL". На самом деле вопрос содержит в себе пару неявных допущений: факт существования такой СУБД MySQL и предполагаемую простоту "апгрейда" относительно "перехода".

Как мне кажется, никакой "СУБД MySQL" в реальности уже не существует: существует общая клиентская библиотека, близкие (но не одинаковые!) диалекты SQL для доступа к данным, лежащим в разнообразных хранилищах (storage engine), некоторые общие надстройки типа репликации для этих хранилищ.

А правильный переход с MySQL + MyISAM на MySQL + InnoDB может оказаться гораздо более сложным, чем с MySQL + InnoDB на PostgreSQL, просто потому что InnoDB и хранилище PostgreSQL значительно более похожи, нежели MyISAM и InnoDB.

При этом переход с одного хранилища на другое и переработка логики приложения может вам понадобиться вне зависимости от ваших личных предпочтений: напомню, что раньше в MySQL были ещё такие storage engines как Gemini и BDB. Но по разным --- не всегда техническим --- причинам их там больше нет, а счастливым пользователям пришлось мигрировать. И есть у меня такое предчувствие, что как только Falcon станет относительно стабильным, InnoDB начнут потихоньку (или не очень потихоньку) задвигать. Ибо кому охота зависеть от доброй воли конкурента (а InnoDB принадлежит Oracle'у), особенно если раньше этот конкурент особо в доброй воле замечен не был...

Не говоря уже о том, что поведение MySQL-как-обработчика-языка-SQL от версии к версии меняется весьма сильно. Вот включили в 5 версии по умолчанию strict mode, так куче приложений от этого поплохело. А ведь в конце концов останется только этот strict mode, ибо до тех пор, пока MySQL будет признавать последовательность символов 0000-00-00 датой, на него будут показывать пальцем и смеяться.

В этом смысле переход с версии на версию PostgreSQL тих и спокоен: не надо прыгать с одного storage engine на другой, не надо лихорадочно переписывать кривой SQL, который база с аппетитом кушала раньше.

Что касается сравнений по фичам, если подойти к вопросу честно и делать не таблицу из двух колонок "MySQL, PostgreSQL", а из гораздо большего их количества "MySQL + MyISAM, MySQL + InnoDB, MySQL + Falcon, ..., PostgreSQL", то последняя колонка по фичам будет сильно лучше. Просто потому что в первом случае мы будем сравнивать абстрактный сферический MySQL в вакууме, который одновременно умеет транзакции, внешние ключи, полнотекстовый поиск и rtree индексы и реально данный нам в ощущениях PostgreSQL, который действительно одновременно умеет всё перечисленное.

По скорости есть два замечания: как было отмечено выше, чудес не бывает и скорости на стандартных задачах (есть, конечно, и нестандартные задачи, но их мало) в разы различаться не будут (при условии правильной настройки, естественно!), что и показывают тесты с последними версиями СУБД. Они же, впрочем, показывают лучшую масштабируемость PostgreSQL. Кроме того, крупные сайты щас стараются не выставлять мордой в интернет динамические страницы с информацией непосредственно из базы, а пользуются всеразличными memcache, nginx и т.п.
 
Сверху