SQLite, MySQL и PostgreSQL сравниваем популярные реляционные СУБД


Оглавление (нажмите, чтобы открыть):

MySQL против PostgreSQL

Вот – сравнение баз данных MySQL и PostgreSQL, предлагаемое не ради высказывания моего мнения, а ради того, чтобы помочь другим принять собственное решение. Обеим системам есть что предложить в вопросах стабильности, гибкости и производительности. MySQL имеет особенности, в которых PostgreSQL испытывает недостаток, и наоборот.

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

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

Список особенностей и возможностей

В таблице А приведено сравнение наиболее употребимых особенностей и возможностей баз данных MySQL и PostgreSQL.
Таблица А – это не исчерпывающий список особенностей, типов данных или проблем производительности, касающийся этих двух систем баз данных – она лишь дает некоторое представление о том, что каждая из них может предложить.

Из таблицы мы видим, что PostgreSQL предлагает полные особенности и возможности традиционных приложений баз данных, в то время как MySQL сосредотачивается на более быстром выполнении (работе) для веб приложений. Развитие индустрии «открытых исходников» принесет большее количество особенностей и возможностей в последующих версиях обеих баз данных.

Таблица A: сравнение MySQL и PostgreSQL

Особенности PostgreSQL MySQL
ANSI SQL совместимость Близка к стандарту ANSI SQL Следует некоторым стандартам ANSI SQL
Скорость работы Медленнее Быстрее
Вложенные селекты Да Нет
Транзакации Да Да, однако должен использоваться тип таблицы InnoDB
Ответ базы данных Да Да
Поддержка внешних ключей Да Нет
Представления Да Нет
Хранимые процедуры Да Нет
Триггеры Да Нет
Unions Да Нет
Полные Joins Да Нет
Ограничители целостности Да Нет
Поддержка Windows Да Да
Вакуум (очистка) Да Нет
ODBC Да Да
JDBC Да Да
Различные типы таблиц Нет Да

Когда использовать MySQL

Почему бы вы предпочли MySQL, нежели PostgreSQL? Сначала, мы должны рассмотреть потребности приложений в терминах требований базы данных. Если я хочу создать веб приложение, и главное для меня это производительность и скорость – MySQL будет лучшим выбором, потому что она быстра и разработана для того, чтобы хорошо работать с веб серверами.

Однако, если я хочу создать другое приложение, которое требует выполнения транзакаций и наличия внешних ключей, лучшим выбором станет PostgreSQL. Даже при том, что MySQL не полностью совместима с ANSI SQL стандартом, я должен упомянуть, что, в то время как PostgreSQL ближе к ANSI SQL стандарту, MySQL ближе к ODBC стандарту.

Позвольте мне описать некоторые плюсы использования MySQL:

  • MySQL относительно быстрее PostgreSQL.
  • Дизайн и планирование базы данных несколько проще.
  • Можно создать простой веб сайт с использованием базы.
  • Ответы на запросы MySQL были хорошо протестированны.
  • Нет нужды использовать методы очистки (вакуум).

Когда использовать PostgreSQL

Не много веб-разработчиков используют в своей работе PostgreSQL, так как считают, что дополнительные особенности и возможности снижают производительность и скорость работы. Однако, PostgreSQL имеет много преимуществ над MySQL. Например, некоторые из особенностей, которые часто используются – внешние ключи, триггеры и представления. Они позволяют скрывать сложность базы данных от приложения, таким образом избегая создания сложных команд SQL.

Cуществует немало разработчиков, которые предпочитают богатые функциональные возможности SQL команд PostgreSQL. Одно из наиболее ощутимых различий между MySQL и PostgreSQL – невозможность создания вложенных подзапросов (селектов) в MySQL. PostgreSQL соответствует многими SQL стандартам ANSI, таким образом позволяя создание сложных команд SQL.

Несколько причин использовать PostgreSQL:

  • Сложный дизайн базы данных.
  • Переезд с Oracle, Sybase или MSSQL.
  • Сложные наборы правил.
  • Использование процедурных языков на сервере.
  • Транзакации
  • Использование хранимых процедур.
  • Использование географичеких данных.
  • R-Trees (например, использование индексов).

Заключение

Вы должны будете выбрать, взвесив все плюсы и минусы, какая база данных является «совершенной» для вашего приложения или сайта. А может быть и такое, что вы захотите использовать обе базы (бывают и такие случаи). Мое заключение – одна база не обязательно лучше другой, и каждая из них занимает свою определеную нишу в мире баз данных с открытым исходным кодом.

PostgreSQL vs. MySQL — сравнение, особенности и отзывы

Хотя существует много сходств и совпадений между двумя базами данных PostgreSQL vs MySQL, существуют также очень четкие различия между ними . Разработчику нужно ясно предоставлять различие между ними, чтобы определить, какая БД наиболее подходит для конкретного случая использования.

PostgreSQL против MySQL

PostgreSQL vs MySQL — это две популярные БД с открытым исходным кодом. Они поддерживают все основные операции SQL, которые нужны пользователю. Когда дело доходит до более продвинутых задач, необходимо воспользоваться определенными функциями, поддерживаемыми каждой БД, такими как материализованные представления или частичные индексы. Например, PostgreSQL поддерживает материализованные представления, а MySQL — нет.

Сводка сходств и различий наиболее часто оцениваемых функций и способностей между PostgreSQL vs MySQL выглядит так:

Если разработчик хочет создать приложение, ориентированное на потребителя, целью которого является масштабирование с более миллионом активных пользователей — MySQL лучший выбор. В противном случае PostgreSQL лучше.

Кроме того, можно рассмотреть следующие аспекты сравнения PostgreSQL vs MySQL.

С точки зрения надежности:

  1. В PostgreSQL 10 добавили логическую репликацию, что делает ее эквивалентной MySQL. Исторически репликация была одной из причин выбора второй БД, но теперь по этому критерию первая с ней сравнялась.
  2. Обе базы данных имеют параметры, позволяющие соотносить производительность и долговечность MySQL vs PostgreSQL для веб- приложений.

С точки зрения скорости:

  1. Для приложений с длительным временем выполнения SELECT для аналитики, PostgreSQL работает лучше благодаря возможности параллельного запроса.
  2. Для небольших SELECT, охватывающих простой и кластеризованный индекс, отлично работает MySQL.
  3. Для приложений с большим количеством малых MySQL лучше подходит.
  4. Для приложений с тяжелыми UPDATE MySQL работает намного лучше.
  5. Для приложений с тяжелыми DELETE на эфемерных данных обе поддерживают раздел, обе работают хорошо, если пользователь тщательно использует эту функцию.

С точки зрения масштабируемости и сравнения СУБД Postgres vs MySQL:

  1. Обе БД масштабируются довольно хорошо (вверх и вниз).
  2. PostgreSQL более скромная. Если у пользователя 1000 подключений, ей нужно более 10 ГБ дополнительной памяти.

Некоторые интересные отличия PostgreSQL от MySQL :

  1. MySQL 8 теперь поддерживает CTE и функции окна. Поэтому обе базы данных практически сопоставимы, за исключением пользовательских типов на PostgreSQL.
  2. На практике PostgreSQL «безопаснее» по умолчанию, особенно для новичков. Например, MySQL имеет странные значения по умолчанию для кодировки символов и сортировки.
  3. Можно сказать, что MySQL отлично подходит для массового OLTP, а PostgreSQL — для всего остального, особенно для аналитики

Открытый исходный код

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

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

PostgreSQL разработана группой из нескольких фирм и участников. Это бесплатное ПО с открытым исходным кодом с лицензией PostgreSQL, аналогичной BSD или MIT.

Проект разработки MySQL сделал исходный код доступным. Теперь он принадлежит корпорации Oracle и предлагает различные платные издания для приватного пользования.

Соответствие требованиям ACID

ACID (Atomicity, Consistency, Isolation, Durability) — это комплекс свойств транзакций БД. Соответствие ACID гарантирует, что никакие данные не будут потеряны или устранены в системе в случае сбоя, если даже в ходе одной транзакции произошли множественные изменения.

PostgreSQL совместима с ACID и обеспечивает выполнение всех требований. MySQL работает только с ACID при использовании движков InnoDB и NDB Cluster Storage.

Соответствие SQL — это стандарт, в котором база данных должна выполнять все структурированные рекомендации и стандарты языка запросов. Это очень важно, когда компании хотят работать с гетерогенными базами данных для приложения.

Наличие соответствия SQL позволяет очень легко перемещать нужные значения из одной базы данных, совместимой с SQL, в другую, например, Oracle на PostgreSQL или SQL Server. В этом случае нужно учитывать перед принятием решения, какую базу данных выбрать, MySQL vs PostgreSQL l.

PostgreSQL поддерживает большинство основных функций SQL. Из почти 180 функций, необходимых для соответствия Core, PostgreSQL выполняет не менее 160. В настоящее время ни одна из существующих версий системы управления БД не претендует на их полное соответствие.

MySQL частично совместима с некоторыми версиями, например, не поддерживает ограничения CHECK.

Репликация для быстрой обработки WAL

Это означает проведение оперативного копирования данных из БД на одном ПК или использование нагруженных систем MySQL vs PostgreSQL vs SQLite сервера, чтобы пользователи обладали свежей информацией, получая доступ к данным для выполнения задач.

PostgreSQL поддерживает репликацию Master-Standby и вносит значительные улучшения, создавая чрезвычайно быструю обработку WAL, что приводит практически к репликации в реальном времени и возможности «горячего резерва».

Репликации, предлагаемые PostgreSQL:

  1. Одиночный мастер в один режим ожидания.
  2. Одиночный мастер для нескольких резервных копий.
  3. Горячий режим ожидания / потоковая репликация.
  4. Двунаправленная репликация.
  5. Репликация потока логических журналов.
  6. Каскадная репликация.

Репликации, предлагаемые MySQL:

  1. Одиночный мастер в один режим ожидания.
  2. Одиночный мастер для нескольких резервных копий.
  3. Одиночный мастер в один режим ожидания для одного или нескольких резервных номеров.
  4. Циклическая репликация от A до B до C и обратно к A.
  5. Мастер освоения.

Приложения для увеличения скорости

Производительность — это область, которую можно оценить только путем сравнения показателей потенциальных сценариев, поскольку она зависит от чистых требований конкретного пользователя и характера приложения для увеличения скорости чтения PostgreSQL vs MySQL.

PostgreSQL широко используется в огромных системах, где скорость имеет определяющее значение, а данные должны быть корректны. Она поддерживает различные варианты оптимизации производительности, например, Oracle, SQL Server и прилично работает в OLTP/OLAP, когда необходима скорость и детальный анализ данных. Она также хорошо работает с приложениями Business Intelligence, но лучше подходит для приложений Data Warehousing и анализа данных, требующих быстрой скорости чтения/записи Performance PostgreSQL vs MySQL.

MySQL является широко используемой в веб-проектах, которым нужна база данных для простых транзакций. MySQL, когда перегружена тяжелыми нагрузками или при попытке выполнить сложные запросы, хорошо работает в OLAP/OLTP-системах, требующих скорости чтения. В целом, MySQL является достаточно надежной, хорошо работает с высокими сценариями параллелизма и с приложениями Business Intelligence.

Безопасность и облачный хостинг

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

PostgreSQL имеет ROLES и унаследованные роли для установки и поддержки разрешений. Она также имеет встроенную поддержку SSL для соединений и шифрования сообщений клиент/сервер и безопасность уровня строки. PostgreSQL имеет расширение SE-PostgreSQL, предоставляющее дополнительные элементы управления доступом на основе политики безопасности SELinux.

