Почему существует так много сайтов PHP, которые предоставляют MySQL только в качестве базы данных? - PullRequest
2 голосов
/ 20 февраля 2009

Я баловался с MySQL и лично считаю, что он значительно уступает лучшим RDBMS, таким как Postgres; хотя я признаю, что он прошел долгий путь и улучшился, даже последняя версия, насколько мне известно, даже не поддерживает ограничения CHECK для проверки целостности данных (это позволяет использовать ключевое слово, но ничего с ним не делает).

Как человек, который рассматривает возможность перехода от технологий Microsoft к открытому исходному коду, я потрясен огромным количеством поддерживаемых PHP приложений, которые будут только работать с MySQL в качестве базовой базы данных. Некоторые из этих приложений действительно хороши и могут сэкономить много работы при разработке, но тот факт, что они не абстрагировались в независимость от базы данных, обычно является убийцей для меня и моих технических партнеров.

Так что мне любопытно - я понимаю, почему MySQL так популярен и почему он почти всегда используется с PHP, но почему так много сайтов, поддерживаемых PHP, отказываются быть должным образом разработанными для поддержки других баз данных, но вместо этого вынуждают MySQL, когда есть Есть ли намного лучшие и более "базы данных" варианты там? Я становлюсь все более разочарованным этими приложениями, которые я хочу использовать, но они работают только с MySQL, и я не стану использовать его, потому что лично я считаю Postgres намного лучшей базой данных, и потому что лично я считаю, что ваша база данных должна применять свои собственные ограничения вместо того, чтобы делать это только на уровне кода.

Я понимаю, что MySQL популярен, и это не плохая система, но я ненавижу, когда нахожу отличное приложение, и оно будет работать только тогда, когда база данных MySQL, потому что разработчики использовали специфичные для MySQL модули и / или синтаксис.

Ответы [ 10 ]

5 голосов
/ 20 февраля 2009

Cross-platform support, если говорить о SQL, похоже на утку .

Вы знаете, утка может ходить, летать и плавать - и все это одинаково плохо .

Гораздо лучше придерживаться одной платформы и разработать хорошо оптимизированное приложение, чем пытаться удовлетворить всех, на самом деле удовлетворяя нобобов.

5 голосов
/ 20 февраля 2009

Я уверен, что по той же причине существует так много ASP.NET, которые поддерживают только MSSQL. Это традиционная база данных в сочетании с языком просто по соглашению. Плюс использование / построение независимых от баз данных решений сложно, и это одна из тех вещей, которые «вам не понадобятся», когда большинство других людей следуют этому соглашению. Когда это необходимо, это одна из тех вещей, которые могут быть «повреждены страницей».

Если вам нужно заставить приложение php использовать другую БД, php, вероятно, с открытым исходным кодом, возможно, вы можете сделать работу самостоятельно.

4 голосов
/ 20 февраля 2009

Большинство разработчиков PHP разрабатывают с помощью PHP, потому что он бесплатный, простой в использовании и мощный. Все те же качества, что и в MySQL, вполне естественны.

При этом многие профессиональные разработчики создают слои абстракции данных, которые позволят им легко интегрироваться с другими бэкэндами. Но большинству проектов такие вещи не нужны.

1 голос
/ 20 февраля 2009

LAMP - чрезвычайно распространенный стек разработки. Достаточно часто, что даже люди, которые не используют PHP, знают, что означает LAMP.

Для тех, кто не знает (всех 1 из вас), LAMP чаще всего обозначает L inux, A pache, M ySQL и P HP.

1 голос
/ 20 февраля 2009

Это в основном логичный конечный результат того факта, что почти все службы общего хостинга с поддержкой PHP предлагают MySQL и только MySQL. Дополнительная работа по абстрагированию базы данных часто считается ненужной, когда почти никто не использует приложение , нуждающееся в .

0 голосов
/ 21 февраля 2009

