Какая версия и как использовать бесплатную СУБД MySQL в коммерческих проектах?

В настоящее время MySQL Community Edition Server 5.5.16 находится под GPL. Это означает, что он может быть использован в проектах, которые также являются проектами с открытым исходным кодом. Бюджет нашего проекта очень ограничен, и нам нужно найти решение для использования бесплатной версии MySQL в коммерческом проекте. У меня есть несколько вопросов:

1) Какая ранняя версия MySQL была бы надежной и без ошибок для использования в коммерческих проектах?

2) Об использовании текущего сервера MySQL Community Edition Server 5.5.16 с GPL: если проектная архитектура программного обеспечения разработана с поддержкой подключения многих СУБД, то законно ли иметь проектное программное обеспечение под лицензией не-GPL? Я имею в виду, предположим, что программное обеспечение разработано с поддержкой нескольких СУБД, а программное обеспечение поставлено под коммерческую лицензию. Если клиент решает использовать версию MySQL GPL, нарушает ли он лицензию GPL?

3) Я слышал некоторые негативные ответы о том, что PostgreSQL глючит и не оптимизирован для модификации и хранения больших наборов данных. Единственная причина, по которой он все еще используется в некоторых небольших коммерческих проектах, заключается в том, что он бесплатный. Что вы думаете об этом?

ОБНОВЛЕНИЕ: также мы планируем использовать несколько серверов, поэтому репликация ведущий-ведомый также необходима.

ОБНОВЛЕНИЕ 2: Я слышал об одном случае: было использовано ~1 ГБ PostgreSQL DB. База данных активно использовалась с обновлениями, изменяя почти все данные. Проблема заключалась в том, что база данных постоянно увеличивалась примерно в десять раз каждые 2,5 месяца. Они использовали PostgreSQL 8.3 + CentOS. Также был использован AUTOVACUUM. После сброса базы данных, уничтожения старой, воссоздания базы данных и импорта они смогли уменьшить ее размер ~ в 10 раз. Существующие сообщения ( здесь и здесь) показывают, что эта проблема является относительной даже в последней версии PostgreSQL 9. Я бы не назвал это нормальным поведением, и такой рост размера в нашем случае неприемлем.

ОБНОВЛЕНИЕ3: спасибо всем за ответы. Все ответы относительны и полезны для вопроса.

5 ответов

Решение

Другие авторы упоминали, что в основном ссылки на mysql означают, что вы лицензировали GPL проекта или какую-то другую лицензию ОС, для которой Oracle / MySQL делает исключение, или она коммерческая, и вы должны им деньги. Тем не мение...

Хорошо, PostgreSQL хранит свои данные в хранилище данных, которое поддерживает MVCC, управление несколькими версиями параллелизма. На простом уровне это означает, что каждая транзакция получает моментальный снимок базы данных, который связан с момента, когда эта транзакция начинается, пока она не завершится или не откатится. Это означает, что в любой момент времени у одного кортежа может быть несколько живых версий в базе данных. Из-за способа, которым MVCC реализован в pgsql, эти две версии существуют одновременно в хранилище данных. В конце концов, все, кроме самых новых, будут старше, чем самая старая запущенная транзакция, и могут быть восстановлены и повторно использованы БД. Процесс, который восстанавливает эти старые мертвые кортежи, называется пылесосом.

В 8.3 старые мертвые блоки отслеживались с помощью сегмента общей памяти, называемого картой свободного пространства. Если либо вакуумы недостаточно агрессивны, ИЛИ если на карте свободного пространства не хватает места, то база данных может создавать мертвые кортежи быстрее, чем она может восстанавливать их (вакуум) или запоминать их (карта свободного пространства).

В версии 8.4 карта свободного пространства становится необслуживаемой для пользователя, поскольку она хранится на жестком диске в файлах.fsm. однако проблема с вакуумом все еще существует. autovacuum настроен не слишком агрессивно, чтобы не убивать что-то вроде ноутбука или небольшого сервера при установке. На больших машинах с большим количеством возможностей ввода-вывода, таких как сервер с 16 твердотельными накопителями в массиве RAID-10, вы можете повысить агрессивность автоочистки, и она может справиться с довольно сумасшедшими скоростями передачи. Вы можете получать от 1000 до 3000 транзакций в секунду в течение длительных периодов времени на сервере с достаточно агрессивным автоматическим вакуумом и быстрым аппаратным RAID-контроллером с большим количеством дисков. Число TPS, приближающееся к 10000, возможно с более дорогими и большими серверами. Все это при обслуживании сотен соединений.

tl; dr: 8.3 старый, и у def были некоторые проблемы. 8.4 и выше имеют лучшее восстановление свободного пространства, но все еще нуждаются в агрессивном автоваке, чтобы не отставать от большой нагрузки.

2) Об использовании текущего сервера MySQL Community Edition Server 5.5.16 с GPL: если проектная архитектура программного обеспечения разработана с поддержкой подключения многих СУБД, то законно ли иметь проектное программное обеспечение под лицензией не-GPL? Я имею в виду, предположим, что программное обеспечение разработано с поддержкой нескольких СУБД, а программное обеспечение поставлено под коммерческую лицензию. Если клиент решает использовать версию MySQL GPL, нарушает ли он лицензию GPL?

Как только вы связываетесь с библиотекой, лицензированной по лицензии GPL, весь объем кода лицензируется по лицензии GPL. Oracle делает исключение только для других бесплатных лицензий.

3) Я слышал много негативных ответов о том, что PostgreSQL глючит и не оптимизирован для модификации и хранения больших наборов данных. Единственная причина, по которой он все еще используется в некоторых небольших коммерческих проектах, заключается в том, что он бесплатный. Что вы думаете об этом?

Это ФУД. PostgreSQL - это полнофункциональная высокопроизводительная СУБД, используемая в нескольких крупномасштабных развертываниях.

3) Я слышал много негативных ответов о том, что PostgreSQL глючит и не оптимизирован для модификации и хранения больших наборов данных. Единственная причина, по которой он все еще используется в некоторых небольших коммерческих проектах, заключается в том, что он бесплатный. Что вы думаете об этом?

ROFL

Ты, должно быть, шутишь! Чистая ФУД и больше ничего.

У нас есть пара ТБ данных в базе данных PostgreSQL, и она по-прежнему растет примерно на 200 ГБ в месяц. Нет ошибок, нет проблем, просто отличная производительность. Также на 500 одновременных пользователей, никаких проблем вообще. Проверьте список рассылки, чтобы посчитать ошибки и посмотреть, как быстро они устраняются. Не удивляйтесь, когда есть исправление в течение нескольких часов. MySQL может учиться на этом.

http://archives.postgresql.org/pgsql-bugs/

У меня такая же проблема. Ранее я использовал MySQL в коммерческих проектах. Но после того, как oracle вступил во владение и изменили лицензионную политику, я искал другие варианты, включая SQL-Express, DB2-Express, SQL-lite, PostgreSql

Я не буду вдаваться в сравнения, потому что вокруг много информации. Но PostgreSql, безусловно, лучший в отношении

а) обработка больших наборов данных

б) стандарты SQL

в) встроенная документация

г) Статистика использования базы данных

На самом деле, я мог бы начать проект в одночасье, без каких-либо накладных расходов относительно изменений в командах SQL ИЛИ документации.

Тем не менее, поскольку я использую dotnet в Windows, Npgsql является единственным надежным соединителем, который нас пугает.

Но пока что разработка с PostgreSql 9.0 была абсолютно легкой.

Другие вопросы по тегам