Исполняемый файл — это база данных SQLite¶
7.0/10
В статье на fzakaria.com от 23 августа 2026 года исследуется идея рассматривать исполняемые файлы как базы данных SQLite: ELF описывается как «уже база данных», а механизм виртуальных таблиц SQLite предлагается использовать для инспекции и потенциальной унификации бинарных форматов. Автор разбирает устройство ELF, объясняет, почему формат трудно модифицировать из-за плотной упаковки и отсутствия самоописывающей схемы, и обсуждает компромиссы между копированием и отображением памяти. Материал не является отраслевым прорывом, но даёт практическую пользу для системного программирования и проектирования файловых форматов.
Контекст¶
SQLite хранит базу данных в одном файле с собственным двоичным форматом, который включает 4-байтовый идентификатор приложения (application ID), расположенный на 68-м байте файла; этот идентификатор обычно используется для однозначного определения типа файла. Идея автора состоит в том, чтобы записать в это поле значение «SELF» (Structured Executable & Linkable Format) и встроить компоненты ELF-исполняемого файла в структуру базы данных, благодаря чему один и тот же файл может одновременно быть и SQLite-базой, и исполняемым бинарником в Linux. Дополнительно SQLite поддерживает виртуальные таблицы, позволяющие «монтировать» произвольные источники данных и обращаться к ним через SQL, что делает такой подход естественным для инспекции и унификации форматов файлов.
Влияние¶
Для системных программистов и разработчиков инструментов статья предлагает конкретный способ выполнять SQL-запросы к ELF-файлам через виртуальные таблицы SQLite, что может упростить инспекцию и анализ бинарных форматов; однако практическое применение сдерживается компромиссом между копированием и отображением памяти.
Обсуждение¶
Комментаторы в целом согласны, что ELF можно рассматривать как базу данных, и высоко оценивают механизм виртуальных таблиц SQLite; при этом высказываются и возражения: один участник называет единственным препятствием выбор между копированием и отображением памяти, другой сомневается, зачем нужен именно SQLite, а не SQL-движок поверх объектного файла. Также отмечается, что ELF — не уникальный случай: PE/COFF и .NET assembly тоже устроены как реляционные базы данных.
Источники
Покрытие источниками¶
Проверяются выбранные ключевые утверждения, а не истинность всей статьи целиком.
-
Частный опыт или мнение; проверено только авторство
Исполняемый файл — это база данных SQLite