ИСАМ
Этот раздел нуждается в дополнительных цитатах для проверки . ( январь 2014 г. ) |
Метод индексированного последовательного доступа ( ISAM ) — это метод создания, обслуживания и управления компьютерными файлами данных, позволяющий извлекать записи последовательно или случайным образом с помощью одного или нескольких ключей. Индексы ключевых полей поддерживаются для быстрого поиска необходимых файловых записей в индексированных файлах . Первоначально IBM разработала ISAM для мейнфреймов , но реализации доступны для большинства компьютерных систем.
Термин ISAM используется для нескольких связанных понятий:
- Продукт IBM ISAM и алгоритм, который он использует. [ 1 ]
- Система базы данных , в которой разработчик приложения напрямую использует интерфейс прикладного программирования для поиска индексов с целью нахождения записей в файлах данных. Напротив, реляционная база данных использует оптимизатор запросов , который автоматически выбирает индексы. [ 2 ]
- Алгоритм индексирования, который обеспечивает как последовательный, так и ключевой доступ к данным. [ 3 ] Большинство баз данных используют для этой цели некоторые варианты B-дерева , хотя исходные реализации IBM ISAM и VSAM этого не делали.
- Чаще всего это любой индекс базы данных. Индексы используются практически всеми базами данных.
Организация
[ редактировать ]В системе ISAM данные организованы в записи , состоящие из полей фиксированной длины, первоначально хранящихся последовательно в последовательности ключей. Вторичный набор записей, известный как индексы , содержит указатели на расположение каждой записи, что позволяет извлекать отдельные записи без необходимости поиска во всем наборе данных. Это отличается от современных навигационных баз данных , в которых указатели на другие записи хранились внутри самих записей. Ключевое улучшение ISAM заключается в том, что индексы малы по размеру и их можно быстро искать, возможно, полностью в памяти, что позволяет базе данных получать доступ только к тем записям, которые ей нужны. Дополнительные модификации данных не требуют изменений других данных, а только соответствующей таблицы и индексов.
При создании файла ISAM индексные узлы фиксируются, и их указатели не изменяются во время вставок и удалений, которые происходят позже (после этого меняется только содержимое конечных узлов). Как следствие этого, если вставки в какой-либо листовой узел превышают емкость узла, новые записи сохраняются в цепочках переполнения. Если вставок в таблице намного больше, чем удалений, эти цепочки переполнения могут постепенно стать очень большими, и это влияет на время, необходимое для извлечения записи. [ 4 ]
Реляционные базы данных можно легко построить на базе ISAM с добавлением логики для поддержания достоверности связей между таблицами. Обычно поле, используемое в качестве ссылки ( внешний ключ ), индексируется для быстрого поиска. Хотя это медленнее, чем простое сохранение указателя на связанные данные непосредственно в записях, это также означает, что изменения в физическом расположении данных не требуют какого-либо обновления указателей — запись все равно будет действительна.
ISAM прост для понимания и реализации, поскольку он в основном состоит из прямого доступа к файлу базы данных. Компромисс заключается в том, что каждая клиентская машина должна управлять своим собственным подключением к каждому файлу, к которому она обращается. Это, в свою очередь, приводит к возможности конфликтующих вставок в эти файлы, что приводит к несогласованному состоянию базы данных. Чтобы предотвратить это, некоторые реализации ISAM [ 5 ] [ 6 ] всего файла или отдельной записи обеспечить функцию блокировки . Блокировка нескольких записей может привести к возникновению взаимоблокировки , если предотвращения взаимоблокировок строго не соблюдать схему . Проблемы блокировок и взаимоблокировок обычно решаются добавлением клиент-серверной инфраструктуры, которая сортирует клиентские запросы и поддерживает порядок. Полные системы управления транзакциями ACID предоставляются некоторыми реализациями клиент-сервера ISAM. [ 5 ] Это основные концепции, лежащие в основе системы управления базами данных (СУБД), которая представляет собой клиентский уровень над базовым хранилищем данных.
ISAM был заменен в IBM методологией под названием VSAM (метод доступа к виртуальному хранилищу). Еще позже IBM разработала SQL/DS , а затем Db2 , которую IBM продвигает как свою основную систему управления базами данных . VSAM — это метод физического доступа, используемый в Db2. [ нужна ссылка ]
OpenVMS
[ редактировать ]Операционная система OpenVMS совместно использует файловую систему Files-11 с RMS ( службами управления записями ). RMS обеспечивает дополнительный уровень между приложением и файлами на диске, который обеспечивает согласованный метод организации данных и доступа к ним на нескольких языках 3GL и 4GL. RMS предоставляет четыре различных метода доступа к данным; последовательный доступ, относительный доступ к номеру записи, доступ к адресу файла записи и индексированный доступ.
Метод индексированного доступа для чтения или записи данных обеспечивает желаемый результат только в том случае, если фактически файл организован как файл ISAM с соответствующими, заранее определенными ключами. Доступ к данным через заранее определенные ключи осуществляется чрезвычайно быстро. Поддерживаются несколько ключей, перекрывающиеся ключи и сжатие ключей в хеш-таблицах. Предоставляется утилита для определения/переопределения ключей в существующих файлах. Записи можно удалять, хотя "сборка мусора" осуществляется через отдельную утилиту.
Рекомендации по проектированию
[ редактировать ]Инженеры IBM спроектировали систему ISAM так, чтобы она использовала минимальный объем компьютерной памяти . Компромисс заключался в том, что канал ввода-вывода , блок управления и диск оставались более занятыми. Файл ISAM состоит из набора записей данных и двух или трех уровней индекса. Индекс дорожки содержит наивысший ключ для каждой дорожки диска в цилиндре, который он индексирует. Индекс цилиндра хранит самый высокий ключ в цилиндре и адрес диска соответствующего индекса дорожки. Необязательный главный индекс , обычно используемый только для больших файлов, содержит самый высокий ключ на дорожке индекса цилиндра и адрес диска этого индекса цилиндра. После загрузки файла записи данных не перемещаются; вставленные записи помещаются в отдельную область переполнения . Чтобы найти запись по ключу, индексы на диске просматриваются сложной самомодифицирующейся канальной программой . [ 7 ] Это увеличивало время занятости канала, блока управления и диска. Из-за увеличения размеров физической и виртуальной памяти в более поздних системах это было сочтено неэффективным, и VSAM был разработан для изменения компромисса между использованием памяти и активностью диска.
Использование ISAM самомодифицирующихся канальных программ позже вызвало трудности с CP-67 поддержкой OS/360 , поскольку CP-67 копировал всю канальную программу в постоянную память при запуске операции ввода-вывода и преобразовывал виртуальные адреса в реальные адреса. [ 8 ]
Реализации в стиле ISAM
[ редактировать ]- Advantage Database Server Менеджер базы данных
- Беркли ДБ
- Кратковременно
- База данных FairCom [ 5 ]
- C-ISAM
- DataFlex Собственная база данных
- dBase и сопутствующие продукты Clipper и Foxpro
- корпорации Digital Equipment Corporation Услуги по управлению записями
- Enscribe — метод структурированного доступа к файлам HP Tandem.
- Расширяемый механизм хранения данных
- Ядро базы данных Access (ACE и ранее JET), используемое Microsoft Access
- MySQL реализует и расширяет ISAM как MyISAM.
- Парадокс
- Реализация pblIsam под лицензией GPL, написанная на C [ 9 ]
- баз данных Superbase Семейство
- dbm Базы данных DBM и Flat File работают в тандеме
См. также
[ редактировать ]- Память с последовательным доступом (SAM)
- Метод доступа к виртуальному хранилищу (VSAM)
- Плоский файл
- NoSQL
- дбм
Ссылки
[ редактировать ]- ^ Чин, Ю.Х. (1975). «Анализ поведения VSAM в свободном пространстве». Материалы 1-й Международной конференции по очень большим базам данных - VLDB '75 . стр. 514–515. дои : 10.1145/1282480.1282529 . ISBN 9781450318181 . S2CID 11082747 .
- ^ Бог, Роберт Л. (13 февраля 2004 г.). «Изучите различия между ISAM и реляционными базами данных» . Проверено 17 октября 2014 г.
- ^ Ларсон, Пер-Оке (1981). «Анализ индексно-последовательных файлов с цепочкой переполнения» . Транзакции ACM в системах баз данных . 6 (4): 671–680. дои : 10.1145/319628.319665 . S2CID 16261748 .
- ^ Рамакришнан Рагху, Герке Йоханнес - Системы управления базами данных, McGraw-Hill Higher Education (2000), 2-е издание (en), стр. 252
- ^ Jump up to: а б с «FairCom ISAM API для C — Руководство для разработчиков» .
- ^ «Руководство программиста C-ISAM» (PDF) .
- ^ Корпорация IBM (1973). DOS/VS LIOCS Том 3: Логика DAM и ISAM . стр 63–72 . . Проверено 30 декабря 2018 г.
- ^ Корпорация IBM (1972). IBM Virtual Machine Facility /370: Руководство по планированию (PDF) . п. 45 . Проверено 8 января 2018 г.
- ^ Граф, Питер. «Реализация pblIsamFile» . Mission-base.com . Проверено 8 сентября 2017 г.