Мы хотим наш торт и едим его вместе с этим вопросом. Во-первых, мы хотим абстрагирование базы данных. Затем нам нужны ограничения CHECK в СУБД, которые мы решили использовать за этой абстракцией.

А? Это означает, что мы будем пренебрегать проверкой данных в самом PHP, и все будет сломано при использовании баз данных без проверок. Либо так, либо мы реализуем проверки в PHP для поддержки абстрактной базы данных без проверок, выполняя удвоенную работу.

Я думаю, что полная абстракция базы данных не стоит усилий, и в основном это решение для поиска проблемы.

0 голосов
/ 20 февраля 2009

IMO, большая проблема с таким количеством сайтов, работающих только на MySQL, заключается в том, что MySQL не поддерживает половину функций «реальной» базы данных, поэтому, если вам нужна целостность данных, вы в значительной степени облажались и должны написать свой собственный программное обеспечение вместо того, чтобы использовать преимущества существующих решений или поставить под угрозу ваше приложение и не проводить никаких реальных проверок целостности на уровне базы данных. Вы оказались между камнем и наковальней.

0 голосов
/ 20 февраля 2009

Вы правы, PostgreSQL гораздо лучше поддерживает SQL и другие расширенные функции, поэтому есть очень хороший пример того, почему PostgreSQL превосходит MySQL.

Тем не менее, MySQL настолько прост в установке и управлении для тех, кто только начинает, что он получил широкое распространение по сравнению с PostgreSQL. Простые задачи, такие как настройка логина и предоставление ему определенных привилегий, очень запутаны на сервере PostgreSQL, по сравнению с MySQL.

Кроме того, несколько лет назад MySQL предлагал собственные двоичные файлы для Windows, а PostgreSQL - нет. Вы можете заставить его работать под Cygwin, но это вряд ли удовлетворит для настоящего разработчика Windows. К тому времени, когда PostgreSQL действительно поддерживал Windows, MySQL уже занимал лидирующие позиции по доле рынка и узнаваемости.

Кстати: http://www.postgresql.org/support/professional_hosting_northamerica

0 голосов
/ 20 февраля 2009

В прежние времена существовала огромная разница в простоте использования. MySQL был прост в использовании и очень быстр для простой задачи. В то время он не предоставлял полный ACID, ни триггеры, ни подвыборы, ни процедуры. С другой стороны, у вас был PostgreSQL (тогда он назывался Postgres), который был намного медленнее, сложнее в установке и обслуживании, но предоставлял полную мощность реальной СУБД. Дело в том, что веб-приложениям на самом деле не требовалась полная мощность СУБД, поэтому MySQL приобрел огромную популярность, в то время как PostgreSQL использовали немногие.

Ах, еще одна вещь: начиная с PHP5 SQLite поставляется встроенным. Поэтому я ожидаю, что довольно скоро многие новые PHP-приложения, которым на самом деле не нужна полноценная СУБД, будут использовать SQLite, а не MySQL.

0 голосов
/ 20 февраля 2009

Я думаю, что ключевым моментом является именно то, что вы сказали, «это почти всегда используется с PHP». Разрабатывая для MySQL, они максимизируют свою целевую аудиторию. Да, было бы идеально, если бы они разработали его, чтобы иметь возможность работать с несколькими базами данных, но это может быть довольно много дополнительной работы. Многие из этих проектов просто выросли из чьего-то личного проекта, который, вероятно, изначально не был разработан для совместимости с несколькими движками. Как только они продвинулись достаточно далеко, это начинает превращаться в основную работу по переписыванию кода для поддержки нескольких систем баз данных, и обычно есть другие функции / исправления, которые их пользователи предпочли бы иметь.

Я также очень предпочитаю pgsql, но я думаю, что если вы планируете использовать PHP-приложения других людей (форумы, блоги и т. Д.), То вам просто нужно запустить MySQL для их поддержки. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...