MySQL реализует безопасность на основе контроля доступа (ACL) для любых операций, которые пользователь может попытаться выполнить.

Облачный хостинг обеспечивает эластичность серверов, позволяя быстро расширять или сокращать свои возможности. Это также дает возможность сократить время простоя при одновременном управлении пиковыми рабочими нагрузками и поддерживается всеми основными поставщиками облачных сервисов, включая Amazon, Google и Microsoft.

Поддержка сообщества параллелизма

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

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

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

Возможности NoSQL и JSON

NoSQL и JSON очень популярны, а базы данных NoSQL становятся все более распространенными. JSON — это простой формат данных, который позволяет программистам хранить и обмениваться наборами значений, списков и сопоставлений ключевых значений в разных системах.

PostgreSQL поддерживает JSON и другие функции NoSQL, такие как встроенная поддержка XML и пары ключ-значение с HSTORE. Он также поддерживает индексирование данных JSON для более быстрого доступа.

У MySQL есть поддержка типа данных JSON, но нет никакой другой функции NoSQL. Он не поддерживает индексацию для JSON.

Материализованное представление являет собой объект базы данных, содержащий результаты запроса, который может быть обновлен по мере необходимости из исходной базовой таблицы. Его можно рассматривать, как кеш для баз данных.

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

PostgreSQL поддерживает материализованные представления и временные таблицы. MySQL поддерживает временные таблицы, но не поддерживает материализованные представления

Геопространственные данные

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

PostgreSQL поддерживает геопространственные данные через расширение PostGIS.

MySQL имеет встроенную поддержку геопространственных данных и предлагает только около 80 функций, связанных с пространственными значениями, из которых только около 30 функций выполняют любой реальный анализ. К ним относятся такие операции, как Buffer, Intersection и Union.

MSSQL и SQL Anywhere могут предложить более 80 и 100 пространственных операций, соответственно. Оба включают в себя аналитические функции, такие как Union, Difference, вычисление длин, расстояний и площадей.

Что касается трехмерного аспекта геоданных, MSSQL и SQL Anywhere предлагают одну или две функции для проверки того, является ли геометрия 3D. Если необходимо, они рекомендуют добавить координату Z.

С PostgreSQL и Oracle, предлагающими около 300 функций, включая 2D, 3D, MSSQL и SQL Anywhere, не имеет значительных проблем геоданных, а MySQL только приближается к конкурентам в этой области.

Использование языков программирования

Эта возможность помогает широкому кругу разработчиков выполнять несколько задач на родном языке.

PostgreSQL поддерживает широкий спектр языков программирования, включая C/C++, Java, JavaScript, Net, R, Perl, Python и Ruby. Имеется возможность даже запустить пользовательский код в отдельных процессах, то есть работать в качестве фоновых приложений.

MySQL имеет поддержку программирования на стороне сервера на одном языке, который не является расширяемым.

PostgreSQL имеет несколько функций, предназначенных для расширяемости. Можно добавлять новые функции и типы индексов. У MySQL нет поддержки расширяемости.

Средства администрирования и мониторинга

Поскольку базы данных являются важными программными компонентами, существуют десятки инструментов, доступных для администрирования, мониторинга и устранения неполадок, начиная с приложений командной строки:

  • mysql (MySQL, MariaDB).
  • psql (PostgreSQL).

Они отлично подходят для основных задач администрирования, потому что встроены со своими серверами и всегда доступны. Не требуется ничего дополнительного для установки. Оба они имеют доступную историю команд, поэтому можно повторно запускать ранее выполненные запросы и команды. У них есть набор команд bult-in, которые могут облегчить взаимодействие с базой данных.

Например, psql имеет d команду перечислять все базы данных и mysql имеет status команду для получения информации, такой как версия сервера и время безотказной работы. Также доступны официальные графические инструменты MySQL 8 vs PostgreSQL:

  • MySQL Workbench (MySQL, MariaDB).
  • pgAdmin4 (PostgreSQL).
  • Для MySQL Workbench.

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

Отзывы пользователей

Опытные программисты считают, что MySQL и PostgreSQL — это две из самых популярных программ RDMS с открытым исходным кодом на рынке. В течение многих лет они успешно конкурировали с коммерческими программами баз данных с закрытым исходным кодом. Каждая из них получила определенную репутацию, имея свои сильные и слабые стороны. Поэтому новичкам сложно сделать самостоятельный выбор, в этом случае лучше воспользоваться советами опытных разработчиков. Специалисты пишут, что обе БД можно использовать с успехом, но нужно знать, для каких случаев выбрать одну или другую.

Вот некоторые рекомендации, которыми делятся в своих отзывах разработчики:

  • MySQL воспринимается намного быстрее, но предлагает меньше возможностей. Считается, что PostgreSQL имеет более глубокий набор функций.
  • Некоторые программисты считают PostgreSQL похожим на Oracle.
  • Текущие выпуски обоих продуктов (MySQL 5.6 и PostgreSQL 9.2) обладают большим количеством скоростных, мощных и динамических функций.
  • PostgreSQL разработал сильные функции для повышения производительности. В последних выпусках было добавлено более 70 новых улучшений.
  • PostgreSQL очень строг в кодировании.
  • MySQL широко используется, как часть LAMP стека программ с открытым исходным кодом, которые составляют основу многих веб-сайтов в Интернете.
  • В основной программе MySQL нет инструментов графического интерфейса пользователя для управления программным обеспечением или создания и обслуживания баз данных.
  • MySQL работает на многих платформах Windows, Linux и Mac.
  • MySQL менее надежный. Поскольку он широко используется на небольших сайтах, существует множество надстроек, плагинов и модулей для оптимизации MySQL из популярных программ, таких как WordPress, Drupal и Joomla.

Выводы

Удивительно, но оказывается, что MySQL лучше всего подходит для онлайн-транзакций, а PostgreSQL — для добавления только аналитических процессов, таких как хранилище данных.

Ниже приведена сводная таблица сравнения MySQL и PostgreSQL:

Открытый исходный код

Полностью открытый источник

Открытый исходный код, но принадлежащий Oracle, предлагает коммерческие версии

Соответствие требованиям ACID

Полное соответствие требованиям ACID

Некоторые версии совместимы

Почти полностью совместимый

Некоторые версии совместимы

Реализация MVCC поддерживает несколько запросов без блокировок чтения

Поддержка в некоторых версиях

Безопасное использование с поддержкой SSL

Поддержка SSL в некоторых версиях

Поддержка NoSQL / JSON

Несколько поддерживаемых функций

Только поддержка данных JSON

Поддерживает все стандарты

Поддерживает все стандарты

Доступны несколько технологий репликации:

  1. Одиночный мастер в один режим ожидания
  2. Одиночный мастер для нескольких резервных копий
  3. Горячий режим ожидания / потоковая репликация
  4. Двунаправленная репликация
  5. Репликация потока логических журналов

Стандартная репликация master-standby:

  1. Одиночный мастер в один режим ожидания
  2. Одиночный мастер для нескольких резервных копий
  3. Одиночный мастер в один режим ожидания для одного или нескольких резервных номеров
  4. Циклическая репликация (от A до B до C и обратно к A)
  5. Мастер освоения

Система расширяемого типа

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

Vladimir Drach. Official Web-Site. — Личный сайт Владимира Драча

Сравнение современных СУБД

Вторник, 30 Май 2020 15:13

Информацией, хранящейся в базе данных (БД), может быть всё что угодно: каталог продукции, информация о клиентах, контент веб-сайта и др. Для обеспечения доступа к информации, хранящейся в базе данных, а также для управления ею, применяют систему управления базами данных (СУБД). СУБД — это комплекс языко­вых и программных средств, предназначенный для создания, ведения и совместного использования БД многими пользователями. Обычно СУБД различают по используемой модели данных. Так, СУБД, базирующиеся на использовании реляционной модели данных, называют ре­ляционными СУБД. Системы управления базами данных помогают отсортировать информацию, а также связать базы данных между собой, при этом предоставив отчет об изменениях и зарегистрированных событиях.

В этой статье мы обсудим некоторые из наиболее популярных баз данных, используемых в настоящее время и обозначим их достоинства и недостатки.

На что стоит обращать внимание

Несмотря на то, что все системы управления базами данных выполняют одну и ту же основную задачу (т.е дают возможность пользователям создавать, редактировать и получать доступ к информации, хранящейся в базах данных), сам процесс выполнения этой задачи варьируется в широких пределах. Кроме того, функции и возможности каждой СУБД могут существенно отличаться. Различные СУБД документированы по-разному: более или менее тщательно. По-разному предоставляется и техническая поддержка.

При сравнении различных популярных баз данных, следует учитывать, удобна ли для пользователя и масштабируема ли данная конкретная СУБД, а также убедиться, что она будет хорошо интегрироваться с другими продуктами, которые уже используются. Кроме того, во время выбора следует принять во внимание стоимость системы и поддержки, предоставляемой разработчиком.

Если речь идёт о выборе СУБД для предприятия, то следует принять во внимание возможность СУБД «расти» вместе с развитием организации. Малому бизнесу могут потребоваться только базовые функции и возможности, а также небольшое количество информации, размещаемой в БД. Но требования могут существенно расти с течением времени, а переход на другую СУБД может стать проблемой.

Существует несколько популярных СУБД, как платных, так и бесплатных, которые можно рекомендоватьдля применения в организации. Выполняя поиск, рассмотрите как минимум перечень из десяти СУБД, приведённых ниже, включая отечественные продукты.

1. Oracle 12c

Неудивительно, что корпорация Oracle предлагает одноимённый продукт, с которого обычно начинается рассмотрение вариантов популярных СУБД. Первая версия Oracle была создана в конце 70-х годов, имея на данный момент блестящую репутацию. Кроме того, существует несколько версий этого продукта для удовлетворения потребностей конкретной организации.

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

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

Достоинства

  • Самые свежие инновации и впечатляющий функционал уже внедрены в этом продукте, поскольку компания Oracle стремится держать планку даже на фоне других разработчиков СУБД.
  • СУБД от Оракул является крайне надёжной, фактически это эталон надёжности среди подобных систем.

Недостатки

  • Стоимость Oracle может оказаться непомерно высокой, особенно для небольших организаций.
  • Система может потребовать значительных ресурсов уже сразу после установки, поэтому возможно потребуется модернизировать оборудование для внедрения Oracle.

Идеально подходит для крупных организаций, которые работают с огромными базами данных и разнообразными функциями.

2. MySQL

MySQL — одна из самых популярных баз данных для веб-приложений. Фактически, является стандартом de facto для веб-серверов, которые работают под управлением операционной системы Linx. MySQL — это бесплатный пакет программ, однако новые версии выходят постоянно, расширяя функционал и улучшая безопасность. Существуют специальные платные версии, предназначенные для коммерческого использования. В бесплатной версии наибольший упор делается на скорость и надежность, а не на полноту функционала, который может стать и достоинством и недостатком — в зависимости от области внедрения.

Мастер Йода рекомендует:  Как установить шрифт в Photoshop

Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

Эта СУБД позволяет выбирать различные движки для системы хранения, которые позволяют менять функционал инструмента и выполнять обработку данных, хранящихся в различных типах таблиц. Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц. Она также имеет простой в использовании интерфейс, и пакетные команды, которые позволяют удобно обрабатывать огромные объемы данных. Система невероятно надежна и не стремится подчинить себе все доступные аппаратные ресурсы.

