Что из нижеперечисленного реализовано в современных субд

от admin

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

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

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

Интересуетесь максимально актуальными данными? Обратите внимание на две более свежие статьи «Анализ популярных реляционных и нереляционных систем управления базами данных» (с) 2022 г., которые опубликованы в журнале Системный администратор.

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

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

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

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

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

1. Oracle 12c

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

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

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

Достоинства

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

Недостатки

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

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

2. MySQL

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

Разработку и поддержку 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 Server 2016, Microsoft адаптировала продукт для операционной системы Linux, а на платформе Windows он работал изначально.

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

Достоинства

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

Недостатки

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

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

4. PostgreSQL

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

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

Достоинства

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

Недостатки

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

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

5. MongoDB

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

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

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

Достоинства

  • Скорость и простота в использовании
  • Движок поддерживает 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 марта 2016 года по решению Экспертного совета по российскому программному обеспечению при Минкомсвязи России СУБД ЛИНТЕР включена в единый реестр российских программ для электронных вычислительных машин и баз данных (реестр российского ПО).

Репликация асинхронная (в том числе и двунаправленная), возможна репликация с другими БД через 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 течением времени картина распространенности СУБД изменилась и в 2017 году приняла следующий вид (рис. 2).

популярность современных СУБД

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

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

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

Понятия база данных (БД) и система управления базами данных (СУБД). Модели данных. Структура базы данных, поля и записи. Свойства полей БД. Типы данных. Режимы работы для реляционных БД. Объекты БД и их назначение. Работа с СУБД Мicrosoft Ассеss.

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

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

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

отбор отображаемых данных в соответствии с заданным критерием;

оформление и последующая выдача на устройство вывода или передача по каналам связи.

В мире существует множество СУБД. Несмотря на то, что они могут по-разному работать с разными объектами и предоставляют пользова­телю различные функции и средства, большинство СУБД опираются на единый устоявшийся комплекс основных понятий. Это дает нам возможность рассмотреть одну систему и обобщить ее понятия, приемы и методы на весь класс СУБД. В качестве такого учебного объекта мы выберем СУБД Мicrosoft Ассеss, входящую в пакет Мicrosoft Оffice. В тех случаях, когда конкретные приемы операций зависят от используемой версии программы, мы будем опираться на наиболее распространенную версию Мicrosoft Ассеss 2000, хотя в основном речь будет идти о таких обобщенных понятиях и методах, для которых различия между конкретными версиями программ второстепенны.

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

Реляционная модельявляется простейшей и наиболее привычной формой представления данных в виде таблицы.

В теории множеств таблице соответствует термин отношение (relation), который и дал название модели. Для нее имеется развитый математический аппарат — реляционное исчисление и реляционная алгебра, где для баз данных (отношений) определены такие хорошо известные теоретико-множественные операции, как объединение, вычитание, пересечение, соединение и др.

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

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

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

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

Читать:
Как изменить автора в презентации powerpoint

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

Структура простейшей базы данных

Сразу поясним, что если в базе нет никаких данных (пустая база), то это все равно полноценная база данных. Хотя данных в базе и нет, но информация в ней все-таки есть — это структура базы. Она определяет методы занесения данных и хранения их в базе. Простейший «некомпьютерный» вариант базы данных — деловой ежедневник, в котором каждому календарному дню выделено по странице. Даже если в нем не записано ни строки, он не перестает быть ежедневником, поскольку имеет структуру, четко отличающую его от записных книжек, рабочих тетрадей и прочей писчебумажной продукции.

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

Мы знаем, что структуру двумерной таблицы образуют столбцы и строки. Их анало­гами в структуре простейшей БД являются поля и записи. Если записей в таблице пока нет, значит, ее структура образована только набором полей. Изменив состав полей базовой таблицы (или их свойства), мы изменяем структуру БД и, соответственно, получаем новую БД.

Свойства полей базы данных

Поля БД не просто определяют структуру базы — они еще определяют групповые свойства данных, записываемых в ячейки, принадлежащие каждому из полей. Ниже перечислены основные свойства полей таблиц БД на примере СУБД Мicrosoft Ассеss:

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

Тип поля— определяет тип данных, которые могут содержаться в данном поле.

Размер поля— определяет предельную длину (в символах) данных, которые могут размещаться в данном поле.

Формат поля— определяет способ форматирования данных в ячейках, принад­лежащих полю.

Маска ввода— определяет форму, в которой вводятся данные в поле (средство автоматизации ввода данных).

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

Значение по умолчанию— то значение, которое вводится в ячейки поля авто­матически (средство автоматизации ввода данных).

