Тема этого поста была навеяна небольшим спором, разразившимся в ЖЖ. Эта битва будет вечной, как и война добра со злом, светлого и темного, FreeBSD и Linux, и т.п. Можно ломать копья, кричать «кто круче», но спор ни к чему не приведет. Можно делать синтетические тесты, пытаясь определить, кто же быстрее, но один тест скажет, что MySQL быстрее на вставках, а другой – что PostgreSQL лучше масштабируется на многоядерных архитектурах. Найдутся рассказы о том, как всё стало классно, когда мы с MySQL перешли на PostgreSQL, найдутся и обратные истории.
Возвращаясь к теме «спора» с Горным (спора в кавычках, т.к. как такого спора не хотелось, да и не получилось): я не хочу никому сказать, что PostgreSQL – круче или что MySQL – полный отстой. Согласно опыту gornal, проект на PostgreSQL сделать нельзя и поэтому он ужасен, а аргументов вобщем-то других нет, я привел некоторые аргументы в чем PostgreSQL может быть лучше. Но не в этом дело. Совсем не в этом.
Господа, на PostgreSQL можно делать успешные проекты. Это классная, современная СУБД, она не «тормозит», не бойтесь её. Она действительно работает, легко администрируется, устанавливается и т.п. К ней есть куча интереснейших расширений. Если Вы изучали SQL по мануалу MySQL, она Вам ничего не даст, но если Вы читали, например, Дейта или слушали курс по реляционной алгебре и о реляционных СУБД – в PostgreSQL Вы сможете воплотить БД своей мечты и оптимизировать её столько, сколько Вам захочется. Не бойтесь! Попробуйте, может, Вам понравится. Не понравится – есть MySQL, Informix, Oracle, DB2, Firebird и т.п. Но бояться не надо, она не тормозит, честное слово
Всегда будут люди, которым нравятся какие-то продукты, например, ораклоид с пеной у рта будет доказывать, что кроме Oracle нет нормальных СУБД. Gornal скажет, что только на MySQL можно сделать успешный проект. Я люблю PostgreSQL и буду пользоваться им, покуда он будет подходить для тех задач, которые я решаю.
Не верьте тем, кто говорит, что PostgreSQL – отстой, попробуйте сами. Найдите для себя идеальную СУБД, попробуйте её возможности. Я использую PostgreSQL уже около четырех лет, но до сих пор открываю для себя что-то новое, есть специалисты по PostgreSQL, они знают огромное количество еще более интересного.
Напоследок: есть успешные проекты на PostgreSQL в мире веба и около него. Это Skype, Мой Круг и другие. И в сердце Smotri.Com как пламенный мотор трудится PostgreSQL, вся БД обслуживается по сути пятью серверами, один мастер и четыре слейва (Slony). Это самая простая на свете конструкция, её практически не оптимизировали с точки зрения специфики PostgreSQL. Я оцениваю возможности оптимизации в 2-3 раза без изменения логики приложения на сегодня. Дальнейшее возможно с изменением логики (например, шардинг или отгрузка части данных в MemcacheDB или что-то подобное).
Напоследок, российская специфика PostgreSQL:
- PostgresMen
- Фёдор Сигаев и Олег Бартунов – активные разработчики PostgreSQL
- Николай Самохвалов – один из тех, кто сделал Мой Круг, а сегодня активно продвигает PostgreSQL в России
- список можно было бы продолжить…
Работал с постгре, в целом — хорошая СУБД, но реально использовать можно если свой сервак, большой проект (как в посещаемости так и в объёмах данных) и есть разумные девелоперы умеющие оптимизировать SQL. Потому что mysql отлично поддерживается на хостингах, по умолчанию используется myisam без внешних ключей (отсюда и снижение в требованиях к девелоперам), а таблички еле выдерживают до миллиона рядов при интенсивном read/write (хотя it depends..).
Оно все понятно, что не тормозит: опыт использования Постреса Yahoo, например, доказывает это. Вопрос в другом: какие явные преимущества PostgreSQL перед MySQL? В статье фактически сказано лишь о том, что она ничем не хуже MySQL, но на самом же деле она во многих местах и много лучше и близиться по функционалу к таким СУБД как Oracle. От себя могу сказать, например о нормальном языке для хранимых процедур. А какие фишки PostgreSQL, которых нету в MySQL используете Вы?
А какие фишки PostgreSQL, которые есть в MySQL, используете вы?
Коснитесь чего угодно — и сразу будет что обсудить
Первое преимущество PostgreSQL (хотя и спорное) с моей точки зрения – это его внутрення консистентность. Нет каких-то «движков» БД, плагинов в ядре сервера. Вся функциональность, которая есть, она доступна сразу и не надо думать о том, что будет работать, что нет и как. Оно сразу работает, полностью, умеет восстанавливаться и т.п. Это единая версия, протестированная. Стандартные расширения (contrib) живут вместе с основным исходным кодом и проходят то же тестирование от версии к версии. Это очень зрелая БД с большим сроком разработки исходного кода, который считается одним из лучших в мире open-source. Стабильность и корретность работы PostgreSQL уже давно доказана и о ней ходят легенды.
Сранивать список фич можно, но это нудная процедура, можно найти где-нибудь «feature matrix» и сравнить «плюсы» и «минусы». В чем на сегодня MySQL круче – это простота настройки репликации, у PostgreSQL (Slony) это геморройно. Но в PostgreSQL обещают в ближайшее время похожее на MySQL решение.
Полноценное серверное программирование (продуманное и большой выбор языков), расширяемость (новые типы данных), интереснейшие дополнения (например, GiST-индесы). Это то, что нравится лично мне. Интересна еще концепция rules, подмножеством которой является view, а rules позволяют сделать writeable view.
Можно еще дальше продолжать.. Проще говорить о какой-то конкретной возможности и её расписывать подробно.
Работал с MySQL, PostgreSQL, MsSQL (всё веб-проекты). Если комплексно судить по быстродействию, возможностям и интуитивно-понятному интерфейсу прилагаемых утилит, то больше всего понравился PostgreSQL. Оценка дана для тех случаев, когда не хочется нанимать специальных людей-гуру оптимизирующих настройки СУБД и БД. (имеется ввиду, что во всех случаях СУБД настраивали и сопровождали обычные программисты без специализированного образования в области конкретных баз данных) Возможности PostgreSQL, действительно, раскрываются потихоньку. А Горный – дурак. В своё время мне доказывал, что на Java невыгодно что-либо делать, программистов нормальных не бывает, а архитектура WEB-приложений никуда не годится (по сравнению с его любимым PHP).
Горный не дурак. Горный – козёл.
В MySQL в последне время очень не нравится закрытость процесса разработки. Есть очень много нужных патчей от Percona и Google, которых нету в основной ветке, а самостоятельно патчить неудобно.
К слову, кажется вся функциональность этих патчей есть в postgtes (особенно что касается information_schema). Однако как мне кажется postgres сложнее масштабировать, в то время как с MySQL Cluster масштабирование выглядит достаточно легко.
Здравствуйте, Андрей. Интересует, что вы используете для балансировки по slave’ам. pgpool?
Сам тоже использую PostgreSQL, но по-настоящему влюбился в него после того, как попробовал fts. )
Для балансировки по слейвам мы ничего не используем, это происходит на уровне приложения.