Достоинства

  • Распространяется бесплатно
  • Прекрасно документирована
  • Предлагает много функций, даже в бесплатной версии
  • Пакет MySQL включен в стандартные репозитории наиболее распространённых дистрибутивов операционной системы Linux, что позволяет устанавливать её элементарно
  • Поддерживает набор пользовательских интерфейсов
  • Может работать с другими базами данных, включая DB2 и Oracle.

Недостатки

  • Придётся потратить много времени и усилий, чтобы заставить MySQL выполнять несложные задачи, хотя другие системы делают это автоматически, например: создавать инкрементные резервные копии.
  • Отсутствует встроенная поддержка XML или OLAP.
  • Для бесплатной версии доступна только платная поддержка.

Идеально подходит для: организаций, которым требуется надежный инструмент управления базами данных, но бесплатный.

3. Microsoft SQL сервер

Ещё одной из популярных СУБД является программный продукт Microsoft SQL-сервер. Это система управления базами данных, движок которой работает на облачных серверах, а также локальных серверах, причем можно комбинировать типы применяемых серверов одновременно. Вскоре после выпуска Microsoft SQL сервер 2020, Microsoft адаптировала продукт для операционной системы Linux, а на Windows-платформе он работал изначально.

Одной из уникальных особенностей версии 2020 года является temporal data support (временная поддержка данных), которая позволяет отслеживать изменения данных с течением времени. Последняя версия Microsoft SQL-сервер поддерживает dynamic data masking (динамическую маскировку данных), которая гарантирует, что только авторизованные пользователи будут видеть конфиденциальные данные.

Достоинства

  • Продукт очень прост в использовании
  • Текущая версия работает быстро и стабильно
  • Движок предоставляет возможность регулировать и отслеживать уровни производительности, которые помогают снизить использование ресурсов.
  • Вы сможете получить доступ к визуализации на мобильных устройствах.
  • Он очень хорошо взаимодействует с другими продуктами Microsoft.

Недостатки

  • Цена для юридических лиц оказывается неприемлемой для большей части организаций.
  • Даже при тщательной настройке производительности корпорация SQL Server способен занять все доступные ресурсы.
  • Сообщается о проблемах с использованием службы интеграции для импорта файлов.

Идеально подходит для: крупных организаций, которые уже используют ряд продуктов Microsoft.

4. PostgreSQL

PostgreSQL является одним из нескольких бесплатных популярных вариантов СУБД, часто используется для ведения баз данных веб-сайтов. Это была одна из первых разработанных систем управления базами данных, поэтому в настоящее время она хорошо развита, и позволяет пользователям управлять как структурированными, так и неструктурированными данными. Может быть использован на большинстве основных платформ, включая Linux. Прекрасно справляется с задачами импорта информации из других типов баз данных с помощью собственного инструментария.

Движок БД может быть размещен в ряде сред, в том числе виртуальных, физических и облачных. Самая свежая версия, PostgreSQL 9.5, предлагает обработку больших объемов данных и увеличение числа одновременно работающих пользователей. Безопасность была улучшена благодаря поддержке DBMS_SESSION.

Достоинства

  • Является масштабируемым и способен обрабатывать терабайты данных.
  • Поддерживает формат json.
  • Существует множество предопределенных функций.
  • Доступен ряд интерфейсов.

Недостатки

  • Документация туманна, поэтому, возможно, ответы на некоторые вопросы придется искать в интернете.
  • Конфигурация может смутить неподготовленного пользователя.
  • Скорость работы может падать во время проведения пакетных операций или выполнения запросов чтения.

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

5. MongoDB

Еще одна бесплатная база данных, которая имеет коммерческую версию — MongoDB, она предназначена для приложений, которые используют как структурированные, так и неструктурированные данные. Ядро является очень гибким и работает при подключении базы данных к приложениям через драйверы MongoDB. Существует широкий выбор доступных драйверов, поэтому легко найти драйвер, который будет работать с требуемым языком программирования.

Поскольку изначально система MongoDB не была разработана для обработки моделей реляционных данных (хотя может это выполнять), могут возникнуть проблемы производительности, если вы попытаетесь использовать её таким образом. Однако, движок предназначен для обработки различных данных, которые нельзя отнести к реляционным, и может хорошо справляться там, где другие движки работают медленно или бессильны.

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

Достоинства

  • Скорость и простота в использовании
  • Движок поддерживает json и другие традиционные документы NoSQL.
  • Данные любой структуры могут быть сохранены/прочитаны быстро и легко.

Недостатки

  • SQL не используется в качестве языка запросов.
  • Инструменты для перевода SQL-запросов в MongoDB доступны, но их следует рассматривать именно как дополнение.
  • Программа установки может занять много времени.

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

6. MariaDB

Эта СУБД является бесплатной, но как и многие другие бесплатные приложения, предлагает платные версии. Есть множество доступных плагинов расширений, пожалуй, это самая быстро-развивающаяся СУБД на данный момент.

MariaDB фактически — это ответвление от СУБД MySQL, разрабатываемое сообществом под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation. Толчком к созданию стала необходимость обеспечения свободного статуса СУБД, в противовес политике лицензирования MySQL компанией Oracle. Система лицензирования MariaDB обязывает участников, желающих добавить свой код в основную ветку СУБД, обмениваться своими авторскими правами с MariaDB Foundation для охраны лицензии и возможности создавать критические исправления для MySQL.

Ведущий разработчик — Майкл Видениус, автор оригинальной версии MySQL и основатель компании Monty Program AB.

Ядро базы данных позволяет делать выбор из нескольких систем хранения, и это делает использование ресурсов более оптимизированным, что повышает производительность запросов и обработки. В состав MariaDB включена подсистемы хранения данных XtraDB для возможности замены InnoDB, как основной подсистемы хранения. Также включены подсистемы Aria, PBXT и FederateX. Она полностью совместима с MySQL, и прекрасно подходит в качестве замены, т.к. полностью соответствует как набор команд, так и API. Многие разработчики MySQL были вовлечены в процесс разработки, а сейчас принимают участие в развитии.

Достоинства

  • Система работает быстро
  • Индикаторы дадут вам знать, как обрабатывается запрос.
  • Расширяемая архитектура и плагины позволяют настраивать инструмент в соответствии с вашими потребностями.
  • Шифрование доступно в сети, сервере и уровне приложения.

Недостатки

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

Идеальна как альтернатива MySQL, если MySQL не устраивает по каким-то причинам.

7. DB2

Созданная компанией IBM, DB2 представляет собой СУБД, которая имеет возможности NoSQL, и может читать JSON и XML-файлы. Ввиду того, что система разрабатывалась для серверов компании IBM модельного ряда iSeries, логично, что система работает на Windows, Linux и Unix.

Диалект языка SQL, используемый в DB2 за редкими исключениями строго декларативен, система снабжена многофазовым оптимизатором, строящим по этим декларативным конструкциям план выполнения запроса. В диалекте SQL DB2 отсутствуют подсказки оптимизатору, мало развит (а долгое время вообще отсутствовал) язык хранимых процедур, и, таким образом, всё направлено на поддержание декларативного стиля написания запросов. Язык SQL DB2 при этом является вычислительно полным, то есть потенциально позволяет в декларативной форме определять любые вычислимые соответствия между исходными данными и результатом. Это достигается в том числе за счёт использования табличных выражений, рекурсии и других развитых механизмов манипулирования данными.

Оптимизатор DB2 широко использует статистику распределения данных в таблицах (если процесс её сбора был выполнен администратором базы данных), поэтому один и тот же запрос на языке SQL может быть оттранслирован в совершенно различные планы выполнения в зависимости от статистических характеристик данных, которые он обрабатывает.

В рамках концепции повышения уровня интеграции средств безопасности в компьютерной системе, DB2 не имеет собственных средств аутентификации пользователей, интегрируясь со средствами операционной системы или специализированными серверами безопасности. В рамках DB2 осуществляется только авторизация пользователей, аутентифицированных системой.

DB2 является единственной реляционной СУБД общего назначения, имеющей реализации на аппаратно-программном уровне (система IBM i; также в оборудовании мэйнфреймов IBM System z реализуются средства поддержки DB2).

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

Текущая версия DB2 — это LUW 11.1, которая предлагает разнообразные улучшения и доработки. Одно из них, ускорение Blu , которое предназначено, для того чтобы сделать эту базу данных быстрее. Пропуск данных предназначен для повышения быстродействия системы с большим количеством данных, чем может она может вместить в себя. Последняя версия DB2 также обеспечивает усовершенствованные функции аварийного восстановления, совместимости и аналитики.

Достоинства

  • Blu Acceleration позволяет грамотно задействовать ресурсы для объёмных баз данных.
  • Может быть размещена в облачном хранилище, на физическом сервере, или же и там, и там одновременно.
  • Несколько задач могут выполняться одновременно с помощью планировщика задач.
  • Коды ошибок и коды завершения позволяют легко отследить, какие задания выполняются или выполнились с помощью планировщика задач.

Недостатки

  • Цена за пределами бюджета многих физических лиц и небольших организаций.
  • Сторонние приложения или дополнительное программное обеспечение требуется, для того чтобы заставить функционировать кластеры или несколько вторичных узлов.
  • Базовая поддержка доступна только в течение трех лет; после этого, вы должны заплатить за это.

Подходит для: крупных организаций, которые планируют выжимать максимум из имеющихся ресурсов и обрабатывают большие БД.

8. SAP HANA

Разработанная компанией SAP SE, SAP HANA — это СУБД, с движком ориентированным на работу со столбцами, работающая с родными данными SAP и чужими данными. Ядро предназначена для сохранения и извлечения данных из приложений и других источников на нескольких уровнях хранения. Может быть размещен на физических серверах, и в облаке.

Достоинства

  • Она поддерживает SQL, OLTP и OLAP.
  • Ядро снижает требования к ресурсам за счет использования сжатия.
  • Данные хранятся в памяти, сокращая время доступа, в некоторых случаях, значительно.
  • Отчеты формируются в реальном времени.
  • Может взаимодействовать с рядом других приложений.

Недостатки

  • Высокая стоимость лицензий даже если речь идёт о плате за программное обеспечение предприятия.
  • Это всё ещё относительный новичок, требуются постоянные обновления.

Идеально подходит для: организаций, которые захватывают данные из приложений и при этом неограниченны в бюджете.

9. ЛИНТЕР

«Линтер» — российская СУБД, реализующая стандарт SQL:2003 (за исключением нескалярных типов данных и объектно-ориентированных возможностей) и поддерживающая большинство операционных систем, в том числе семейство Windows, различные версии UNIX, ОС реального времени (включая QNX).

К особенностям можно отнести защиту данных: 2 класс защиты данных от несанкционированного доступа и 2 уровень контроля отсутствия недекларированных возможностей. Мандатный контроль доступа к данным на уровне таблиц, столбцов записей и отдельных полей записей. Управление доступом к рабочим станциям и устройствам хранения информации. Контроль доступа к СУБД по расписанию. Управление протоколированием операций над БД (аудит). Аутентификация пользователей через LDAP, Kerberos, средствами операционной системы. Хеширование паролей по алгоритму FIPS 180-2 SHA-224.

18 марта 2020 года по решению Экспертного совета по российскому программному обеспечению при Минкомсвязи России СУБД ЛИНТЕР включена в единый реестр российских программ для электронных вычислительных машин и баз данных (реестр российского ПО).

Репликация асинхронная (в том числе и двунаправленная), возможна репликация с другими БД через ODBC.

Имеет утилиты конвертации, работающие через ODBC и ADO.NET. Конвертор из DBF-формата. Конвертор модели данных (из ERwin в ЛИНТЕР).

