Перед бизнесом достаточно часто встают вопросы: какую СУБД выбрать, если до сих пор в топах держатся Oracle, MS SQL и PostgreSQL, в чем их отличия, преимущества и недостатки, и как сейчас обстоит дело на рынке. Выбориз трех наиболее популярных баз данных в конечном итоге сводится к сравнению функциональности, вариантов использования и экосистемам. Компании, которые отдают предпочтение гибкости, экономической эффективности и инновациям, обычно выбирают решения с открытым исходным кодом. Они могут быть интегрированы с несколькими бесплатными дополнениями, иметь активные сообщества пользователей и постоянно обновляться. Крупные компании предпочитают консервативные варианты.
Меня зовут Анастасия, я ведущий разработчик баз данных в SimbirSoft. В этой статье постараюсь наиболее подробно и понятно сравнить возможности, плюсы и минусы топовых СУБД, расскажу про их экосистемы и попробую ответить на вопрос — какую базу данных лучше выбрать бизнесу в 2023 году. Итак, приступим.
Oracle
История Oracle берет начало с июня 1979 года. В 80-е она уже стала популярной и не перестает радовать пользователей до сих пор.
Возможности данной СУБД:
Она подходит для формирования OLTP (транзакционных процессов), DSS (компьютерная система, которая помогает в принятии деловых и организационных методов сбора и аналитики данных), хранилищ данных, работы с графами, геоинформационных систем, документами и не только.
Процедурный язык программирования Oracle PL SQL позволяет писать гибкий код и предоставляет практически неограниченные возможности качественной работы с СУБД, а также ее техподдержки. В нем постоянно появляются новые возможности, он великолепно взаимодействует с языком программирования Java.
Кроссплатформенность этой СУБД дает возможность работать с ней на разных ОС (операционных системах).
Регулярные обновления версий как самого языка разработки, так и программного обеспечения всегда позволяли использовать Oracle на максимум (конечно же при грамотном подборе специалистов) и получать колоссальную выгоду от использования СУБД и огромного количества дополнительного ПО данной компании.
Oracle считается максимально надежной, безопасной, отказоустойчивой, использует уровни изоляции транзакций, что позволяет изолированно работать с кодом, а уже после фиксации изменений (commit) вносить изменения в базу данных, которые сразу появляются у всех пользователей. Она позволяет работать параллельно большому количеству пользователей одновременно, не мешая друг другу.
Большой выбор приложений, в которых можно разрабатывать код, например бесплатный Oracle Developer или платный, но на мой взгляд, более удобный PL SQL Developer. Также есть возможность работать в облачном хранилище, не покупая производственные мощности. Однако из-за запрета компании приобретать лицензии пользователям из РФ и Беларуси, после завершения оплаченного срока, больше не будет возможности использовать облако.
Поставляется Oracle DB в шести редакциях:
Express Edition — бесплатная версия, подойдет для начинающих.
Standard Edition 2 — версия для небольших веб-приложений, в которой многие функции урезаны или доступны за дополнительную плату.
Personal Edition — используется для проверки и тестирования кода, в многопользовательской СУБД. В отличие от Express Edition, требует лицензии, но обладает всей функциональностью Enterprise Edition.
Enterprise Edition — самая дорогая редакция, которая обеспечивает производительность, доступность, масштабируемость и безопасность, необходимые для критически важных систем, таких как приложения для обработки онлайн-транзакций большого объема (OLTP), хранилища данных с интенсивными запросами и требовательные интернет-приложения.
Mobile Server — подходит для мобильных приложений.
NoSQL Database Enterprise Edition — база данных ключ-значение (например: name : “Nastya”)
Для знакомства подойдет версия Oracle Database Express Edition (XE). Эта редакция имеет ограничения в части функциональности, в объеме использования ресурсов, а также в формате поддержки. Но для небольших приложений или обучения ее наполнения вполне достаточно. При этом возможности масштабироваться уже не будет, так как нельзя приобрести лицензию и обновить систему.
Однако и в Oracle есть свои особенности.
Стоимость лицензии. Поскольку долгое время она лидирует по популярности среди СУБД, она за эти годы стоит очень и очень дорого, ее могут себе позволить лишь большие компании с большой выручкой.
Специфический язык программирования. Несмотря на то, что PL SQL является легким в обучении, грамотных специалистов не так много на рынке.
Уникальность. Все СУБД используют стандарт SQL, но с темпом развития баз данных каждая база по сути уникальна, особенно административная часть и искать приходится именно специалистов определенной СУБД с глубокими знаниями.
Вариативность в зависимости от области применения. Например, банки для расчетов в режиме реального времени используют реляционные СУБД, в которых часто что-то меняется и добавляются новые данные. Если в работе необходимо получать и использовать аналитические данные, то лучше подойдет другое ПО от этого производителя, например Oracle Analytics, что потребует дополнительных расходов, либо использовать Enterprise Edition, в которой есть возможно использования OLAP, секционирования (Partitioning), Data Guard, ретроспективных (flashback) баз и многое другое.
Прекращение поддержки. Также есть один нюанс: если установлено или запущено программное обеспечение Oracle, все процессоры должны быть лицензированы. Это правило распространяется на машины в кластере – лицензии должны быть у всех участников кластера. То же самое относится к удаленному зеркальному отображению или резервным машинам.
Благодаря обширному спектру инструментов, доступных для работы с этой СУБД, заслужила большую популярность среди компаний, применяющих подобные программные решения.
По работе с Oracle написано много книг, есть большое количество обучающих видео, курсов. Ее особенностью является свой язык программирования. Это является скорее минусом, так как потребуется время для его изучения, но однозначным плюсом можно выделить то что он не сильно сложный в обучении и очень гибкий. Большие компании любят Oracle за ее безопасность, скорость, отказоустойчивость. Помимо этого однозначным плюсом будет огромное количество дополнительного ПО на любой вкус и цвет. Это и создание отчетов, форм, графиков.
Компания Oracle уже давно представлена на российском рынке и обзавелась экосистемой из популярных программных продуктов, сделанных на технологиях Oracle. Поэтому даже при активном стимулировании государством отказа от иностранных технологий СУБД Oracle будет оставаться важной компонентой IT-инфраструктуры заказчиков до тех пор, пока вокруг российских разработчиков СУБД не появятся похожие экосистемы. Сложнее становится тем, кто использует облачное хранение. Их отключат после окончания оплаченного периода, продлить подписку будет невозможно.
На официальном сайте указано, что компания прекратила все операции в Российской Федерации и Беларуси, а именно предоставление всех услуг, а также поддержку и компаниям, и партнерам. Помимо этого в настоящее время продукты и сервисы Oracle не разрешены экспорту, реэкспорту, использованию и передаче, а новые соглашения заключаться не будут. Таким образом те, кто продолжает использовать эту экосистему, идут на определенные риски.
MS SQL Server
СУБД MS SQL Server появилась в конце 80-х. Она подходит и для компактных приложений, и для работы в высоконагруженных системах.
Возможности MS SQL Server:
Совместимость с продуктами Microsoft. Приобретая одну лицензию, вы можете пользоваться и другими продуктами, такими как службы отчетов, системы интеграции и аналитики (SSRS, SSIS, SSAS), и поверьте, скорость взаимодействия вас непременно порадует.
Использование партиционирования — это возможность разбить большое количество данных на части и обращаться к каждой из них отдельно. Например, разбить данные по месяцам и делать срез по конкретному месяцу. Это позволяет в разы ускорить выборку.
Использование in-memory-таблиц начиная с MS SQL Server 2014. Это позволяет определить таблицу, которая оптимизирована для нахождения в памяти сервера, и повысить производительность обработки данных за счёт скорости их работы в памяти и исключения задержек, связанных с вводом\выводом (хотя здесь есть свои нюансы).
Процедурный язык программирования Transact SQL.
Прекрасное взаимодействие с 1С.
По стоимости MS SQL Server дешевле Oracle, но при этом у нее также есть широкая линейка версий, в том числе и бесплатный вариант, благодаря которому вы можете поэкспериментировать с возможностями СУБД, познакомиться с ней и даже использовать для небольшого приложения.
На данный момент существует 6 редакций MS SQL Server:
Express – бесплатный вариант для небольших баз до 10 Гб.
Web-версия.
Standard – платная версия с некоторыми ограничениями.
Developer – полнофункциональная бесплатная версия для разработки и тестирования.
Evaluation – полнофункциональная бесплатная версия на 180 дней.
Enterprise – полнофункциональная платная версия.
При этом Microsoft предоставляет возможность использовать реляционную СУБД SQL Azure, специально созданную для облака. Она оснащена встроенным искусственным интеллектом, многоуровневой защитой, автоматическим обновлением, резервным копированием.
Особенностью СУБД является технология AlwaysOn, которая обеспечивает высокую доступность и аварийное восстановление — еще один шаг к отказоустойчивости системы (HADR – High Availability and Disaster Recovery).
Помимо этого есть:
четыре вида репликаций,
технология зеркалирования,
log shipping (доставка изменений путем бэкапа в журнал транзакций на primary instance и восстановления на репликах), все это необходимо для обеспечения надежности вашей системы.
Особенности MS SQL Server:
MS SQL Server использует пессимистичный контроль. Блокировки актуальны при разрешении конфликтов, вызванных одновременным взаимодействием нескольких пользователей или процессов с вашим приложением и базой данных. Более подробно о блокировках вы можете прочитать по ссылке.
У MS SQL Server есть прямая зависимость от операционной системы, поэтому лучше всего она работает совместно с Windows.
Высокая стоимость.
SQL Server обладает высокой совместимостью с Windows и инструментами Microsoft. Если вы работаете с Windows, SQL Server, безусловно, лучший вариант на рынке. Пользователи БД получают доступ ко многим дополнительным инструментам, которые охватывают мониторинг сервера, анализ данных, парсинг и программное обеспечение для управления безопасностью.
Экосистема SQL Server ориентирована на большие инфраструктуры. Это дороже, чем у конкурентов с открытым исходным кодом, но пользователи получают доступ к часто обновляемой официальной экосистеме и активной поддержке клиентов, но на данных момент не во всех сферах деятельности.
Хранить и использовать данные для работы с аналитикой можно в самой СУБД благодаря возможности строить колоночные индексы.
Корпорация Microsoft неоднократно изменяла свою позицию по работе в России. По состоянию на август 2023 года компания решила не продлевать лицензии на свое ПО российским клиентам после 30 сентября 2023 года.
PostgreSQL
PostgreSQL появилась в 1996 году.
Возможности:
СУБД PostgreSQL Pro входит в Единый реестр российского ПО, соответствует 152-ФЗ и имеет сертификацию ФСТЭК (для версий Certified и Enterprise Certified).
Доступность исходного кода, наличие расширений (extension), например PostGIS для работы с геоданными, pg_stat_statements для сбора статистики, postgres fwd для обращения к внешним СУБД, веб-сервисам, файлам и многое другое.
Возможность писать процедуры и функции (это отдельные блоки кода, в которых выполняется определенная логика) на внешних языках программирования, для работы с алгоритмами и структурами данных, которых нет в SQL. В настоящее время стандартный дистрибутив PostgreSQL включает четыре процедурных языка:
PL/pgSQL
PL/Tcl
PL/Perl
PL/Python
Но при этом дополнительно можно использовать PL/Java, PL/PHP, PL/R, PL/Ruby и прочие, а также имеется поддержка загрузки модулей расширения на языке C.
Облако. В отличие от Oracle и MS SQL Service своего облака у PostgreSQL нет, но для работы с облачным хранилищем можно использовать продукт Яндекса — Yandex Managed Service for PostgreSQL, который позволяет управлять кластерами СУБД в инфраструктуре Yandex Cloud. Либо пользоваться облачными базами Selected, которые поддерживают и бесплатные расширения для Postgres.
Big Data. Очень часто эта СУБД используется для работы с большими данными, так как она хорошо интегрируется со многими бесплатными продуктами Apache Software Foundation (ASF), а именно Apache Airflow, Apache Flink, веб-сервисы и прочие.
PostgreSQl предоставляет логическую и физическую репликацию — защиту базы данных от сбоев. От физических сбоев поможет репликация (копирование данных из одного источника в другой), а от логических — бэкап.
На данный момент существует 5 редакций Postgres:
PostgreSQL — свободно распространяемая СУБД, разработанная международным сообществом и значительным вкладом разработчиков Postgres Pro.
Postgres Pro Standard — российская СУБД, разработанная компанией Postgres Professional на основе свободно распространяемой СУБД PostgreSQL.
Postgres Pro Certified —сертифицированная версия Postgres Pro Standard.
Postgres Pro Enterprise — коммерческая СУБД, разработанная Postgres Professional для важных приложений и высоких нагрузок.
Postgres Pro Enterprise Certified — сертифицированная версия Postgres Pro Enterprise.
Особенности PostgreSQL:
PostgreSQL не может похвастаться собственной экосистемой продуктов, поэтому дополнительное ПО для создания форм, отчетов необходимо будет рассматривать отдельно.
Бесплатная версия этого продукта не входит в список импортозамещающих продуктов.
В бесплатном Postgre нет ФСТЭКа, впрочем как и у других СУБД.
Инсталляцию новой системы лучше производить на Linux.
При переходе на PostgreSQL следует учитывать особенности кроссплатформенной совместимости. Например, использование PostgreSQL в среде Windows может привести к потерям производительности. Это означает, что как минимум сервер баз данных необходимо будет переносить на Linux.
Конечно, нецелесообразно сравнивать бесплатный вариант Postgres и платные СУБД Oracle и MS SQL Server. Но важно отметить, что разработчики устранили недостатки, которые были ранее в бесплатной версии Postgres. Кроме того в России до сих пор можно воспользоваться платными версиями этой СУБД, которые решат проблемы с быстродействием, безопасностью, интеграцией с 1С, автоматическим созданием бэкапов и многие другие.
На данный момент эту СУБД часто стали использовать в направлении Big Data в связке с Python. Это является большим плюсом для тех, кто работает с большим количеством данных, анализирует их и делает прогнозы для бизнеса. Есть также много обучающей литературы и видео, хороший официальный сайт, поддерживает большое количество ОС.
Postgres Pro можно без ограничений использовать в России и Беларуси. Переход на эту СУБД поможет с минимальными рисками адаптироваться бизнесу к новым условиям, так как система постоянно совершенствуется и поддерживается.
Если же вы часто используете СУБД в DWH (хранилища данных) с большими объемами данных, то в части PostgreSQL лучше рассматривать вариант GreenPlum. Для развертывания кластера GreenPlum необходимо несколько независимых машин. Возможности:
Горизонтальное масштабирование (можно создать кластер даже из 100 узлов) даст большой прирост производительности при расширении проекта.
Оптимизированная работа с внешними источниками (загрузка/выгрузка данных) позволит принимать данные разнообразных форматов и работать с ними.
Одновременное использование колоночной и реляционной СУБД позволит расширить границы, присущие реляционным СУБД.
Режим компрессии данных влияет на производительность без потери информации.
На что переходить?
На данный момент в России без каких-либо санкционных ограничений доступна только СУБД PostgreSQL. Число пользователей PostgreSQL в последние годы активно растет, и эта тенденция проявилась задолго до ввода жестких ограничений со стороны зарубежных разработчиков. Сейчас PostgreSQL является оптимальным решением для корпоративных систем с точки зрения технологического качества продукта и рисков, связанных с поддержкой и масштабированием.
Характеристики |
Oracle |
PostgreSQL |
MsSQL |
Лицензия |
Коммерческая, платная. Невозможно купить в РФ и РБ с 2022 года |
Бесплатная, открытая (есть коммерческий вариант) |
Коммерческая, бесплатная Невозможно купить в РФ и РБ с 2022 года |
Сертификация ФСТЭК |
- |
+ |
- |
Поддержка |
Полная, коммерческая поддержка 24/7 С марта 2022 г. прекращено оказание услуг техподдержки для пользователей из РФ и Беларуси |
Сообщество пользователей, поддержка от третьих сторон. В коммерческих версиях 24/7 (пользователям СУБД Postgres Pro) |
Полная, коммерческая поддержка 24/7. По состоянию на август 2023 года компания решила не продлевать лицензии на свое ПО российским клиентам после 30 сентября 2023 года |
Появление новых версий (после 2022 года) |
- |
+ |
- |
Расширяемость |
Широкий выбор платных расширений и плагинов |
Широкий выбор бесплатных расширений и плагинов |
Широкий выбор платных расширений и плагинов |
Безопасность |
+ Славится лучшей безопасностью |
+ |
+ |
Поддержка множества ОС |
+ |
+ Лучше всего работает с Windows |
+ |
Квалифицированные кадры для работы с СУБД |
+ |
+ |
+ |
Высокая производительность |
+ |
+ |
+ |
Своя экосистема продуктов |
+ |
- |
+ |
Проект перехода – серьезная задача
Тем, кто уже вложился в продукты Oracle или MS SQL, переносить работающие решения исключительно ради импортозамещения необходимости нет, поскольку в имеющиеся СУБД были сделаны значительные инвестиции.
Однако многие крупные компании, работая на приобретенных ранее лицензиях, все же задумываются над проблемами, которые могут начаться в будущем. А именно: отсутствие технической поддержки, невозможность докупать лицензии и производить обновления, соответственно возникновение уязвимостей и проблемы с масштабируемостью. Многие компании, ранее работающие с MS SQL или Oracle, всё же переходят на GreenPlum или PostgreSQL.
Переход на PostgreSQL будет относительно недолгим и недорогим, если прикладное ПО (ERP, BI, биллинг, SCM, автоматизированные банковские системы и др.) поддерживает Postgres, и не нужно много перепрограммировать. Пример успешного перехода компании из государственного сектора на PostgreSQL мы описали в этой статье.
Хоть большинство корпоративных систем возможно перевести на Postgres от нескольких дней до пары лет, в зависимости от сложности, длительности работы проекта и уровня интеграции с другими системами. Ну а пока можно самостоятельно поддерживать существующее ПО, параллельно разрабатывая альтернативные решения.
Спасибо за внимание!
Авторские материалы для backend-разработчиков мы также публикуем в наших соцсетях – ВКонтакте и Telegram.
Комментарии (3)
zVadim
08.09.2023 10:44+1В статье описано три альтернативных варианта, два из которых в текущих обстоятельствах выбрать нельзя, и остаётся только один. Где тут раскрывается тема выбора, вынесенная в заголовок? Было бы полезнее более подробно сравнить разные редакции PostgreSQL, между которыми хотя-бы есть выбор
Akina
08.09.2023 10:44+1Объединение информации о PostgreSQL и PostgreSQL Pro, да ещё таким образом, словно это две разные редакции одного продукта - форменное безобразие, явная демонстрация непрофессионализма и непонимания того, о чём пишется статья (а может, и нежелания понимать). Надёргали цитат, долили воды, хорошенько перемешали - статья готова.
Я лично считаю, что автору следует серьёзно переработать статью и не позорить фирму.
Tzimie
Использование партиционирования — это возможность разбить большое количество данных на части и обращаться к каждой из них отдельно. Например, разбить данные по месяцам и делать срез по конкретному месяцу. Это позволяет в разы ускорить выборку.
А типа в оракле этого нет? Какие то случайные критерии кругом