ISAM (Indexed Sequential Access Method) – это структура данных, которая обеспечивает операции последовательного доступа к данным с использованием индексов. Интерфейс ISAM обычно включает в себя функции для добавления, удаления, изменения и поиска данных в структуре ISAM. Интерфейс ISAM может быть использован в различных приложениях, где требуется эффективное управление и доступ к данным. Способ был разработан компанией IBM для мейнфреймов в 1963 году, в настоящее время это основной способ представления данных почти во всех базах данных.
В ISAM отдельно хранятся записи с данными и индексы (служебные данные), служащие для быстрого доступа к записям. Данные хранятся последовательно (изначально ISAM использовался для хранения данных на ленточных накопителях, обеспечивающих только последовательные чтение/запись). Второй набор данных — хеш-таблица — индексы, содержащие указатели, которые позволят извлечь определенные записи без поиска по всей базе данных. Это несколько отличается от индексов в современных поисковых базах данных, так как в них индексы хранятся прямо в записях. Ключевая особенность ISAM — индексы малы и поиск по ним быстр. Изменение в записях не требует изменять все записи, требуется только перестроить индекс.
SQL (Structured Query Language) – это всего лишь язык запросов, используемый для управления и манипулирования данными в реляционных базах данных. ISAM (Indexed Sequential Access Method) – это всего лишь метод доступа к данным, который используется для организации хранения данных в файлах.
SQL может быть использован для работы с базами данных, организованными с использованием ISAM, поскольку SQL предоставляет различные команды для выполнения операций с данными в базе данных, включая запросы, добавление, удаление и изменение данных. ISAM определяет структуру и метод доступа к данным, а SQL предоставляет средства для манипулирования этими данными. Таким образом, SQL и ISAM могут использоваться вместе для эффективного управления данными в базе данных.
Реляционные базы данных также могут быть построены на способе хранения данных ISAM с добавленной логикой по сохранению целостности межтабличных связей. Обычно поле, используемое для связи (внешний ключ), индексируется для быстрого поиска. Конечно, это медленнее, чем просто хранить указатели на нужные записи в другой таблице непосредственно в записях, но зато изменения на физическом уровне хранения данных не потребуют изменения указателей: на физическом уровне таблицы остаются независимыми друг от друга, слабо связанными через пару “внешний/первичный ключ”, что позволяет легко провести перекомпоновку структуры хранения таблицы, содержащей первичный ключ, или даже переместить её в отдельную партицию без потери связности.
ISAM легко реализуется и это дешевый метод. Плата за это — каждая клиентская машина должна держать собственные соединения с каждым файлом, к которому происходит доступ. Это может привести к конфликтам при одновременной работе нескольких клиентов при попытке изменить или вставить новые значения и привести к потере данных. Обычно эта проблема решается добавлением клиент-серверного приложения, которое обслуживает запросы пользователей и управляет ими, чтобы сохранять целостность данных. Это основная концепция СУБД, в основном с поддержкой языка SQL, которая и создает клиентский уровень над надлежащими данными.
В несколько модифицированном виде, называемом VSAM эти идеи и подходы применены в СУБД IBM DB2. Также для MySQL реализована расширение MyISAM.