Достоинства

  • Российская разработка
  • Она поддерживает SQL:2003.
  • Облегчается конвертация при переходе с других СБУД
  • Рекомендована «Единым реестром российских программ».

Недостатки

  • Падение эффективности в случае высокой динамики изменений.

Идеально подходит для: отечественных организаций, которые работают с конфиденциальными и персональными данными.

9. РЕД База Данных

«РЕД База Данных» — российская СУБД, работает на всех основных платформах и ОС (Windows, Linux, BSD Unix, IBM AIX, HP-UX, Sun Solaris и т.д.). Система модульная. Имеет открытый исходный код.

Возможность «горячего» резервного копирования и инкрементного резервного копирования. Сертифицирована ФСТЭК России. Соответствует отечественным требованиям по защите информации.
Может использоваться при создании информационных систем до класса защищенности 1Г включительно и при создании информационных систем персональных данных до 1 класса включительно. Полное соответствие принципам атомарности, непротиворечивости, изоляции, долговечности (ACID).

Имеются модули сопряжения практически для всех используемых сред разработки (драйверы ODBC, JDBC, C/C++, C#, Java, Delphi, PHP, Python, Perl, VB, и т.д.), результатов тестов этих модулей и гарантия стабильной работы.

Возможность работы во «встроенном» в ПО (embedded) локальном режиме в виде библиотеки DLL без отдельной установки и настройки СУБД, в т.ч. поддержка встраивания в виртуальную машину Java.

Достоинства

  • Российская разработка
  • Соответствует отечественным требованиям по защите информации
  • Высокое быстродействие, сравнимое с лидерами рынка.
  • Возможность хранения базы данных в одном отдельном файле.

Недостатки

Идеально подходит для: отечественных организаций (включая оборонные), которые работают с конфиденциальными и персональными данными.

Обсуждение

Если сравнивать популярность современных СУБД с точки зрения их распространенности, то можно увидеть следующую картину по состоянию на 2013 год (рис. 1).

Рис. 1. Распространенность современных СУБД по состоянию на 2013 г.

C течением времени картина распространенности СУБД изменилась и в 2020 году приняла следующий вид (рис. 2).

Рис. 2. Распространенность современных СУБД по состоянию на 2020 г.

Необходимо отметить, что в опросе принимали участие специалисты, непосредственно занимающиеся разработкой, внедрением и эксплуатацией той или иной СУБД.
Приведем сводную таблицу, в которой постараемся упорядочить все рассмотренные особенности каждого программного продукта (таблица 1).

Таблица 1. Сравнительный анализ параметров СУБД

Тест производительности движков MySQL, PostgreSQL, FireBird (только SELECT в несколько потоков).

Рассказ о повышении производительности тормозящего запроса. Сравнение движков баз данных: MySQL, FireBird, PostgreSQL, SQLite. Субъективные выводы. Описание теста. Сколько людей делало всяческие benchmark‘и, разных баз данных. Все претендуют на объективность, все такие хорошие, соображающие и опытные тюнингаторы. :-).

Вчера стукнулись, попросили разобраться, что происходит с одним из серверов, некогда настроенным мной. А было там примерно следующее:
1:56PM up 44 days, 17:24, 1 user, load averages: 21.58, 22.19, 22.07

Как выяснилось, всему виной была база данных (неудивительно), базу настраивал лично я, параметры были подобраны нормально, кэширование запросов — включено, казалось бы — все должно быть отлично. Однако за эти пару-тройку месяцев база разрослась и начали возникать первые проблемы.

В продолжении статьи — детали и сравнение производительности БД для разных серверов: MySQL, FireBird, PostgreSQL. И движка SQLite. Все эти движки — опенсорсные и работают на Linux и FreeBSD.

Общие данные о структуре базы данных.

База, состоящая из одной таблицы, представлена следующим образом (MySQL синтаксис):

Аналогичная структура базы данных была воспроизведена и в остальных движках БД: PostgreSQL, FireBird, SQLite. Для тестирования использовался perl (DBD, DBI), использовались модули Time::HiRes и threads.

Использованные серверы баз данных

PostgreSQL 8.0.13 on x86_64-pc-linux-gnu, compiled by GCC x86_64-pc-linux-gnu-gcc (GCC) 4.1.2 (Gentoo 4.1.2)

ISQL Version: LI-V2.0.3.12981 Firebird 2.0 Server version: Firebird/linux AMD64 (access method), version «LI-V2.0.3.12981 Firebird 2.0″ Firebird/linux AMD64 (remote server), version «LI-V2.0.3.12981 Firebird 2.0/tcp (localhost)/P10″ Firebird/linux AMD64 (remote interface), version «LI-V2.0.3.12981 Firebird 2.0/tcp (localhost)/P10″ on disk structure version 11.0

MySQL: mysqladmin Ver 8.41 Distrib 5.0.44, for pc-linux-gnu on x86_64 Server version 5.0.44-log Protocol version 10 Connection Localhost via UNIX socket

Как видно, не для всех серверов версии последние (но для всех достаточно свежие). Везде использовалась 64-битная сборка. ОС — Gentoo Linux. Память: 1024M. Был выполнен следующий тюнинг серверов:

PostgreSQL: процессу передаются такие опции: -N 25 -c work-mem=65536 -c shared-buffers=1000 (не более 25 одновременных подключений, 1000 буферов, разделяемых на эти подключения, рабочая память не более 64Mb).

MySQL: включено кэширование SQL запросов (SET GLOBAL query_cache_limit = 1048576; SET GLOBAL query_cache_type = 1). Настройки для MyISAM дефолтные.

Тюнингом FireBird я никогда ранее не занимался, учиться времени не было, поэтому оставлен конфиг по умолчанию (ОС Gentoo Linux).

По причинам, о которых расскажу позже, привожу данные warm-up запуска (для того, чтобы движок БД считал данные с диска), производимого ОДИН раз, и не перед тестом непосредственно, а после старта системы:
PostgreSQL: четыре процесса (122Mb (6Mb) в сумме). Время разогревочного запроса 0m6.443s. Предположительно связано с огромным размером индекса на диске, я создал два индекса (btree и hash) для колонки place, не зная, какой из них будет использован движком.
MySQL: 202Mb (36Mb). Время разогревочного запроса 0m2.468s.
FireBird: 103Mb (6Mb). Время разогревочного запроса 0m7.836s.
SQLite: Время разогревочного запроса 0m5.108s.

Следующий этап — я останавливаю движки БД, а через 5 минут запускаю их вместе. Еще через 5 минут — выполняю тот же злополучный запрос. В течение этих 5 минут, в совершенно другом каталоге считается размер, занятый файлами.

0m0.841s — PostgreSQL, 0m2.395s — MySQL, 0m4.477s — FireBird, 0m2.896s — SQLite. Как видно, дисковый кэш разогрелся, все движки получили свой прирост производительности. Теперь тестовые данные запуска в такой конфигурации: 20 потоков выполняют по 10 запросов каждый. Выполнение всех 20 потоков начинается одновременно.

Ход тестирования:

Для тестирования использовался самодельный, на скорую руку написанный тест на Perl. Для многопоточности использовался модуль threads.

Multi thread: prepare_pg: Global avg is: 3.13079101085663 Память 124 (6)
Multi thread: prepare_my: Global avg is: 14.5757958674431 Память 484 (52)
Multi thread: prepare_fb: Global avg is: 0.00530530452728272 Память 95 (5)
Multi thread: prepare_s3: Global avg is: 43.2979071068764 Память 675 (111)

Как видно, FireBird успешно справился с кэшированием запроса, — вряд ли хоть один движок БД даже на суперкомпьютере, смог бы выполнить эту выборку за 0,005 секунды. Настройки по умолчанию — действительно отличные! Дальнейшей оптимизации движок подвергать не будем.

Хуже всех, как и ожидалось, в многопоточной среде отработал SQLite. Помимо прочего, во время выполнения скрипта, perl «отжирал» 675Mb (111Mb) памяти, т.е. ясно, что под нагрузкой, в многопоточном окружении, этот движок нежизнеспособен. Впрочем, другого и не ожидалось — не та сфера применения.

Но почему же такие низкие результаты показаны MySQL? MySQL известен по всему интернету, как движок с неимоверно быстрыми SELECT. Даже неверный выбор query plan (который действительно имеет место быть, позже я это покажу, в сравнительном анализе MySQL и PostgreSQL), не мог привести к такой низкой производительности.

Вероятнее всего, проблема кроется в использовании движка MyISAM. Попробуем с InnoDB. Перевод базы в InnoDB осуществлялся следующим образом: mysqldump baron table > table_mysql.sql, в текстовом редакторе vim было заменено ENGINE=MyISAM на ENGINE=InnoDB.

Блокировка в многопоточном режиме должна стать более эффективной, и производительность базы должна возрасти. Даже разогревочный запрос выполнялся всего лишь 0m1.385s.

Как и ожидалось, среднее время запроса уменьшилось (производительность выросла). Но ненамного. Увеличилась скорость выполнения первых запросов (7с.), а затем запросы стали достигать 15с. После еще одного, повторного запуска, производительность, кажется, повысилась еще больше (минимальное время составило 3с.) Этот результат и отражен в таблице.

Multi thread: prepare_my: Global avg is: 12.3769785487652. Память 220 (116).

Увеличение буфера сортировки дало свои результаты (вместо 512Kb по умолчанию, я задействовал 4Mb):

Multi thread: prepare_my: Global avg is: 10.900887594223. Память 235 (127).

Экспериментальным путем было выяснено, что 4 Mb достаточно (увеличение до 6Mb не дает прироста производительности).

Однако у нас в рукаве еще остался козырь: Если FireBird в состоянии закэшировать запрос, значит и MySQL также может это сделать. Надо только понять, в чем причина. А причина, вероятно всего, в большом объеме данных — план выполнения запроса показывает большое количество строк, которые будут проверены — вероятно, они занимают в памяти больше 1Mb, которое отведено под кэширование данных.

Проверим гипотезу. Раз для буфера сортировки оптимальное значение в районе 4 Mb, попробуем установить размер кэшируемых данных также в 4 Mb. Поднимем общий предел закэшированных данных до 20 Mb. (SET GLOBAL query_cache_limit = 4 * 1048576; SET GLOBAL query_cache_size = 20 * 1048576;):

Multi thread: prepare_my: Global avg is: 4.80021322250366. Память 362 (184).

Очевидно, где-то в середине сработало кэширование, и результат получился приемлемым :-). Однако, пробуем еще раз:

Multi thread: prepare_my: Global avg is: 0.000454176664352417

Итак, — мы только что догнали и обогнали FireBird.

Теперь попробуем максимально приблизить к этому результату и PostgreSQL.

Увеличение -c effective_cache_size=1000 не дало нужного результата. Не дало результата и его дальнейшее повышение.

Возможно, в 8.3 версии стало лучше, но сейчас запросы не кэшируются.

Сухая статистика:

Многопоточный тест производительности выборки:

Движок базы данных 1 запрос Память
PostgreSQL 3,1308 6
MySQL MyISAM 14,5758 52
MySQL InnoDB 12,377 116
MySQL InnoDB (sort_buffer) 10,9009 127
MySQL InnoDB (sort_buffer, query_cache_limit) 0,0005 184
FireBird 0,0053 5
SQLite 3 43,2979 111

Разогрев базы данных:

Движок базы данных 1 запрос
PostgreSQL 6,443
MySQL MyISAM 2,468
MySQL InnoDB 1,385
FireBird 7,836
SQLite 3 5,108