Условие на значение— ограничение, используемое для проверки правильности ввода данных (средство автоматизации ввода, которое используется, как пра­вило, для данных, имеющих числовой тип, денежный тип или тип даты).

Сообщение об ошибке— текстовое сообщение, которое выдается автоматически при попытке ввода в поле ошибочных данных (проверка ошибочности выпол­няется автоматически, если задано свойство Условие на значение).

Обязательное поле— свойство, определяющее обязательность заполнения дан­ного поля при наполнении базы;

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

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

Следует обратить внимание на то, что поскольку в разных полях могут содержаться данные разного типа, то и свойства у полей могут разли­чаться в зависимости от типа данных. Так, например, список вышеуказанных свойств полей относится в основном к полям текстового типа. Поля других типов могут иметь или не иметь эти свойства, но могут добавлять к ним и свои. Например, для данных, представляющих действительные числа, важным свойством является количество знаков после десятичной запятой. С другой стороны, для полей, исполь­зуемых для хранения рисунков, звукозаписей, видеоклипов и других объектов ОLЕ, большинство вышеуказанных свойств не имеют смысла.

Типы данных

С основными типами данныхмы уже знакомы. Так, например, при изучении электрон­ных таблиц Мicrosoft Ехсеl мы видели, что они работают с тремя типами данных: текстами, числами и формулами. Таблицы БД, как правило, допускают работу с гораздо большим количеством разных типов данных. БД Мicrosoft Ассеss работают с типами данных, которые представлены в таблице 4.1.

Таблица 4.1. Типы данных СУБД Мicrosoft Ассеss

Название типа

Тип данных, используемый для хранения обычного неформатиро­ванного текста ограниченного размера (до 255 символов).

Специальный тип данных для хранения больших объемов текста (до 65 535 символов). Физически текст не хранится в поле. Он хранится в другом месте базы данных, а в поле хранится указатель на него.

Тип данных для хранения действительных чисел.

Тип данных для хранения календарных дат и текущего времени.

Тип данных для хранения денежных сумм.

Специальный тип данных для уникальных (не повторяющихся в поле) натуральных чисел с автоматическим наращиванием. Естественное использо­вание — для порядковой нумерации записей.

Величины, способные принимать только два значения, да/нет или 1/0.

OLE Object (Поле объекта OLE)

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

Ссылки, дающие возможность открывать объект Мicrosoft Access (таблицу, запрос…), файл другого приложения или Web-страницу.

Какую СУБД выбрать и почему

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

Какие СУБД существуют и как их выбирать

Систем управления базами данных очень много. Но реально используют перечисленные ниже:

  1. Реляционные
  2. Key-value
  3. Документные
  4. Графовые
  5. Колоночные
  6. Time Series
  7. Spatial
  8. Search engines
  9. Объектные

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

  • Тип проекта. Для небольшого pet-project может подойти любая встраиваемая или бесплатная СУБД. Коммерческий проект требует от СУБД соблюдения стандартов безопасности, производительности, скорости работы и т. д. Здесь возможностей бесплатных СУБД может не хватить.
  • Что будет храниться. Некоторые СУБД лучше работают с текстом, другие заточены под медиаконтент. Если знать, что будет храниться в БД, выбор СУБД станет проще.
  • Объём. В технической документации для каждой СУБД указаны лимиты на объём одного файла, таблицы и других объектов. В случае, когда нужно хранить большие массивы данных, заранее проверьте способность системы управления базами данных «переваривать» такие объёмы.
  • Нагрузка и масштабируемость. Важно заранее предусмотреть возможный рост нагрузки, который неизбежно возникнет при расширении компании. Бесконечно наращивать оперативную память, процессоры и другие ресурсы не получится, поэтому выбирайте СУБД с прицелом на способность переносить текущие и двукратно увеличенные нагрузки, а также масштабироваться в будущем.
  • Файловая или серверная. Ваша база данных может работать по сети и локально. От этого зависит выбор СУБД. Они бывают файловые и серверные.
  • Отказоустойчивость и безопасность. Для некоторых проектов отказоустойчивость — критично важный параметр. Что будет, если упадёт БД банка, объяснять не нужно. Поэтому ориентируйтесь на реальные потребности проекта в уровне отказоустойчивости СУБД. Аналогично и с безопасностью — сертификаты, шифрование, дополнительные возможности нужны для крупных проектов. Небольшому достаточно и менее «навороченной» СУБД.
  • Стоимость. Существуют бесплатные опенсорсные решения, которые дают много возможностей, но требуют самостоятельной поддержки. Есть платные СУБД с поддержкой от разработчика. Выбор зависит от бюджета проекта.

Далее рассмотрим типы СУБД и их особенности.

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

