Что такое формат файла NDX?
Файл .ndx представляет собой однополевой индекс на основе B-дерева, связанный с базой данных dBASE (.dbf). Представленный вместе с dBASE III в 1984 году, он обеспечивает сортированный доступ к записям без сканирования всей таблицы - по аналогии с алфавитным указателем в печатной книге.
Формат хранит B-дерево из фиксированных узлов размером 512 байт. 16-байтовый заголовок записывает номер корневого блока, общее количество блоков, длину ключа, тип ключа и флаг уникального значения. Каждый листовой узел содержит значения ключей сортировки вместе с указателями номеров записей обратно в файл .dbf.
Один файл .ndx индексирует ровно одно выражение ключа - имя поля или простую формулу длиной до 220 символов, при этом вычисленный ключ ограничен 100 байтами. Это ограничение «один индекс на файл» является основным недостатком .ndx по сравнению с более поздним форматом .MDX (dBASE IV, 1988), который хранит до 47 индексных тегов в одном файле и обновляется автоматически.
Важно отметить, что индексы .ndx не поддерживаются автоматически при добавлении, удалении или изменении записей в .dbf. Пользователи должны выполнить явную команду REINDEX или SET INDEX TO в dBASE для их перестройки - устаревший индекс выдает неверные результаты запросов. Современные инструменты, такие как dBASE Plus и DBF Viewer Plus, по-прежнему принимают файлы .ndx для обратной совместимости. FoxPro и Visual FoxPro вместо этого предпочитают формат составного индекса .cdx.
Безопасность и защита
РИСК: LOWФайлы NDX содержат только индексные данные (ключи + указатели записей); исполняемый код отсутствует. Безопасно открывать любым xBase-совместимым просмотрщиком. Повреждение NDX не влияет на данные DBF - индекс можно перестроить.
Детали формата
в двух словах- Индексный файл FoxBase/FoxPro - FoxBase и ранние версии FoxPro также использовали файлы одиночного индекса .ndx (тот же формат, что и dBASE III NDX); FoxPro 2+ перешел на составной индекс .cdx.
- Индексный файл (общее название) - Некоторые пользовательские приложения используют расширение .ndx в общем смысле для текстовых или проприетарных индексных файлов, не связанных с dBASE.
Программы, открывающие файлы NDX
Технические подробности
глубокая спецификация| Тип формата | Бинарный однополевой индекс B-дерева для баз данных dBASE |
| Кодировка | Бинарная, little-endian |
| Размер узла B-дерева | Фиксированные 512 байт на узел (корневые, ветвевые и листовые узлы) |
| Заголовок | 16 байт - номер корневого блока, общее количество блоков, длина ключа, тип ключа (символьный/числовой), флаг уникальности, байт версии |
| Лимит выражения ключа | До 220 символов в выражении; вычисленное значение ключа сортировки ограничено 100 байтами |
| Емкость индекса | Одно выражение ключа на файл (ограничение одного индекса - один файл `.ndx` на каждое индексируемое поле или выражение) |
| Связанная база данных | Сопутствующий файл `.dbf`; листовые узлы хранят указатели номеров записей на строки данных DBF |
| Поведение автообновления | Индекс НЕ поддерживается автоматически; требуется явный вызов `REINDEX` или `SET INDEX TO` после модификаций DBF |
| Происхождение | dBASE III от Ashton-Tate; совместим с dBASE IV, V и современными реализациями xBase |
| Заменен форматами | `.mdx` (dBASE IV - до 47 автоматически обновляемых индексных тегов на файл); `.cdx` (FoxPro / Visual FoxPro) |
| Связанная ОС | DOS (оригинальная), Windows (обратная совместимость в современных инструментах) |
| Современная поддержка | По-прежнему принимается dBASE Plus и DBF Viewer Plus для совместимости с устаревшими системами |
| Типы ключей | Символьные строки и числовые значения; поля дат преобразуются в символьное представление для индексации |
| Риск устаревания индекса | Файл `.ndx`, не перестроенный после изменений DBF, возвращает неверные результаты запроса без предупреждения |
| Выпущен | 1984 (dBASE III) |
| Последняя версия | dBASE III-compatible NDX (unchanged since dBASE III era) |
| Открыть стандартное | Да · без роялти |
| Спецификация | pic.hallikainen.org |
Конвертации NDX
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах NDX.