Структуры хранения базы данных - Database storage structures

Таблицы и индексы базы данных могут храниться на диске в одной из нескольких форм, включая упорядоченные / неупорядоченные плоские файлы , ISAM , файлы кучи, хеш-сегменты или деревья B + . У каждой формы есть свои преимущества и недостатки. Наиболее часто используемые формы - это B-деревья и ISAM. Такие формы или структуры являются одним из аспектов общей схемы, используемой ядром базы данных для хранения информации.

Неупорядоченный

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

Упорядоченный

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

Структурированные файлы

Файлы кучи

Файлы кучи - это списки неупорядоченных записей переменного размера. Несмотря на то, что они имеют схожее имя, файлы кучи сильно отличаются от куч в памяти . Кучи в памяти упорядочены, а не файлы кучи.

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

Хеш-сегменты

  • Хеш-функции вычисляют адрес страницы, на которой должна храниться запись, на основе одного или нескольких полей в записи.
    • функции хеширования, выбранные для обеспечения равномерного распределения адресов по адресному пространству
    • 'занятость' обычно составляет от 40% до 60% от общего размера файла.
    • уникальный адрес не гарантируется, поэтому требуются механизмы обнаружения и разрешения конфликтов
  • Открытая адресация
  • Связанный / свободный переполнение
  • Плюсы и минусы
    • эффективен для точных совпадений по ключевому полю
    • не подходит для поиска по диапазону, что требует последовательного хранения
    • вычисляет, где хранится запись, на основе полей в записи
    • хеш-функции обеспечивают равномерное распределение данных
    • возможны столкновения, поэтому требуется обнаружение и восстановление столкновений

B + деревья

Это наиболее часто используемые на практике.

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

Ориентация на данные

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

Смотрите также