Примечания: Нет возможности посмотреть реальную статистику использования памяти PostgreSQL, т.к. для выполнения запросов создаются отдельные процессы. Для SQLite 3 статистика памяти не может быть точной, т.к. приведен расход памяти всего perl скрипта, в него включен расход памяти интерпретатора.

Субъективные выводы

Для этого теста лучше всех в конфигурации «из коробки» проявил себя FireBird. Хотя в целом производительность выборки была продемонстрирована довольно посредственная, но ведь это же конфигурация «из коробки» — ни один параметр не подвергался тюнингу, вероятно, разогревочный запрос можно было увеличить хотя бы до уровня PostgreSQL. В любом случае, FireBird оставляет много места для оптимизации — в частности, можно задать план выполнения запроса (query plan) вручную. Однако «из коробки», запросы выполнялись 1.10 sec — в режиме объяснения query plan.

Чрезвычайно порадовали математики, писавшие алгоритм выбора плана запроса для PostgreSQL. План подобран более качественно, благодаря этому стало возможным троекратное превосходство над MySQL. Наверняка есть и возможности роста — во-первых, таблицы размещались в файле; во-вторых, параметры (кроме количества одновременных подключений и размера памяти) не были затронуты. Вероятно, можно изменить размер буфера сортировки; возможно, можно явно указать более эффективный план запроса вручную. Но в любом случае, 0.375 sec при выполнении одиночного запроса на разогретой базе — очень хороший результат.

MySQL, не позволяющий задать план запроса, оказался в не самом удачном положении. Хотя его спасло наличие кэша результатов — при условии, что база не изменяется, за счет него он способен «порвать» очень многих конкурентов. Без использования кэша, на разогретой базе — время выполнения запросов составляет 1.19 sec.

SQLite был оставлен исключительно для того, чтобы было с чем сравнивать. Подобное применение — совершенно нетипично для этого движка, у него и не было ни малейшего шанса. Однако, при условии однопользовательского окружения, SQLite показывает довольно неплохой результат. 2.57 секунд — это всего лишь в 2 раза медленнее, чем MySQL.

Ни один из упомянутых движков, на мой взгляд, не был достаточно хорош. PostgreSQL был бы близок к термину «достаточно хорош» в моем понимании, если бы поддерживал query cache и «из коробки» смог бы конкурировать с FireBird в этом конкретном случае. FireBird бы был «достаточно хорош», если бы производительность выполнения запроса без кэширования оказалось на хорошем уровне. MySQL достаточно хорош — и его повсеместное применение для некритичных задач это подтверждает. Однако при масштабировании (scale) базы данных, могут возникать проблемы, подобные описанной здесь.

Есть, конечно, и иные точки зрения на этот счет. Пример: недавнее исследование — сравнение производительности Drupal 5.5 с базой данных на PostgreSQL и MySQL. Здесь же приведен всего лишь синтетический тест, одного конкретного медленного запроса.

Впрочем, эти выводы — лишь мое личное мнение

MySQL vs PostgreSQL vs SQLite для высоконагруженных сайта на PHP?

Подскажите, пожалуйста, какую БД выбрать(MySQL vs PostgreSQL vs SQLite) для высокоангруженного сайта на PHP в котором будет примерно 300 000 статей, и 50 000-60 000 заходов на сайт в день?

3 ответа 3

Ну для больших проектов SQLite точно не стоит выбирать. А что касается MySQL и PostgreSQL, то это скорее зависит от собственных предпочтений и кривизны рук)) Несколько интересных ссылок:

PostgreSQL выглядит более предпочтительнее по ряду причин:

  1. Более «умный» планировщик запросов.
  2. Возможность использования нескольких индексов на одной таблице (MySQL может использовать только один индекс на одну таблицу).
  3. Функциональные индексы (индексы по выражению, а не по данным из столбца).

Для высоких нагрузок — postgresql Кроме того, что тут написали

SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems

Often time you might be confused with terms related with SQL, SQLite, MySQL or PostgreSQL and mumble that what on earth the meaning of those similar terms. Here is the article I found online dealing with the comparison between these different database systems. In the end, I put all the key points in a table to see the whole picture of the creatures.

Мастер Йода рекомендует:  Копирайтинг - 10 советов, как сконструировать убедительный рекламный текст

Introduction

Relational databases have been in use for a long time. They became popular thanks to management systems that implement the relational model extremely well, which has proven to be a great way to work with data [especially for mission-critical applications].

We are going to try to understand the core differences of some of the most commonly used and popular relational database management systems (RDBMS). We will explore their fundamental differences in terms of features and functionality, how they work, and when one excels over the other in order to help developers with choosing a RDBMS.

Glossary

1. Database Management Systems

  • Relational Database Management Systems
  • Relations And Data Types
  • Popular And Important Relational Databases

2. SQLite

  • SQLite’s Supported Data Types
  • Advantages of SQLite
  • Disadvantages of SQLite
  • When To Use SQLite
  • When Not To Use SQLite

3. MySQL

  • MySQL’s Supported Data Types
  • Advantages of MySQL
  • Disadvantages of MySQL
  • When To Use MySQL
  • When Not To Use MySQL

4. PostgreSQL

  • PostgreSQL’s Supported Data Types
  • Advantages of PostgreSQL
  • Disadvantages of PostgreSQL
  • When To Use PostgreSQL
  • When Not To Use PostgreSQL

Database Management Systems

Databases are logically modelled storage spaces for all kinds of different information (data). Each database, other than schema-less ones, have a model, which provide structure for the data being dealt with. Database management systems are applications (or libraries) which manage databases of various shapes, sizes, and sorts.

Relational Database Management Systems

Relational Database Systems implement the relational model to work with the data. Relational model shapes whatever information to be stored by defining them as related entities with attributes across tables (i.e. schemas).

These type of database management systems require structures (e.g. a table) to be defined in order to contain and work with the data. With tables, each column (e.g. attribute) holds a different type (e.g. data type) of information. Each record in the database, uniquely >keys, translates to a row that belongs to a table, with each row’s series of attributes being represented as the columns of a table — all related together, as defined within the relational model.

Relations And Data Types

Relations can be considered as mathematical sets that contain series of attributes which collectively represent the database and information being kept. This type of identification and collection method allow relational databases to work the way they do.

When defining a table to insert records, each element forming a record (i.e. attribute) must match the defined data type (e.g. an integer, a date etc.). Different relational database management systems implement different data types — which are not always directly interchangeable.

Working with and through constraints, like the one we have just explained, is common with relational databases. In fact, constraints form the core of the relations.

Popular And Important Relational Databases

In this article, we are going to introduce three major and important open-source relational database management systems that have helped to shape the world of application development.

A very powerful, embedded relational database management system.

The most popular and commonly used RDBMS.

The most advanced, SQL-compliant and open-source objective-RDBMS.

SQLite

SQLite is an amazing library that gets embedded inside the application that makes use of. As a self-contained, file-based database, SQLite offers an amazing set of tools to handle all sorts of data with much less constraint and ease compared to hosted, process based (server) relational databases.

When an application uses SQLite, the integration works with functional and direct calls made to a file holding the data (i.e. SQLite database) instead of communicating through an interface of sorts (i.e. ports, sockets). This makes SQLite extremely fast and efficient, and also powerful thanks to the library’s underlying technology.

SQLite’s Supported Data Types

Signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.

Floating point value, stored as an 8-byte IEEE floating point number.

Text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE).

A blob of data, stored exactly as it was input.

Note: To learn more about SQLite’s data types and SQLite type affinity, check out the official documentation on the subject.

Advantages of SQLite

  • File based:

The entire database consists of a single file on the disk, which makes it extremely portable.

Although it might appear like a “simple” DB implementation, SQLite uses SQL. It has some features omitted ( RIGHT OUTER JOIN or FOR EACH STATEMENT ), however, some additional ones are baked in.

  • Great for developing and even testing:

During the development phase of most applications, for a majority of people it is extremely likely to need a solution that can scale for concurrency. SQLite, with its rich feature base, can offer more than what is needed for development with the simplicity of working with a single file and a linked C based library.

Disadvantages of SQLite

  • No user management:

Advanced databases come with the support for users, i.e. managed connections with set access privileges to the database and tables. Given the purpose and nature of SQLite (no higher-levels of multi-client concurrency), this feature does not exist.

  • Lack of possibility to tinker with for additional performance:

Again by design, SQLite is not possible to tinker with to obtain a great deal of additional performance. The library is simple to tune and simple to use. Since it is not complicated, it is technically not possible to make it more performant than it already, amazingly is.

When To Use SQLite

  • Embedded applications:

All applications that need portability, that do not require expansion, e.g. single-user local applications, mobile applications or games.

In many cases, applications that need to read/write files to disk directly can benefit from switching to SQLite for additional functionality and simplicity that comes from using the Structured Query Language(SQL).

It is an overkill for a large portion of applications to use an additional process for testing the business-logic (i.e. the application’s main purpose: functionality).

When Not To Use SQLite

  • Multi-user applications:

If you are working on an application whereby multiple clients need to access and use the same database, a fully-featured RDBM (e.g. MySQL) is probably better to choose over SQLite.

  • Applications requiring high write volumes:

One of the limitations of SQLite is the write operations. This DBMS allows only one single write*operating to take place at any given time, hence allowing a limited throughput.

MySQL

MySQL is the most popular one of all the large-scale database servers. It is a feature rich, open-source product that powers a lot of web-sites and applications online. Getting started with MySQL is relatively easy and developers have access to a massive array of information regarding the database on the internet.

Note: It should be stated that given the popularity of the product, there are a lot of third-party applications, tools and integrated libraries which help greatly with many aspects of working with this RDBMS.

Despite not trying to implement the full SQL standard, MySQL offers a lot of functionality to the users. As a stand-alone database server, applications talk to MySQL daemon process to access the database itself — unlike SQLite.

MySQL’s Supported Data Types

A very small integer.

A small integer.

A medium-size integer.

A normal-size integer.

A large integer.

A small (single-precision) floating-point number. Cannot be unsigned.

  • DOUBLE, DOUBLE PRECISION, REAL:

A normal-size (double-precision) floating-point number. Cannot be unsigned.

An unpacked floating-point number. Cannot be unsigned.

A date and time combination.

A year in 2- or 4- digit formats (default is 4-digit).

A fixed-length string that is always right-padded with spaces to the specified length when stored.

A variable-length string.

A BLOB or TEXT column with a maximum length of 255 (2⁸ — 1) characters.

A BLOB or TEXT column with a maximum length of 65535 (2¹⁶ — 1) characters.

A BLOB or TEXT column with a maximum length of 16777215 (2²⁴ — 1) characters.

A BLOB or TEXT column with a maximum length of 4294967295 (2³² — 1) characters.

Advantages of MySQL

  • Easy to work with:

MySQL can be installed very easily. Third-party tools, including visual ones (i.e. GUIs) make it extremely simple to get started with the database.

MySQL supports a lot of the SQL functionality that is expected from a RDBMS — either directly or indirectly.

A lot of security features, some rather advanced, are built in MySQL.

MySQL can handle a lot of data and furthermore it can be used “at scale”, if needed be.

Giving up some standards allows MySQL to work very efficiently and cut corners, thus providing speed gains.

Disadvantages of MySQL

  • Known limitations:

By design, MySQL does not intend to do everything and it comes with functional limitations that some state-of-the-art applications might require.

The way certain functionality gets handled with MySQL (e.g. references, transactions, auditing etc.) renders it a little-less reliable compared to some other RDBMSs.

