Исходя из вашего опыта, какую базу данных сложнее масштабировать? MySQL или Postgres? Я знаю, что MySQL имеет несколько готовых функций масштабирования / кластеризации, но с Postgres нет ни одной из стандартных функций. CMIIW.
РЕДАКТИРОВАТЬ:
Извините за путаницу, мой вопрос касается масштабирования (горизонтального масштабирования), то есть кластеризации, сегментирования и т.д. Я знаю, что оба варианта могут масштабироваться по горизонтали, но какой из них проще реализовать?
Спасибо, что поделились.
Хотя этот вопрос, кажется, идет вразрез с принципом сайта «Не задавайте субъективных или аргументированных вопросов», я не могу удержаться от ответа.
Это зависит.
Вы говорите о конфигурации с одним сервером, которая масштабируется до очень больших наборов данных?
Оба могут работать в этой ситуации в зависимости от набора данных, но ни один из них, вероятно, не будет работать очень хорошо без пользовательской конфигурации и надлежащего планирования. По моему опыту, работая с большими наборами данных с большим количеством операций записи, я обнаружил, что Postgres имеет меньше условий, вызывающих блокировку, и общая производительность была лучше.
Вы говорите о конфигурациях с несколькими серверами, которые масштабируются до множества подчиненных устройств для многих читателей?
Исторически MySQL считался лидером в этой области, поскольку в него была встроена асинхронная репликация. Это уже не тот случай, если вы не против использования новейшего программного обеспечения БД; Postgres теперь также имеет это встроенное в выпуске 9.0. Мой опыт репликации MySQL на данный момент был более чем достаточным.
Вы говорите о многосерверных конфигурациях, которые можно масштабировать до многих мастеров для многих писателей?
Это, безусловно, самый сложный способ масштабирования любого продукта, и во многих случаях его можно избежать, используя серверы аварийного переключения. Если вам действительно нужно горизонтальное масштабирование для обеспечения высокой доступности основных серверов, дополнений / альтернативных установок не избежать. Для MySQL существует MySQL Cluster NDB, который имеет вариант с открытым исходным кодом или коммерческая версия. Для Postgres есть много дополнения которые могут дать вам различные уровни высокой доступности и пула
В конечном итоге масштабирование вашей базы данных обычно сводится к планированию дизайна. Если ваше приложение разработано с учетом масштабирования, то система баз данных, которая лучше всего подходит вашим разработчикам, часто является лучшим выбором.
PostGre имеет больше функций и параметров конфигурации.
Таким образом, вероятно, его сложнее масштабировать, но также вероятно, что он будет масштабироваться лучше, то есть при правильной настройке.
В общем, MySQL, вероятно, все еще будет быстрее, с другой стороны, реальный вопрос заключается в том, насколько вы цените целостность данных и какие функции вам нужны, и хотите ли вы зависеть от Oracle (теперь владеет MySQL)?
Кроме того, возникают вопросы о лицензировании, например, действительно ли вы хотите купить лицензию MySQL только потому, что не хотите публиковать свое приложение под GPL?
С PostGreSQL это не проблема, что является очень большим плюсом.
MySQL НАМНОГО прост в масштабировании, кластеризация и репликация являются собственными и очень простыми в управлении и внедрении (даже для тех, кто действительно не разбирается в базах данных).
PostgreSQL на данный момент поддерживает только базовую репликацию и ничего официального о кластеризации (технически вы можете использовать сторонние инструменты, но управлять этим становится адом).
Я бы никогда не выбрал Postgresql, если планирую масштабирование.
Изменить: очень старый ответ взять с недоверием, поскольку postgres и mysql сильно изменились с тех пор, как на него был дан ответ.