Ядро базы данных - Database engine

Ядро базы данных (или механизм хранения ) является основным компонентом программного обеспечения , что система управления базами данных (СУБД) использует для создания, чтения, обновления и удаление (CRUD) данных из базы данных . Большинство систем управления базами данных включают в себя собственный интерфейс прикладного программирования (API), который позволяет пользователю взаимодействовать с их базовым механизмом, минуя пользовательский интерфейс СУБД.

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

Двигатели хранения

Многие современные СУБД поддерживают несколько механизмов хранения в одной базе данных. Например, MySQL поддерживает InnoDB, а также MyISAM .

Некоторые механизмы хранения являются транзакционными .

Имя Лицензия Транзакционный
Ария GPL Нет
Сокол GPL да
InnoDB GPL да
MyISAM GPL Нет
InfiniDB GPL Нет
TokuDB GPL да
WiredTiger GPL да
XtraDB GPL да
RocksDB GPL v2 или Apache 2.0 да

Дополнительные типы двигателей включают:

Соображения по дизайну

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

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

Иерархия хранилища базы данных

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

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

Структуры данных

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

Базы данных могут хранить данные во многих типах структур данных. Типичные примеры:

Ориентация данных и кластеризация

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

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

Например, может быть полезно сгруппировать запись о «предмете» на складе со всеми соответствующими записями о «заказах». Решение о том, кластеризовать ли определенные объекты или нет, зависит от статистики использования объектов, размеров объектов, размеров кешей, типов хранилищ и т. Д.

Индексирование базы данных

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

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

использованная литература

внешние ссылки