Although MySQL is still technical an open-source product, there are complaints regarding the development process since its acquisition. However, it should be noted that there are some MySQL-based, fully-integrated databases that add value on top of the standard MySQL installations (e.g. MariaDB).

When To Use MySQL

  • Distributed operations:

When you need more than what SQLite can offer, including MySQL to your deployment stack, just like any stand-alone database server, brings a lot of operational freedom together with some advanced features.

MySQL’s security features provide reliable protection for data-access (and use) in a simple way.

  • Web-sites and web-applications:

A great majority of web-sites (and web-applications) can simply work on MySQL despite the constraints. This flexible and somewhat scalable tool is easy to use and easy to manage — which proves very helpful in the long run.

If you are working on a highly specific and extremely custom solution, MySQL can tag along easily and go by your rules thanks to its rich configuration settings and operation modes.

When Not To Use MySQL

  • SQL compliance:

Since MySQL does not [try to] implement the full SQL standard, this tool is not completely SQL compliant. If you might need integration with such RDBMSs, switching from MySQL will not be easy.

Even though MySQL and some storage engines perform really well with read operations, concurrent read-writes can be problematic.

Again, depending on the choice of the database-engine, MySQL can lack certain features, such as the full-text search.

PostgreSQL

PostgreSQL is the advanced, open-source [object]-relational database management system which has the main goal of being standards-compliant and extensible. PostgreSQL, or Postgres, tries to adopt the ANSI/ISO SQL standards together with the revisions.

Compared to other RDBMSs, PostgreSQL differs itself with its support for highly required and integral object-oriented and/or relational database functionality, such as the complete support for reliable transactions, i.e. Atomicity, Consistency, Isolation, Durability (ACID).

Due to the powerful underlying technology, Postgres is extremely capable of handling many tasks very efficiently. Support for concurrency is achieved without read locks thanks to the implementation of Multiversion Concurrency Control (MVCC), which also ensures the ACID compliance.

PostgreSQL is highly programmable, and therefore extendible, with custom procedures that are called “stored procedures”. These functions can be created to simplify the execution of repeated, complex and often required database operations.

Although this DBMS does not have the popularity of MySQL, there are many amazing third-party tools and libraries that are designed to make working with PostgreSQL simple, despite this database’s powerful nature. Nowadays it is possible to get PostgreSQL as an application package through many operating-system’s default package manager with ease.

PostgreSQL’s Supported Data Types

signed eight-byte integer

autoincrementing eight-byte integer

fixed-length bit string

variable-length bit string

logical Boolean (true/false)

rectangular box on a plane

binary data (“byte array”)

variable-length character string

fixed-length character string

    c >IPv4 or IPv6 network address

circle on a plane

calendar date (year, month, day)

double precision floating-point number (8 bytes)

IPv4 or IPv6 host address

signed four-byte integer

infinite line on a plane

line segment on a plane

MAC (Media Access Control) address

exact numeric of selectable precision

geometric path on a plane

geometric point on a plane

closed geometric path on a plane

single precision floating-point number (4 bytes)

signed two-byte integer

autoincrementing four-byte integer

variable-length character string

time of day (no time zone)

time of day, including time zone

  • timestamp [(p)] [without time zone]:

date and time (no time zone)

  • timestamp [(p)] with time zone:

date and time, including time zone

text search query

text search document

    tx >user-level transaction ID snapshot

    uu >universally unique identifier

Advantages of PostgreSQL

  • An open-source SQL standard compliant RDBMS:

PostgreSQL is open-source and free, yet a very powerful relational database management system.

PostgreSQL is supported by a devoted and experienced community which can be accessed through knowledge-bases and Q&A sites 24/7 for free.

  • Strong third-party support:

Regardless of the extremely advanced features, PostgreSQL is adorned with many great and open-source third-party tools for designing, managing and using the management system.

It is possible to extend PostgreSQL programmatically with stored procedures, like an advanced RDBMS should be.

PostgreSQL is not just a relational database management system but an objective one — with support for nesting, and more.

Disadvantages of PostgreSQL

  • Performance:

For simple read-heavy operations, PostgreSQL can be an over-kill and might appear less performant than the counterparts, such as MySQL.

Given the nature of this tool, it lacks behind in terms of popularity, despite the very large amount of deployments — which might affect how easy it might be possible to get support.

Due to above mentioned factors, it is harder to come by hosts or service providers that offer managed PostgreSQL instances.

When To Use PostgreSQL

  • Data integrity:

When reliability and data integrity are an absolute necessity without excuses, PostgreSQL is the better choice.

  • Complex, custom procedures:

If you require your database to perform custom procedures, PostgreSQL, being extensible, is the better choice.

In the future, if there is a chance of necessity arising for migrating the entire database system to a propriety (e.g. Oracle) solution, PostgreSQL will be the most compliant and easy to handle base for the switch.

Compared to other open-source and free RDBMS implementations, for complex database designs, PostgreSQL offers the most in terms of functionality and possibilities without giving up on other valuable assets.

When Not To Use PostgreSQL

If all you require is fast read operations, PostgreSQL is not the tool to go for.

Unless you require absolute data integrity, ACID compliance or complex designs, PostgreSQL can be an over-kill for simple set-ups.

Unless you are willing to spend the time, energy and resources, achieving replication with MySQL might be simpler for those who lack the database and system administration experience.

Please kindly check the original post for more information and enjoy online-learning!

SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД

You are using an outdated browser. Please upgrade your browser.

By signing up, you agree to our Terms of Service and Privacy Policy.

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

Для чего предназначены системы управления базами данных? Базы данных созданы для структурированного хранения и быстрого доступа к различным данным. Каждая база данных, кроме самих данных, должна иметь определенную модель работы, с помощью которой выполняться обработка данных. Для управления базами данных разработаны СУБД: MySQL и Postgresql.

Какие особенности реляционных системы управления базами данных: с помощью них можно размещать данные в таблицах, связывая строки из разных таблиц. Для начала работы перед сохранением данных, необходимо создать таблицы определенного размера и указать тип данных для каждого столбца. Столбы – это поля данных, а сами данные хранятся в строках. MySQL vs Postgresql относятся к реляционным.

История разработки MySQL и PostgreSQL.

MySQL начал создаваться еще в 90-х. Внутренний выпуск произошел в 1995 году. Тогда разработкой MySQL занимались несколько компаний. Начиная с 2010 года компания Oracle владеет проектом MySQL и разрабатывает новые версии.

PostgreSQL немного ранее в 1986 году начал разрабатываться в Калифорнийском университете. Над проектом работали более 8 лет, но потом был разделен на коммерческую БД IIlustra и свободный проект Postrgesql.

Особенности хранения данных.

В MySQL для хранения данных в таблицах используются различные движки. Движок не имеет влияния на синтаксис запросов и их выполнение. Имеется поддержка MyISAM, InnoDB, MEMORY, Berkeley DB. Их основное отличие в способе записи данных на диск и методов считывания. Как удалить все таблицы в базе данных MS SQL? PostgreSQL работает только на движке storage engine. Таблицы организованы в виде обьектов, а действия выполняются с помощью объективно ориентированных функций.

SQL – это стандартизированный язык выполнения запросов, который используется и MySQL и PostgreSQL. Этот стандарт имеет несколько версий и был разработан еще в 1986 году.

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

PostgreSQL поддерживает все новые стандарты SQL, из-за этого данный проект довольно сложный и не настолько популярный как MySQL.

Возможности обработки данных.

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

Производительность MySQL и Postgresql.

MySQL всегда был ориентирован на большую производительность, в то время как Postgresql был нацелен на большое количество настроек и стандартов. Но со временем эта ситуация поменялась и Postgre стал более производительным.

Для организации работы с базой данных в MySQL используется таблица InnoDB. А это значит, что MySQL будет значительно быстрее Postgre в случае использовании первичного ключа.

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

Поддерживаемые типы данных.

MySQL и Postgresql имеют похожий набор, который, конечно же, имеет свои отличия. В Postgre типы более разнообразны и есть свои типы полей для определенных видов данных, которых, например, нет в MySQL.

Будущее MySQL и Postgresql.

Эти проекты имеют открытый исходный код, но развиваются совсем по-разному. MySQL под руководством компании Oracle тормозит в развитии. Postgresql развивается группой программистов и несколькими компаниями. Новые версии выходят достаточно часто и имеют новые функции.

Также к Вашему вниманию обзор систем управления базами данных – MariaDB и MongoDB и обзор популярных и актуальных систем управления базами данных.

Sqlite vs. MySQL vs. PostgreSQL: A Comparison of Relational Databases

Relational Database Management Systems (RDBMS) are one of the most widely used database management systems in the world. Based on the relational model invented by Edgar F. Codd, these databases store data in the form of tables, and allow the data to be linked by establishing a relationship between the tables. This results in an efficient data storage mechanism where the data can be referenced from elsewhere in the database.

In this article, we compare three of the most popular open-source RDBMS on the market. The comparison delves into differences in architecture, business continuity, use cases, and support that help you make an informed decision while pursuing database systems for your application.

SQLite

Overview and features

SQLite is an embedded, file-based RDBMS that does not require any installation or setup. This, in turn, means that the application does not run under a separate server process that needs to be started, stopped, or configured. This serverless architecture enables the database to be cross-platform compatible.

The complete SQL database is contained within a single disk file and all reads and writes take place directly on this disk file. As the data is directly written back to the disk file, SQLite adheres to the ACID properties to safeguard transactions against memory allocation failures and disk I/O errors that can result from unexpected system crashes or power failures.

Advantages and use cases

The SQLite library is one of the most compact libraries in this list where the size of the library can easily be under 600 KB. Due to its very small footprint and the nature of the RDBMS, it is a very good fit for IoT and embedded devices.

Some other good use cases include low-to-medium traffic websites (

100K requests a day), testing and internal development purposes, data analysis using Tcl or Python and educational purposes (this is simple to set up and can be used to teach SQL concepts to students).

One major advantage of SQLite is how it can act as a complementary solution for client/server enterprise RDBMS. For example, it can cache data from client/server RDBMS locally and thereby reduce the latency for queries and keep the end application alive in case of enterprise RDBMS outages.

Disadvantages

One of the main drawbacks of the SQLite system is its lack of multi-user capabilities which can be found in full-fledged RDBMS systems like MySQL and PostgreSQL. This translates to a lack of granular access control, a friendly user management system, and security capabilities beyond encrypting the database file itself. This is a major drawback when designing multi-user applications like CRM and SaaS applications and is normally not favored when building multi-user or multi-tenant applications.

Another big disadvantage of SQLite is its handling of writes operations which are serialized. This can be a major bottleneck for applications that require concurrency. As SQLite is a file-based DBMS, it can cause performance issues with larger datasets because of file system limitations. It would be appropriate to choose client/server databases like MySQL and PostgreSQL in these instances, especially when dealing with large datasets like Big Data.

Also worth noting is the lack of any Database as a Service (DBaaS) offering from any major cloud provider. With the advent of the public cloud, use of PaaS services (like DBaaS) by developers and DevOps teams have become common place. Lack of a managed service offering from top public cloud providers means that the common management tasks must be the responsibility of the DB Admin thus increasing OPEX costs.

Ownership, support, and key customers

SQLite is an open-source database maintained by a group of developers . For community support, it offers a public mailing list and also offers paid professional support . Some of the key customers of SQLite are Facebook, Google, and Apple.

MySQL

Overview and features

