Формат файла MDB¶
MDB — это формат файла базы данных, создаваемый и используемый системой управления базами данных (СУБД) Microsoft Access, входящей в пакет Microsoft Office. Файлы с расширением .mdb (от англ. Microsoft Database) представляют собой контейнеры, в которых хранятся таблицы, запросы, формы, отчёты, макросы и модули программного кода на языке VBA (Visual Basic for Applications). Формат является проприетарным и был основным для Access в версиях с 1992 по 2003 год, после чего был заменён более современным форматом .accdb.
¶История
¶Разработка и ранние версии
Формат MDB был впервые представлен в 1992 году вместе с первой версией Microsoft Access 1.0 для Windows. Он пришёл на смену более ранним решениям для работы с базами данных на платформе Windows, таким как FoxPro и Paradox. Основной целью разработки было создание удобного инструмента для конечных пользователей, не требующего глубоких знаний SQL, который позволял бы создавать и управлять реляционными базами данных через графический интерфейс.
В первых версиях (Access 1.0, 1.1, 2.0) использовался формат MDB версии 1.0, который имел ограничение на размер файла в 1 ГБ. С выходом Access 95 (версия 7.0) был представлен формат MDB версии 3.0, который увеличил лимит размера до 2 ГБ и внёс улучшения в механизм блокировок записей.
¶Версия Jet 4.0 (Access 2000–2003)
Наиболее распространённой и стабильной версией формата стала MDB, основанная на механизме баз данных Microsoft Jet 4.0 (совместно используемый компонент доступа к данным — MDAC). Она использовалась в Microsoft Access 2000, 2002 (XP) и 2003. Ключевые нововведения этой версии:
- Поддержка Юникода (Unicode) для хранения текстовых данных, что позволило корректно работать с символами различных языков, включая кириллицу.
- Улучшенная поддержка языка SQL-92, включая подзапросы и функции для работы с датами и строками.
- Возможность создания файлов баз данных с защитой на уровне пользователей (User-Level Security) с использованием рабочей группы (system.mdw).
¶Замена на ACCDB
В 2007 году с выходом Microsoft Office 2007 компания Microsoft представила новый формат файла .accdb, основанный на новом движке Access Database Engine (ACE). Формат MDB был объявлен устаревшим, хотя поддержка его чтения и записи сохраняется во всех последующих версиях Access (вплоть до актуальной на 2025 год). Переход на ACCDB был вызван необходимостью поддержки многозначных полей, сложных типов данных (например, вложения), а также улучшения безопасности и интеграции с SharePoint.
¶Технические характеристики
¶Структура файла
Файл MDB представляет собой сложный бинарный файл, организованный в виде набора страниц (pages) фиксированного размера. Размер страницы по умолчанию составляет 4 КБ (4096 байт). Файл состоит из следующих основных компонентов:
- Заголовок (Header): содержит метаданные о версии формата, уникальный идентификатор базы данных (GUID), информацию о кодировке и параметры сжатия.
- Таблицы страниц (Page Table): индекс, который отслеживает, какие страницы заняты, а какие свободны.
- Страницы данных (Data Pages): содержат непосредственно записи таблиц. Каждая запись хранится в виде бинарного блока переменной длины.
- Страницы индексов (Index Pages): содержат структуры B-деревьев для ускорения поиска и сортировки данных.
- Страницы определения (Definition Pages): хранят метаданные объектов базы данных (таблиц, запросов, форм, отчётов, модулей VBA).
¶Ограничения
Формат MDB (версия Jet 4.0) имеет ряд технических ограничений:
- Максимальный размер файла: 2 ГБ. При превышении этого лимита база данных становится недоступной для записи и требует сжатия или конвертации.
- Максимальное количество объектов: 32 768 объектов (таблиц, запросов, форм и т.д.) на одну базу данных.
- Максимальное количество полей в таблице: 255.
- Максимальное количество индексов в таблице: 32.
- Максимальное количество одновременных пользователей: 255 (при файловом режиме доступа, практический лимит обычно ниже из-за проблем с блокировками).
- Максимальная длина текстового поля (тип Text): 255 символов. Для хранения более длинных строк используется тип Memo (до 65 535 символов, а в некоторых версиях — до 2 ГБ).
¶Типы данных
В MDB поддерживаются следующие основные типы данных:
- Text: строки переменной длины до 255 символов.
- Memo: длинный текст (до 65 535 символов).
- Number: числовые данные (Byte, Integer, Long Integer, Single, Double, Decimal).
- Date/Time: дата и время (8-байтовое число с плавающей точкой двойной точности).
- Currency: денежные значения (8 байт, точность до 4 знаков после запятой).
- AutoNumber: автоматически увеличивающееся целое число (аналог IDENTITY в SQL Server).
- Yes/No: логическое значение (Boolean).
- OLE Object: объекты, созданные другими приложениями (например, изображения, документы Word). Этот тип данных считается устаревшим.
- Hyperlink: гиперссылка (до 2048 символов).
- Replication ID: глобальный уникальный идентификатор (GUID, 16 байт).
¶Применение
¶Локальные и малые базы данных
Основное применение формата MDB — создание локальных однопользовательских или малых многопользовательских баз данных (до 10–20 пользователей). Благодаря встроенному графическому интерфейсу Access, MDB-файлы широко использовались в малом бизнесе, отделах крупных компаний и образовательных учреждениях для:
- Ведения каталогов товаров, клиентских баз и контактов.
- Управления небольшими проектами и задачами.
- Создания простых систем учёта (склад, бухгалтерия на малом предприятии).
- Хранения и анализа данных из внешних источников (Excel, текстовые файлы).
¶Веб-приложения и интеграция
В прошлом MDB-файлы часто использовались в качестве бэкенда для веб-приложений на классическом ASP (Active Server Pages). Однако из-за проблем с производительностью и безопасностью при одновременном доступе через Интернет, эта практика была признана устаревшей. Формат также поддерживает импорт и экспорт данных в другие форматы (Excel, CSV, dBASE, ODBC-источники).
¶Критика и недостатки
¶Проблемы безопасности
Формат MDB имеет серьёзные недостатки в области безопасности. Встроенная система защиты на уровне пользователей (User-Level Security) использует слабые алгоритмы шифрования и легко взламывается. Пароль базы данных хранится в виде хэша в заголовке файла и может быть снят с помощью специальных утилит. Кроме того, макросы и модули VBA, хранящиеся в MDB, могут содержать вредоносный код, что делает файлы потенциально опасными при открытии из ненадёжных источников.
¶Производительность и масштабируемость
Файловый режим доступа (File-Server) является основным ограничением MDB. При одновременной работе нескольких пользователей возникают конфликты блокировок, что приводит к замедлению работы и ошибкам. При размере файла более 1–1,5 ГБ производительность резко падает, а риск повреждения файла возрастает. Формат не подходит для высоконагруженных систем и корпоративных приложений, требующих транзакционной целостности на уровне сервера.
¶Совместимость с современными системами
Хотя Microsoft Access 2019 и 2021 (а также версии из Microsoft 365) могут открывать и редактировать файлы MDB, Microsoft официально рекомендует конвертировать их в формат ACCDB. Начиная с Windows 10, драйверы для работы с MDB (Microsoft Jet OLE DB Provider) не устанавливаются по умолчанию и требуют отдельной загрузки. В macOS и Linux нативная поддержка MDB отсутствует, хотя существуют сторонние библиотеки (например, MDB Tools, Jackcess), позволяющие читать данные из этих файлов.
¶Инструменты для работы с MDB
¶Проприетарные
- Microsoft Access: основной инструмент для создания, редактирования и управления MDB-файлами.
- Microsoft Visual Studio: старые версии (до 2010) включали средства для работы с базами данных Access.
- Microsoft Excel: может импортировать данные из MDB через встроенный мастер запросов.
¶Сторонние и с открытым исходным кодом
- MDB Tools: набор утилит для Linux и Unix, позволяющий читать и экспортировать данные из MDB-файлов (в форматы CSV, SQL, MySQL).
- Jackcess: Java-библиотека для чтения и записи MDB-файлов, используемая в проектах, требующих кроссплатформенного доступа.
- LibreOffice Base: может открывать и редактировать MDB-файлы, хотя полная совместимость не гарантируется.
- mdbtools: консольная утилита для извлечения схемы и данных из MDB.
¶Источники
- Microsoft Corporation. "Introduction to Access 2000 database files (.mdb)". MSDN Library.
- Microsoft Corporation. "Access 2003 file format and structure". Microsoft Support.
- Microsoft Corporation. "Limitations of Access databases". Microsoft Learn.
- Litwin, P. et al. "Access 2000: The Complete Reference". Osborne/McGraw-Hill, 2000.
- Документация проекта MDB Tools (mdbtools.sourceforge.net).
- Документация библиотеки Jackcess (jackcess.sourceforge.net).