Классическое решение, появившееся в 1979 году благодаря компании Oracle. Реляционные БД построены на отношениях между её объектами и пригодны для обработки небольших транзакций с обилием вставок и минимальным временем отклика. Например, Oracle Database подойдёт для коммерческих проектов, где требуется производительность и есть ресурсы для администрирования этой дорогой и сложной СУБД.

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

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

Также хорошо известны Microsoft SQL, PostgreSQL. Получается, что нельзя ответит на вопрос, какая СУБД лучше, MySQL или PostgreSQL. Они обе хорошо для своих задач.

Документные

Документно-ориентированные СУБД хранят документы — структурированные тексты, имеющие конкретный синтаксис. Это популярная разновидность NoSQL СУБД, которая подходит для проектов, где в таблицах хранят объекты с разной структурой (списки, словари). Нельзя сказать, что это база для систем документооборота, хотя Документные СУБД сохраняют состояние, а не поведение. Зато они поддерживают проверку схему и сейчас активно развиваются. Среди популярных СУБД этого типа — CouchDB, MongoDB, Amazon DocumentDB.

Графовые

Графовые СУБД

Особые СУБД, предназначенные для хранения информации, связанной с графами (узлы, вершины, связи между узлами). Хорошо подходят для социальных сетей, где требуется хранить связи между пользователями по разным критериям. Среди популярных СУБД этого типа можно перечислить Neo4j, Amazon Neptune, InfiniteGraph, InfoGrid.

Колоночные

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

Колоночные СУБД удобны тем, что позволяют действительно быстро выполнять сложные аналитические запросы на больших объёмах данных. При этом структура таблиц с данными легко меняются, а эффективная компрессия позволяет экономить занимаемый БД объём памяти. Среди популярных СУБД этого типа можно назвать Vertica, ClickHouse, Google BigTable, InfoBright, Cassandra, SAP IQ.

Key-value

СУБД Key-value (также её называют «ключ-значение») — одна из самых из самых простых систем управления базами данных. Фактически она представляет собой таблицу с уникальным ключом и привязанным к нему значением. СУБД Key-value очень быстрые, поэтому их часто используют для кэширования данных и для брокеров сообщений. Некоторые типы таких СУБД позволяют работать полностью в памяти и задавать срок жизни записи, удаляя устаревшие данные. Среди популярных Key-value СУБД — Redis и Memcached.

Time Series

СУБД данного типа заточены под хранение данных временных меток или рядов. Например, данные собранные с датчиков контроля движения, метрик JVM, сетевые данные, ответы API и т. д. Информация хранится с отметками времени. Причём эти отметки индексируются и пишутся так, чтобы сведения можно было запрашивать быстрее, чем при работе с реляционными БД. Среди популярных СУБД этого типа можно вспомнить InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB.

Spatial

СУБД данного типа сконфигурированы для хранения геометрически ориентированных объектов: простых (линии, точки, многоугольники) и сложных (линейные сети, 3D-объекты). В них можно проводить с объектами разные операции — создания, трансформации, измерения, вычисления и пр. Такого рода СУБД обладают собственным типизированным SQL/MM языком. Среди популярных СУБД этого типа можно вспомнить Oracle Spatial, Microsoft SQL, PostGIS, SpatialLite.

Search engines

Этот тип СУБД необходим для организации полнотекстового поиска по разным данным (email, RSS-feed, JSON, XML, CSV), позволяет искать данные из других БД, по документам PDF и Microsoft Office. Такие СУБД используют инвертированные индексы, чтобы искать практически в режиме реального времени. Среди популярных СУБД этого типа можно назвать Apache Solr, Elasticsearch, Splunk.

Объектные

Данный тип СУБД предназначен для хранения и работы с объектами, у которых имеются свойства и методы. Основная задача таких СУБД заключается в избавлении разработчиков, использующих ООП, от необходимости трансформировать объекты в таблицы/строки и обратно. В объектных СУБД реализованы инкапсуляция и полиморфизм. Среди популярных СУБД этого типа можно назвать MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB.

  • MS SQL Web;
  • MS SQL Standard;
  • PostgreSQL (typical);
  • PostgreSQL (high availability);
  • MySQL (typical);
  • MySQL (high availability).

Когда выбирать

Популярные СУБД данного типа

Нужна транзакционность; высокая нормализация; большая доля операций на вставку

Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2, SQLite

Задачи кэширования и брокеры сообщений

Redis, Memcached, etcd

Для хранения объектов в одной сущности, но с разной структурой; хранение структур на основе JSON

Couchbase, MongoDB, Amazon DocumentDB

Задачи подобные социальным сетям; системы оценок и рекомендаций

Neo4j, Amazon Neptune, InfiniteGraph, TigerGraph