MySQL is one of the most popular open-source and large-scale RDBMS systems out there. Unlike SQLite, it employs a server/client architecture that consists of a multi-threaded SQL server. This multi-threaded nature of MySQL allows for greater performance as the kernel threads can easily utilize multiple CPUs. The database is written in C and C++ and supports various platforms like Windows Server Operating Systems and Linux distros like RHEL 7 and Ubuntu. It also adheres to the ACID system for transaction consistency and provides various Connectors and APIs like C, C++, Java, PHP, etc.

Мастер Йода рекомендует:  Гостевая книга на Perl

Scalability, security, and replication are some of the key features that make MySQL one of the most popular choices in enterprise applications:

  • Security features include MySQL Access Privilege System which provides user authentication, user account management system and encrypted connections using SSL.
  • MySQL offers replication from master to slave and master to master which can prove useful while scaling out reads, useful as a backup solution or even failover scenarios in case of downtime. MySQL also has commercial products which have more extensive features.
  • The MySQL Enterprise edition, for example, has additional features like MySQL Transparent Data Encryption (TDE), MySQL Enterprise Backup, and MySQL document store.
  • MySQL also offers an embedded multi-threaded library which provides a smaller footprint for use in embedded and IoT systems.

Advantages and use cases

Apart from having several enterprise features, another major differentiation between MySQL and SQLite is MySQL’s support for multi-user features. This, along with the enterprise features and scalability, makes it a perfect candidate for distributed applications.

MySQL holds an edge over PostgreSQL for simple read-heavy operations when it comes to throughput and performance. It is also much simpler to install and use and has a broader community compared to PostgreSQL.

The ease of use and manageability makes it a great tool for websites, web applications, OLTP applications and is an important part of the LAMP stack . MySQL 8 has also introduced NoSQL features which brings it on par with PostgreSQL.

Disadvantages

As MySQL moves old data to a separate area called rollback segments, bulk INSERTs can have an adverse impact on performance. This is where PostgreSQL shines. It also does not work well with long-running SELECTs and is best suited to smaller SELECTs especially the ones covering clustered index. Some of the other disadvantages include a lack of full-text search and slow concurrent read-writes.

Ownership, support, and key customers

MySQL is owned and maintained by Oracle. Community support is maintained through forums and premier support can be obtained by purchasing commercial products. Some of the major customers of MySQL are Facebook, GitHub, and YouTube.

PostgreSQL

Overview and features

PostgreSQL is an open-source object RDBMS with special emphasis on extensibility and standards compliance. Like MySQL, PostgreSQL uses a client/server database model and the server process that handles the client communications, manages the database files and operations, is known as the postgres process.

PostgreSQL handles concurrent client sessions by creating (“forking”) a new process for each connection. This process is separate from the master postgres process and is created and destroyed during the lifetime of the client connection. Written in C, Postgres is ACID compliant and supports functions and stored procedures. Unlike MySQL, PostgreSQL supports materialized views (cached views) resulting in faster frequent access to big and active tables.

Like MySQL, PostgreSQL also has several advanced features like security and replication. PostgreSQL relies on synchronous replication between the master and the slave database. Apart from providing user access control, host-based access control, and user authentication, PostgreSQL also natively provides the capability to encrypt client/server communications using SSL. Full ACID compliance is native to PostgreSQL whereas it is present in InnoDB and NDB Cluster programs for MySQL.

PostgreSQL uses a technology known as Multiversion Concurrency Control or MVCC for maintaining data consistency during concurrent access of data. This technology is superior to just using locks for concurrency as it minimizes lock contention in multi-user environments thereby significantly improving performance. For backward compatibility or applications which want the classic lock technology, PostgreSQL also allows table and row locking technologies to provide concurrency. On the contrary, MySQL only supports MVCC in InnoDB instances.

Advantages and use cases

Because of its superior parallel processing capability, PostgreSQL comes out on top (compared to MySQL) when running long SELECTs like in analytical applications. PostgreSQL has always been considered the best for analytical processes such as data warehousing. A prime example is Timescale DB , which can allow you to INSERT 1 million records per second. Its use case also includes OLTP applications and applications in the financial industry due to strong adherence to ACID compliance. The extensibility of the PostgreSQL database also makes it a perfect candidate for research and scientific projects.

Disadvantages

Although the differences between PostgreSQL and MySQL are not as great as they once were, it is worth noting that the storage engine of PostgreSQL still needs extensive work and as per PostgreSQL , it is suboptimal in certain use cases and may even need to adopt features from engines like InnoDB.

When compared to MySQL, PostgreSQL is more power hungry. As PostgreSQL forks off a process for new client connections, it can take up to 10 MB per connection . This model can take up a lot of memory as concurrent client connection goes when compared to the thread-per-connection model of MySQL.

Another big disadvantage can be seen during frequent UPDATEs, where due to no support for clustered indexes, PostgreSQL can have a huge adverse impact on performance compared to MySQL databases.

Ownership, support, and key customers

PostgreSQL is open source with the source code published on GitHub and is maintained by the PostgreSQL Global Development Group. PostgreSQL has both options of community and commercial support. Community Support is in the form of mailing lists and IRC while the list of commercial support providers can be found here . Although PostgreSQL has a smaller market share compared to MySQL, it has an impressive list of clients like AWS RedShift, Instagram, ViaSat, and Cloudera.

Summary

In terms of popularity, MySQL is way ahead of PostgreSQL and SQLite, but one must consider the use case and features before making it the de-facto choice.

Features like strong ACID compliance and concurrency would make PostgreSQL a strong contender. SQLite, on the other hand would excel in embedded and IoT applications where the small footprint of the SQLite library would give it a huge advantage over its competitors. If you are looking at a multi-user application, then SQLite would be a poor choice and you must hash out the pros and cons of PostgreSQL and MySQL.

To make this choice easier for you, we have compiled a list of comparisons between SQLite, MySQL, and PostgreSQL that might help you make your decision.

Типы и структура СУБД: три богатыря

Реляционные системы управления данных применяются уже очень давно. Их популярность выросла благодаря успешным реализациям в системах управления, которые оказались весьма удобными для работы с данными разных типов. В нашей заметке мы поговорим от «трёх богатырях» в СУБД: MySQL, SQLite и PostgreSQL. Сравним их, рассмотрим преимущества, недостатки, поддерживаемые типы данных.

Пару слов о системах управления базами данных

База данных — это логически смоделированное хранилище различных типов данных. При этом каждая БД, если она не является бессхемной, следует модели, задающей определённую структуру обработки этих самых данных. Если говорить о системах управления (СУБД), то под данными терминами понимают приложения (либо библиотеки), управляющие базами данных разных типов, размеров и форм.

Реляционные СУБД

Эти СУБД реализуют реляционную модель обработки данных, определяя все хранимые данные как набор связанных атрибутов и записей в таблице. Каждый столбец (или атрибут) содержит определённый тип информации. Каждая запись в такой базе данных обладает уникальным ключом, передаётся в строку таблицы, плюс её атрибуты отображаются в столбцах данной таблицы.

Отношения и типы данных в СУБД

Отношения определяются в качестве математических множеств, содержащих наборы атрибутов, отображающих хранящуюся информацию. Любой элемент, формирующий запись, обязан удовлетворять конкретному типу данных (дате, целому числу и т. п.).

Разные СУБД применяют различные типы данных, которые не всегда бывают взаимозаменяемыми. Такого рода ограничения — обычное дело для реляционных баз данных, о которых мы сегодня говорим. По сути, они и формируют суть отношений.

Самые популярные СУБД (РСУБД)

Наиболее популярными реляционными СУБД являются: • SQLite — мощная встраиваемая СУБД; • MySQL — наиболее часто используемая и популярная СУБД; • PostgreSQL — гибкая и более продвинутая СУБД.

Поговорим про каждую из этих СУБД подробнее.

SQLite

Компактная встраиваемая система управления базами данных SQLite представляет собой библиотеку. Будучи файловой базой данных, она имеет прекрасный набор инструментария для более простой, если сравнивать с базами данных для серверов, обработки практически любых видов данных.

Если приложение использует эту СУБД, связь производится с помощью прямых и функциональных вызовов файлов, содержащих данные, а не какого-либо интерфейса.

Таким образом повышается как скорость, так и производительность операций.

Поддерживаемые типы данных:

— NULL (значение NULL); — INTEGER (целое число со знаком); — REAL (число с плавающей запятой); — TEXT (текстовая строка); — BLOB (тип данных, хранится в том же виде, в каком был получен).

Более подробную информацию об обрабатываемых типах данных смотрите по ссылке на официальную документацию.

Преимущества СУБД SQLite:

— хранится лишь в одном файле — это облегчает перемещение; — стандартизирована и использует SQL; — прекрасно подходит не только для разработки, но и для тестирования, обладает расширенным функционалом, оставаясь простой в работе.

Минусы:

— отсутствие пользовательского управления (в продвинутых базах данных можно управлять связями в таблицах по системе привилегий, в СУБД SQLite такая функция отсутствует); — невозможность дополнительной настройки (эту СУБД вы не сделаете производительнее, «поковырявшись» в настройках).

О целесообразности использования:

— встроенные приложения (любые портируемые приложения, не предназначенные для масштабирования: игры, мобильные и однопользовательские приложения); — системы доступа к дисковой памяти (программы, часто производящие прямые операции по чтению и записи на диск, при переводе на эту СУБД повышают свою производительность); — тестирование.

В некоторых случаях эту систему управления базами данных использовать не рекомендуется: — многопользовательские приложения (для них больше подходит полнофункциональные СУБД, к примеру, MySQL); — программы записи больших объёмов данных (одно из ограничений SQLite — операции записи, то есть допускается единовременное исполнение только одной операции записи).

MySQL

Популярнейшая база данных. Разобраться в ней довольно просто, плюс полно информации в сети. Да, СУБД MySQL не пытается реализовать SQL-стандарты в полной мере, зато предлагает широчайший функционал. При этом приложения взаимодействуют с базой данных посредством процесса-демона.

Поддерживаемые типы данных:

— TINYINT: очень маленькое целое; — MEDIUMINT: целое среднего размера; — SMALLINT: маленькое целое; — INT либо INTEGER: целое нормального размера; — FLOAT: число с плавающей запятой (одинарная точность); — BIGINT: большое целое; — DOUBLE, REAL, DOUBLE PRECISION: число с плавающей запятой (2-я точность); — DECIMAL, NUMERIC: число с плавающей запятой; — DATETIME: комбинация времени и даты; — DATE: дата; — TIME: время; — TIMESTAMP: отметка времени; — YEAR: год (формат YY либо YYYY); — CHAR: фиксированная строка, дополняется пробелами справа до максимальной длины; — SET: множества; — ENUM: перечисление; — VARCHAR: строка переменной длины и прочие.

Преимущества:

— легкая и простая установка, плюс много сторонних инструментов, облегчающих работу с базами данных; — расширенная функциональность (поддерживается большая часть SQL-функционала); — много функций, обеспечивающих безопасность данных; — мощность, масштабируемость (хорошо работает с большими объёмами данных); — скорость (пренебрежение некоторыми стандартами даёт возможность этой СУБД работать производительнее).

Недостатки:

— всё, что угодно, вы всё же не сделаете, так как определённые ограничения функциональности всё же присутствуют; — ряд операций реализован не так надёжно, как в других системах управления базами данных; — застой в разработке (хотя это и open-source-продукт, работа над СУБД и скорость её развития оставляют желать лучшего).

Рекомендации по применению:

