Редактирование: Система управления базами данных
Материал из Documentation.
Перейти к:
навигация
,
поиск
'''Система управления базами данных''' ('''СУБД''') — комплекс программ, позволяющих создать [[база данных|базу данных]] (БД) и манипулировать данными (вставлять, обновлять, удалять и выбирать). Обеспечивает безопасность, надёжность хранения и целостность данных, а также предоставляет средства для администрирования БД. СУБД с помощью компилятора языка запросов обрабатывает обращения к БД от пользователей, проверяет корректность поступающих операторов и на основе метаданных (сведения о составе данных) формирует одно или неск. процедурных представлений оператора (планов выполнения). Наиболее эффективный план исполняется в СУБД при помощи внутр. подсистемы (ядра СУБД), поддерживающей интерфейс доступа к данным на уровне их отд. элементов (записей). Ядро СУБД обеспечивает буферизацию данных — кэширование, синхронизацию доступа к данным и управление транзакциями (короткий во времени цикл взаимодействия объектов, включающий запрос — выполнение задания — ответ), а также журнализацию изменений БД (сохранение истории). Каждая СУБД основывается на некоторой модели данных (напр., реляционной). В большинстве совр. СУБД внешний интерфейс обычно основывается на использовании спец. языка (напр., [[SQL]], Structured Query Language — стандартный язык запросов, язык определения структур и манипулирования данными), в котором отражаются осн. черты модели данных.<ref>[https://bigenc.ru/technology_and_technique/text/3666497]</ref> == Виды == СУБД классифицируют: на сетевые, иерархические, реляционные (и SQL-ориентированные), объектно ориентированные, [[XML]]-ориентированные (англ. eXtensible Markup Language — расширяемый язык разметки) и др., то есть по модели данных; универсальные и специализир., которые ориентированы на эффективную поддержку одного класса информац. систем (напр., транзакц. или аналитич.); файл-серверные (БД хранятся в файлах специализир. файлового сервера), клиент-серверные (все осн. компоненты СУБД выполняются на отд. сервере, на котором хранится и БД, а на клиентской части выполняется код приложения), встраиваемые (СУБД тесно связана с прикладной программой и полностью выполняется на том же компьютере, не требуя проф. администрирования); однопроцессорные (не используют аппаратные возможности параллелизма, были распространены до появления многоядерных процессоров), параллельные с общей памятью (обеспечивают межзапросный или внутризапросный параллелизм с использованием нескольких ядер), параллельные с общими дисками (неск. экземпляров СУБД работают в разных узлах вычислит. кластера, но обращаются к общей дисковой подсистеме, в которой хранится БД) и параллельные без использования общих ресурсов СУБД (неск. СУБД работают в разных узлах кластера, каждый со своим разделом БД, что обеспечивает горизонтальное масштабирование при росте объёма данных).<ref>[https://bigenc.ru/technology_and_technique/text/3666497]</ref> == История == {{main|История систем управления базами данных}} Первые СУБД (нач. 1960-х гг.) были основаны на иерархич., сетевой и др. ранних моделях данных. В нач. 1970-х гг. Э. Кодд (США) предложил новый — реляционный — подход к организации БД и СУБД, на основе которого в 1970-е гг. выполнены эксперим. проекты System R (IBM) и Ingres (Калифорнийский ун-т в Беркли) и заложены основы будущих технологий (язык SQL, принципы оптимизации запросов, методы управления транзакциями и др.). В 1980-е гг. разработаны объектно ориентированные, объектно реляционные и первые коммерч. реляционные СУБД.<ref>[https://bigenc.ru/technology_and_technique/text/3666497]</ref> В 1990-х годах появился ряд развитых универсальных SQL-ориентированных СУБД с объектно реляционными возможностями ([[Informix Universal Server]], [[Oracle8]], [[DB2]], [[Universal Database]]). Принят стандарт SQL:1999, в котором эти возможности, а также все осн. средства SQL-ориентированных СУБД были окончательно согласованы и утверждены. Одновременно развивались объектно ориентированные СУБД.<ref>[https://bigenc.ru/technology_and_technique/text/3666497]</ref> В начале XXI века [[М. Стонбрейкер]] (США) обосновал конец эпохи универсальных СУБД и переход к специализир., ориентированным на поддержку отд. классов информационных систем — [[XML]]-ориентированные (напр., [[Tamino]], [[Sedna]]), потоковые ([[Streambase]]), аналитические ([[Vertica]], [[Greenplum]]), транзакц. СУБД ([[VoltDB]]). Из-за взрывообразного роста данных ([[BigData]]) стала актуальной возможность горизонтального масштабирования; в результате практически все совр. СУБД являются массивно-параллельными. Проблема BigData привела к появлению ряда систем категории [[NoSQL]], разработчики которых опираются на опыт в области распределённых систем (совокупность логически взаимосвязанных баз данных, распределённых по узлам компьютерной сети) и не следуют канонам традиционных СУБД. В СССР и России разрабатывали СУБД [[ИНЕС]] и [[НИКА]] (1980-е гг., Ин-т системного анализа РАН), [[ЛИНТЕР]] (компания РЕЛЭКС, Воронеж, с кон. 1980-х гг.), [[Sedna]] (2000-е гг., Ин-т системного программирования РАН).<ref>[https://bigenc.ru/technology_and_technique/text/3666497]</ref> == Типы == === Oracle === Система [[Oracle]] популярна у разработчиков, проста в использовании, у нее понятная документация, поддержка длинных наименований, JSON, улучшенный тег списка и Oracle Cloud.<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: Oracle Corporation. Написана на Assembly, C, C++.<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Обрабатывает большие данные. * Поддерживает SQL, к нему можно получить доступ из реляционных БД Oracle. * Oracle NoSQL Database с Java/C API для чтения и записи данных. === MySQL === [[MySQL]] работает на [[Linux]], [[Windows]], [[OSX]], [[FreeBSD]] и [[Solaris]].<ref>[https://proglib.io/p/databases-2019/]</ref> Лицензия GPL с открытым исходным кодом позволяет модифицировать ПО MySQL.<ref>[https://proglib.io/p/databases-2019/]</ref> Эта система управления базами данных использует стандартную форму SQL. Утилиты для проектирования таблиц имеют интуитивно понятный интерфейс. MySQL поддерживает до 50 миллионов строк в таблице. Предельный размер файла для таблицы по умолчанию 4 ГБ, но его можно увеличить. Поддерживает секционирование и репликацию, а также Xpath и хранимые процедуры, триггеры и представления.<ref>[https://proglib.io/p/databases-2019/]</ref> СУБД [[MySQL]] есть практически на любом хостинге. Простая в установке, работает нормально без особых настроек. В любом языке программирования, фреймворке, CMS, CMF и так далее — есть интеграция с MySQL.<ref>[https://habr.com/ru/post/348220/]</ref> Разработчик: Oracle Corporation. Написана на C, C++.<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Масштабируемость; * Лёгкость использования; * Поддержка Novell Cluster; * Поддержка многих операционных систем. Минусы MySQL:<ref>[https://habr.com/ru/post/348220/]</ref> * Посредственная производительность; * Изменение структуры данных может быть довольно трудоёмким процессом, особенно при большом количество связей между данными в разных таблицах и даже при простом добавлении полей; * Чувствительность к нестабильности сервера. Особенно это влияет при использовании XtraDB от Percona. Если неправильно завершить MySQL, можно настолько поломать таблицы и базы данных, что восстановить можно будет только из полного бекапа. === Microsoft SQL Server === [[Microsoft SQL Server]] — самая популярная коммерческая СУБД. Она привязана к Windows. Зависит от платформы. И графический интерфейс, и программное обеспечение основаны на командах. Поддерживает SQL, непроцедурные, нечувствительные к регистру и общие языки баз данных.<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: Microsoft Corporation. Написана на C, C++.<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Высокая производительность; * Зависимость от платформы; * Возможность установить разные версии на одном компьютере; * Генерация скриптов для перемещения данных. === PostgreSQL === [[PostgreSQL]] — масштабируемая объектно-реляционная база данных, работающая на [[Linux]], [[Windows]], [[OSX]] и некоторых других системах. В PostgreSQL 10 есть такие функции, как логическая репликация, декларативное разбиение таблиц, улучшенные параллельные запросы, более безопасная аутентификация по паролю на основе SCRAM-SHA-256.<ref>[https://proglib.io/p/databases-2019/]</ref> [[PostgreSQL]] — очень старая СУБД. По мнение многих, очень стабильная СУБД, её практически невозможно уронить, порушить таблицы как в [[MySQL]].<ref>[https://habr.com/ru/post/348220/]</ref> Разработчик: PostgreSQL Global Development Group.Написана на C. Используется в компаниях: [[Apple]], [[Cisco]], [[Fujitsu]].<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Поддержка табличных пространств, а также хранимых процедур, объединений, представлений и триггеров; * Восстановление на момент времени (PITR); * Асинхронная репликация. === MongoDB === [[MongoDB]] — самая популярная [[NoSQL]] СУБД. Лучше всего подходит для динамических запросов и определения индексов. Гибкая структура, которую можно модифицировать и расширять. Поддерживает [[Linux]], [[OSX]] и [[Windows]], но размер БД ограничен 2,5 ГБ в 32-битных системах. Использует платформы хранения [[MMAPv1]] и [[WiredTiger]].<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: MongoDB Inc. в 2007 году. Написана на C++.<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Высокая производительность; * Автоматическая фрагментация; * Работа на нескольких серверах; * Поддержка репликации Master-Slave; * Данные хранятся в форме документов JSON; * Возможность индексировать все поля в документе; * Поддержка поиска по регулярным выражениям. === DB2 === Работает на Linux, UNIX, Windows и мейнфреймах. Идеально подходит для хост-сред IBM.<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: IBM. Написана на C, C++, Assembly.<ref>[https://proglib.io/p/databases-2019/]</ref> === Microsoft Access === [[Microsoft Access]] — система управления базами данных от Microsoft, которая сочетает в себе реляционное ядро БД Microsoft Jet с графическим интерфейсом пользователя и инструментами разработки ПО.<ref>[https://proglib.io/p/databases-2019/]</ref> Производительность не рассчитана на большие проекты. В MS Access можно использовать C, C#, C++, Java, VBA и Visual Rudimental.NET. Access хранит все таблицы БД, запросы, формы, отчёты, макросы и модули в базе данных Access Jet в виде одного файла.<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: Microsoft Corporation.<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Можно использовать VBA для создания многофункциональных решений с расширенными возможностями управления данными и пользовательским контролем; * Импорт и экспорт в форматы Excel, Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server и Oracle; * Формат базы данных Jet. === Redis === [[Redis]] — СУБД с открытым исходным кодом, которая снабжена механизмами журналирования и снимков. Поддерживаются списки, строки, хэши, наборы. Используется для БД, брокеров сообщений и кэшей. Все операции в Redis атомарные. Система написана на языке C и поддерживается практически всеми языками программирования.<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: Salvatore Sanfilippo.<ref>[https://proglib.io/p/databases-2019/]</ref> Чаще всего СУБД [[Redis]] используют в качестве кеширующего слоя для работы с данными из другой, более медленной СУБД. Редко, но всё же может использоваться в качестве самостоятельно БД для данных. При этом Redis умеет работать с разными типами данных, в том числе списками, очередями. Работает в памяти, очень быстрая, умеет сохранять данные на диске, причём с поддержкой дозаписи (гораздо меньше нагружает диск) и загружать при запуске.<ref>[https://habr.com/ru/post/348220/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Автоматическая обработка отказа; * Транзакции; * Сценарии LUA; * Вытеснение LRU-ключей; * Поддержка Publish/Subscribe. === Apache Cassandra === [[Apache Cassandra]] спроектирована и работает как распределенная NoSQL СУБД для больших данных. Данные хранит в виде семейства столбцов.<ref>[https://habr.com/ru/post/348220/]</ref> СУБД активно используется в банковском деле, финансах, а также в [[Facebook]] и [[Twitter]]. Поддерживает [[Windows]], [[Linux]] и [[OSX]]. Для запросов к БД Cassandra используется [[SQL]]-подобный язык — [[Cassandra Query Language]] (CQL).<ref>[https://proglib.io/p/databases-2019/]</ref> Разработчик: [[Apache Software Foundation]]. Написана на [[Java]].<ref>[https://proglib.io/p/databases-2019/]</ref> Особенности:<ref>[https://proglib.io/p/databases-2019/]</ref> * Линейная масштабируемость; * Быстрое время отклика; * Поддержка MapReduce и Apache Hadoop; * Максимальная гибкость; * P2P архитектура. == Ссылки == * [https://habr.com/ru/hub/db_admins/ Администрирование баз данных] * [https://habr.com/ru/search/?q=%5B%D1%81%D1%83%D0%B1%D0%B4%5D&target_type=posts СУБД] * [http://docwiki.embarcadero.com/Libraries/Rio/en/Data.DB.TDataSet.Filter Data.DB.TDataSet.Filter] == Примечания == <references /> [[Категория:Системы управления базами данных| ]]
Описание изменений:
Отменить
|
Справка по редактированию
(в новом окне)
Шаблоны, использованные на текущей версии страницы:
Шаблон:Main
Просмотры
Статья
Обсуждение
Править
История
Личные инструменты
Представиться системе
Навигация
Заглавная страница
Случайная статья
Инструменты
Ссылки сюда
Связанные правки
Загрузить файл
Спецстраницы