
Приложение
Интереса ради хотелось бы привести сравнительную таблицу, на которую я наткнулась в просторах Интернета. Хоть и, пожалуй, не совсем объективно, но хоть как-то структурировано она дает предаставление о возможностях трех СУБД, наиболее широко используемых для веб-проектов: Microsoft SQL Server 2008, MySQL 5.1 и PostgreSQL 8.4.
Показатели |
Microsoft SQL Server 2008 |
MySQL 5.1 |
PostgreSQL 8.4 |
Поддерживаемые операционные системы |
Windows Desktop/Server |
Windows Desktop/Server , Linux, Unix, Mac |
Windows1 Desktop/S22erver, Linux, Unix, 2Mac |
Условии лицензирования |
Коммерческий продукт с закрытым исходным кодом. Есть бесплатная версия с ограничением оперативной памяти до 4 Гб. |
Коммерческая лицензия и GNUGPL. |
Лицензия BSD Open Source. |
Процесс установки и поддержки |
Довольно длительное время уходит на установку приложения и всех его зависимстей, однако множество визардов помогают в процессе. Платные версии отсылают электронные сообщения, если что-то «не так» в процессе работы. |
Самый простой процесс установки, так как сущетвует огромное количество готовых пакетов для разных операционных систем, установка из которых сводит трубности и проблемы к нулю |
Для опероционных систем семейств Linux/Unix установка идентична установке MySQL. Однако во время установки под Windows иногда возникают проблемы с инициализацией базы данных. |
Наличие предустановленных драйверов в ОС семейства Windows |
Да |
Нет |
Нет |
Наличие драйверов ODBC, JDBC, ADO.NET |
Да |
Да |
Да |
Наличие View, доступных только для чтения |
Да |
Да |
Да |
Наличие программных продуктов с открытым исходным кодом, основанных на этой СУБД |
Несколько |
Много |
Несколько, но их число растет, особенно в проектах на PHP |
Использование в коммерческих проектах |
Среднее (продукт новый) |
Среднее |
Среднее (чуть реже, чем MySQL) |
Обновляемые View |
Да, даже для двухтабличных view. Они автоматически обновляются, если изменения затрагивают только одну таблицу. |
Да, для однотабличных view и некоторых «простых» двухтабличных. |
Да, но не в автоматическом режиме. Надо писать правила обнволения. |
Поддержка Materialized/Indexable Views |
Да, но с большими ограничениями по версиям продукта и ограничениями на сам view. |
Нет |
Да, но реализуется путем утановки дополнительных модулей с открытым исходным кодом |
Возможность добавлять столбцы, изменять названия, типы данных для view без их уничтожения |
Да |
Да |
Да |
Наличие графического ПО для конструирования и оптимизации запросов |
Да (SQL Management Studio и Studio Express) |
Нет |
Да (PgAdminIII) |
Наличие Computed Columns |
Да, но все равно чаще используеются view |
Нет |
Нет — в PostgreSQL это функциональность излишняя. |
Поддержка фунциональных индексов |
Нет, но можно обойтись Computed Columns |
Нет |
Нет |
Поддержка частичных индексов |
Да (называются “фильтрованные индексы”) |
Нет |
Да |
Поддержка ACID-требований к транзакциям |
Да |
Да, при использовании некоторых движков хранения данных |
Да |
Каскадное обновление/удаление внешних ключей |
Да |
Да, при использовании некоторых движков хранения данных |
Да |
Внесение данных в несколько строк |
Да |
Да |
Да |
Поддержка UPSERT-логики (это когда происходит вставка, если поле пустое и обновление, если поле не пустое) |
Да (через MERGE UPDATE) |
Да (черезINSERT IGNORE, REPLACEINSERT ON DUPLICATE UPDATE) |
нет |
Поддержка репликации |
Да, встроенная и разных типов. Но внесение тсруктурных изменений после начала репликаци — очень сложный процесс. |
Да, включая mater-master репликацию. |
Да, но с помощью сторонних продуктов с открытым исходным кодом. Репликация всех типов. |
Возможность писать хранимые функции на разных языках программирования |
Да, теоретически на любом языке, поддерживающим CLR, например VisualBasic.NET, C#, IronPython, но сначала надо скомпилировать код в бибилиотеку dll. |
Нет (кроме C и Pl/SQL) |
Да, наиболее полная поддержка из всех рассматриваемых. |
Возможность создавать пользовательские аггрегированные функции |
Да — любой .NET язык, кроме TRANSACT SQL. |
Да, только на С |
Да — на PL language и встроенных C, SQL, PLPgSQL. |
Поддержка триггеров |
Да |
Да |
Да |
Партицирование таблиц |
Да (в Enterprise версии) |
Да |
Да |
Возможность создавать функции, возвращающие таблицу или набор таблиц, которые можно использовать в секции FROM запросов. |
Да |
Нет |
Да |
Поддержка создания функций |
Да |
Да |
Да |
Поддержка хранимых процедур |
Да |
Дa |
Да (с помощью CREATE FUNCTION) |
Поддержка динамического SQL в функциях |
Нет |
Нет |
Да |
Бесплатное ПО для графического управления БД |
Да (SQL Management Studio/Express) |
Нет |
Да (PgAdmin III) |
Наличие встроенного планировщика (не CronTab) |
Да (SQL Agent не для Express версии) |
Да (только для SQL-запросов) |
Да (PgAgent) |
Возможность доступа к таблице из другой базы данных, находящейся на том же хосте |
Да |
Да |
Да |
Чувствительность к регистру |
По умолчанию — не чувствительна |
Нет |
Да |
Поддержка даты и времени |
Да |
Да (но без временной зоны) |
Да |
Аутентификация |
Средставими БД и ActiveDirectory |
Средствами БД |
Много разных методов, включающих предыдущие |
Разграничение доступа к столбцам |
Да |
Да |
Да |
Поддержка DISTINCT ON |
Нет |
Нет |
Да |
Поддержка WITH ROLLUP |
Да |
Да |
Да |
Поддержка WITH CUBE |
Да |
Нет |
Нет |
Поддержка функцийOVER..PARTITION BY |
Да |
Нет |
Да, причем лучше, чем в MS SQL |
Поддержка рекурсивных запросов |
Да |
Нет |
Да |
Поддержка COUNT(DISTINCT), AGGREGATE(DISTINCT) |
Да |
Да |
Да |
Поддержка OGC |
Да |
Да |
Да |
Поддержка схем |
Да |
Нет |
Да |
Поддержка CROSS APPLY |
Да |
Нет |
Нет, но можно обойтись введением возвращающей функции в Select |
Поддержка LIMIT .. OFFSET |
Нет |
Да |
Да |
Наличие Advanced Database Tuning Wizard |
Да (технолгия Microsoft) |
Нет |
Нет |
Наличие Maintenance Plan Wizard |
Да (технолгия Microsoft) |
Нет |
Нет |
Наличие Pluggable Storage Engine |
Нет |
Да |
Нет |
Поддержка связанных подзапросов |
Да |
Да |
Да |
Производительностьпланировщика запросов для сложных запросов |
Средняя (умеет параллельные запросы «из коробки») |
Плохая |
Очень хорошая (GridSQL) |
Наличие текстового процессора |
Да |
Да |
Да |
Поддержка последовательностей и автоматической нумерации |
Да |
Да |
Да |
Возможность откатить CREATE, ALTER |
Да |
Нет |
Да |
Оценка производидась по критерию — за полную поддержку 2 балла, за частичную — 1 балл, за никакую — 0 баллов. Результаты оценки:
-
MS SQL — 87 баллов
-
Mysql — 64 балла
-
PostgreSQL — 91 балл.
Ну и на последок несколько хвалебных слов в честь победителя. PostgreSQL используют в качестве СУБД такие проекты и компании как:
-
Yahoo!
-
MySpace
-
OpenStreetMap
-
Sony Online Entertainment
-
BASF
-
hi5.com
-
Skype
-
Sun xVM
-
Evergreen