— распределённые операции (если нужен больший функционал, чем имеется в SQLite, используйте MySQL); — приложения и веб-сайты (СУБД отличается гибкостью, возможна работа с большинством веб-ресурсов); — кастомные решения (если работаете над специфичным продуктом, эта СУБД вам подойдёт за счёт расширенного спектра настроек и режимов работы).

Но если требуется полная SQL-совместимость, эта система управления базами данных не подойдёт, т. к. возможны проблемы в процессе интеграции с другими СУБД. Также проблемы могут вызывать одновременные операции чтения-записи. Если неправильно выбрать движок, может недоставать ряда функций.

PostgreSQL

Наиболее продвинутая система управления базами данных, которая ориентируется на расширяемость и полное соответствие SQL-стандартам ANSI/ISO. Отличается от других систем объектно-ориентированным функционалом и полной поддержкой концепта ACID.

Система данных основана на мощной технологии Postgres, поэтому она хорошо справляется с обработкой нескольких заданий одновременно. Поддержка конкурентности реализована посредством MVCC, что тоже обеспечивает совместимость с ACID.

Данная СУБД не настолько популярна, как MySQL. Тем не менее существует множество сторонних библиотек и инструментов, облегчающих работу с этой системой управления базами данных.

Поддерживаемые типы данных:

— bigint: знаковое 8-байтное целое; — boolean: булевская величина; — bigserial: инкрементируемое (автоматически) 8-битное целое; — box: прямоугольник на плоскости; — bit [(n)]: битовая строка (имеет фиксированную длину); — bit varying [(n)]: тоже битовая строка, но уже переменной длины; — circle: круг на плоскости; — bytea: бинарные данные; — date: календарная дата; — character varying [(n)]: строка символов, имеющая фиксированную длину; — character [(n)]: аналогично, но переменной длины; — integer: знаковое 4-байтное целое; — cidr: сетевой адрес IPv6 либо IPv4; — inet: адрес хоста IPv6 либо IPv4; — macaddr: MAC-адрес; — polygon: многоугольник на плоскости; — line: бесконечная прямая на плоскости; — lseg: отрезок на плоскости; — xml: XML-данные; — path: геометрический путь; — money: денежная величина и прочие типы.

Достоинства:

— полная SQL-совместимость; — поддержка опытным профессиональным сообществом; — поддержка сторонними организациями; — расширяемость (систему управления базами данных можно программно расширить, используя хранимые процедуры); — объектная ориентированность (СУБД PostgreSQL является не только реляционной, но и объектно-ориентированной).

Минусы:

— в простых операциях чтения эта СУБД иногда уступает конкурентам; — система данных довольна сложна, поэтому не очень популярна; — сложно найти подходящего провайдера.

В каких случаях желательно использовать эту СУБД:

— когда в приоритете целостность и надёжность данных; — когда база данных должна выполнять сложные процедуры; — если в будущем планируется перенести базу данных на другой сервер, другое решение.

Есть и «противопоказания» применения PostgreSQL: — если всё, что вам нужно — быстрые операции чтения, однозначно не стоит брать эту СУБД; — когда повышенная надёжность, ACID и т. д. вам не требуются, то данная СУБД — это стрельба из пушки по воробьям.

Статья является свободным переводом отсюда, поэтому можете почитать её в оригинале.

Базы данных и СУБД

Введение

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

База данных

База данных представляет собой определенный набор данных, которые, как правило, связаны объединяющим признаком либо свойством (или несколькими). Эти данные упорядочены, например, по алфавиту. Обилие различных данных, которые могут быть помещены в единую базу, ведет к множеству вариаций того, что может быть записано: личные данные пользователей, записи, даты, заказы и так далее. К примеру, если у вас интернет-магазин, то база данных вашего сайта может содержать прайс-листы, каталог товаров или услуг, отчеты, статистику и информацию о клиентах.

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

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

Однако это не значит, что база данных обязательно должна быть у каждого сайта – к примеру, если у вас сайт-визитка, и никакой новой информации вы на сайте не размещаете, то база данных вам будет попросту не нужна. Самый легкий способ сделать простой сайт — создать сайт в конструкторе.

Система управления базами данных

Как можно догадаться уже из названия, система управления базами данных (или сокращенно СУБД) представляет собой программное обеспечение, которое используется для создания и работы с базами данных. Главная функция СУБД – это управление данными (которые могут быть как во внешней, так и в оперативной памяти). СУБД обязательно поддерживает языки баз данных, а также отвечает за копирование и восстановление данных после каких-либо сбоев.

Что касается классификации баз данных, то тут возможны различные варианты.
К примеру, можно разделить базы по модели данных: иерархические (имеют древовидную структуру), сетевые (по своей структуре похожи на иерархические), реляционные (используются для управления реляционными базами данных), объектно-ориентированные (используются для объектной модели данных) и объектно-реляционные (некое слияние реляционного и объектно-ориентированного вида баз данных).

Либо, если деление идет по тому, где размещается СУБД, их можно разделить на локальные – вся СУБД размещается на одном компьютере, и распределенные – части системы управления базами данных находятся на нескольких компьютерах.

Файл-серверные, клиент-серверные и встраиваемые – такие названия носят СУБД, если разделить их по способу доступа к базам данных. Файл-серверные СУБД на данный момент уже считаются устаревшими; в основном идет использование клиент-серверных (СУБД, которые располагаются на сервере вместе с самой базой данных) и встраиваемых (не требующих отдельной установки) систем.

Информация, которая хранится в базах данных, не ограничивается только текстовыми или графическими файлами – современные версии СУБД поддерживают также форматы аудио и видеофайлов.

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

Зачем же нужны эти СУБД? Помимо основной своей функции – хранения и систематизации огромного количества информации – они позволяют быстро обрабатывать клиентские запросы и выдавать свежую и актуальную информацию.

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

Реляционные СУБД и язык SQL

Реляционные и объектно-реляционные СУБД являются одними из самых распространенных систем. Они представляют собой таблицы, у которых каждый столбец (который называется “field” или «поле») упорядочен и имеет определенное уникальное название. Последовательность строк (их называют “records” или «записи») определяется последовательностью ввода информации в таблицу. При этом обрабатывание столбцов и строк может происходить в любом порядке. Таблицы с данными связаны между собой специальными отношениями, благодаря чему с данными из разных таблиц можно работать – к примеру, объединять их – при помощи одного запроса.

Для управления реляционными базами данных применяется особый язык программирования – SQL. Сокращение расшифровывается как “Structured query language”, в переводе на русский «язык структурированных запросов».

Команды, которые используются в SQL, делятся на те, которые манипулируют данными, те, которые определяют данные, и те, которые управляют данными.

Схема работы с базой данных выглядит следующим образом:

Далее я расскажу о каждой из основных СУБД, которые сейчас чаще всего используются при создании веб-проектов.

MySQL

MySQL является одной из самых популярных и распространенных СУБД, которая используется во многих компаниях (например, Facebook, Wikipedia, Twitter, LinkedIn, Alibaba и других). MySQL представляет собой реляционную СУБД, которая относится к свободному программному обеспечению: она распространяется на условиях GNU Public License. Как правило, эту систему управления базами данных определяют как хорошую, быструю и гибкую систему, рекомендованную к применению в небольших или средних проектах. У MySQL есть множество различных преимуществ. Например, она поддерживает различные типы таблиц: как известные MyISAM и InnoDB, так и более экзотичные HEAP и MERGE; кроме того, количество поддерживаемых типов постоянно растет. MySQL выполняет все команды быстро – возможно, сейчас это самая быстрая СУБД из всех существующих. С этой системой управления базами данных может одновременно работать неограниченное количество пользователей, а число строк в таблицах может быть равно 50 миллионам.

Так как в сравнении с некоторыми другими СУБД MySQL поддерживает меньшее количество возможностей, то и работать с ней значительно проще, чем, к примеру, с PostgreSQL, о которой будет рассказано ниже.

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

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

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

PostgreSQL

Эта свободно распространяемая система управления базами данных относится к объектно-реляционному типу СУБД. Как и в случае с MySQL, работа с PostgreSQL основывается на языке SQL, однако, в отличие от MySQL, PostgreSQL поддерживает стандарт SQL-2011. Эта СУБД не имеет ограничений ни по максимальному размеру базы данных, ни по максимуму записей или индексов в таблице.

Если говорить о преимуществах PostgreSQL, то, безусловно, это надежность транзакций и репликаций, возможность наследования и легкая расширяемость. PostgreSQL поддерживает различные расширения и варианты языков программирования, такие как PL/Perl, PL/Python и PL/Java. Также есть возможность загружать C-совместимые модули.

Многие отмечают, что в отличие от MySQL данная СУБД имеет хорошую и подробную документацию, которая дает ответы практически на все вопросы.

О том, что это более масштабная, чем MySQL, СУБД, говорит и тот факт, что PostgreSQL периодически сравнивают с такой мощной системой управления данных, как Oracle.

Все это позволяет говорить о PostgreSQL как об одной из самых продвинутых СУБД на данный момент.

SQLite

На данный момент это одна из самых компактных СУБД; также она является встраиваемой и реляционной. SQLite позволяет хранить все данные в одном файле и, благодаря своему небольшому объему, отличается завидным быстродействием. SQLite значительно отличается от MySQL и PostgreSQL своей структурой: движок и интерфейс этой СУБД находятся в одной библиотеке – и именно это позволяет выполнять все запросы очень быстро. Другие СУБД (MySQL, PostgreSQL, Oracle и т.д.) используют парадигму клиент-сервер, когда взаимодействие происходит через сетевой протокол.

Из недостатков можно отметить отсутствие системы пользователей и возможности увеличения производительности.

SQLite можно посоветовать к использованию в проектах, где нужно иметь возможность быстро перенести приложение, и нет необходимости в масштабируемости.

Oracle

Эта СУБД относится к объектно-реляционному типу. Название произошло от названия разработавшей эту систему фирмы Oracle. Наравне с SQL СУБД использует процедурное расширение под названием PL/SQL, а также язык Java.

Oracle – это система, отличающаяся стабильностью уже не один десяток лет, поэтому ее выбирают крупные корпорации, для которых важна надежность восстановления после сбоев, отлаженная процедура бэкапа, возможность масштабирования и другие ценные возможности. К тому же эта СУБД обеспечивает отличную безопасность и эффектную защиту данных.

В отличие от других СУБД, стоимость покупки и использования Oracle достаточно высока, и именно это зачастую является значимым препятствием к ее использованию в небольших фирмах. Вероятно, именно это также является причиной того, что в рейтинге СУБД на 2020 год в России Oracle находится лишь на 6-м месте.

MongoDB

Эта СУБД отличается тем, что она предназначена для хранения иерархических структур данных, и поэтому ее называют документоориентированной (она представляет собой документное хранилище без использования таблиц или схем). MongoDB имеет открытый исходный код.

Используя идентификатор, вы можете производить быстрые операции над объектом; эта СУБД хорошо показывает себя и при сложных взаимодействиях. В первую очередь речь идет о быстродействии – в некоторых случаях приложение, написанное на MongoDB, будет работать быстрее, чем такое же приложение, использующее SQL, т.к. MongoDB относится к классу СУБД NoSQL и вместо SQL пользуется объектным языком запросов, который значительно легче SQL.

Однако этот язык имеет и свои ограничения, а поэтому MongoDB следует использовать в случаях, когда нет необходимости в сложных и нетривиальных выборках.

Вместо заключения

Выбор СУБД – это важный момент при создании своего ресурса. Отталкивайтесь от своих задач и возможностей, пробуйте и экспериментируйте, чтобы найти именно тот вариант, который будет наиболее подходящим.

Добавить комментарий