Хранилища данных; выборки со сложными аналитическими вычислениями; количество строк в таблице превышает сотни миллионов

Vertica, ClickHouse, Google BigQuery, Sybase \ SAP IQ, InfoBright

Системы мониторинга, сбора телеметрии, и финансовые системы, с привязкой к временным меткам или временным рядам

InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB

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

MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB

Какую СУБД выбрать и почему? (Статья 1)

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

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

Нужно обязательно сделать ремарку, что некоторые крупные производители, имеют в своем арсенале несколько типов СУБД, как в виде отдельных продуктов, так и в виде внутренней реализации. Например, у Oracle на самом деле чего только нет, начиная с классической реляционной СУБД, продолжая с отдельным продуктом Oracle NoSQL Database, который может использоваться и как документная, и как колоночная, и как ключ-значение. Отдельное решение от того же Oracle, Autonomous Data Warehouse – это уже специализированное решение для хранилищ данных. Еще один отдельный продукт от Oracle – Oracle Graph Server для работы с графами, и еще много другого. Этому можно посвятить отдельную серию статей.

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

Начнем по порядку, классические, реляционные СУБД чаще всего используются для построения решений OLTP (Online Transaction Processing). В таких решениях СУБД работает с небольшими по размерам транзакциями, но идущими большим потоком, и при этом от системы требуется минимальное время отклика, а так же возможность, при определенных условиях, отменить любые изменения выполняемых в рамках транзакции. Если вы строите систему, в рамках которой требуется хранить значительное количество сущностей (таблиц), с различными типами связей между ними (один-к-одному, один-к-многим, многие-ко-многим), то это скорее всего про реляционные СУБД.

Наиболее известные СУБД такого типа — Oracle, Microsoft SQL, PostgreSQL, MySQL.

Когда выбирать реляционную СУБД

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

Когда не выбирать реляционную СУБД

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

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

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

СУБД типа ключ-значение

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

Наиболее известные СУБД такого типа — Redis и Memcached.

Когда выбирать СУБД ключ-значение

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

Когда не выбирать СУБД ключ-значение

Если вы предполагаете хранить в базе данных много сущностей (таблиц), а у сущностей будут сложные структуры с разными типами данных. Так же, если вы предполагаете делать из этой таблицы сложные запросы которые возвращают множества строк.

Документные СУБД

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

Иногда встречаются мнения что модель данных в документных БД похожа на модель данных в объектно-ориентированных базах данных. В этом есть доля правды, единственная реальная разница между ними заключается в том, что базы данных документов только сохраняют состояние, но не поведение.

Так же, само название «документо-ориентированная» подчас вводит в заблуждение, и мне встречались коллеги, которые считали, что это база для систем документооборота. Нет, это не так.

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

Известными представителями таких СУБД являются CouchDB, MongoDB, Amazon DocumentDB.

Когда выбирать документную СУБД

Если нужно хранить объекты в одной сущности, но с разной структурой. Если нужно хранит структуры, включая объекты, списки и словари, особенно в формате близкому к JSON.

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

Когда не выбирать документную СУБД

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

Графовые СУБД

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

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

Известные представители этого типа субд — Neo4j, Amazon Neptune, InfiniteGraph, InfoGrid.

Когда выбирать графовые СУБД

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

Когда не выбирать графовые СУБД

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

Колоночные СУБД

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

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

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

Яркие представители колоночных СУБД — Sybase IQ (ныне SAP IQ), Vertica, ClickHouse, Google BigTable, InfoBright, Cassandra.

Когда выбирать колоночные СУБД

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

Когда не выбирать колоночные СУБД

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

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

Итоги

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

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

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

В данной статье я намеренно не делаю акцент на выбор между облачными и on-premise решениями — эта тема одной из следующих статей.

Итак, в таблице представленной ниже, кратко собрано то, что описано выше в статье.

Тип СУБД

Когда выбирать

Примеры популярных СУБД

Нужна транзакционность; высокая нормализация; большая доля операций на вставку

Oracle, MySQL, Microsoft SQL Server, PostgreSQL

Задачи кэширования и брокеры сообщений

Для хранения объектов в одной сущности, но с разной структурой; хранение структур на основе JSON

CouchDB, MongoDB, Amazon DocumentDB

Задачи подобные социальным сетям; системы оценок и рекомендаций

Neo4j, Amazon Neptune, InfiniteGraph, InfoGrid

Хранилища данных; выборки со сложными аналитическими вычислениями; количество строк в таблице превышает сотни миллионов

Vertica, ClickHouse, Google BigTable, Sybase \ SAP IQ, InfoBright, Cassandra

Надеюсь данная статья оказалась полезной.

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

Похожие статьи