Я пытаюсь построить структуру данных Quadtree (или, скажем так, дерево) на вторичной памяти (жесткий диск).
У меня есть программа на C ++, и я использую fopen для создания файлов. Кроме того, я использую тессеральное кодирование для хранения каждой ячейки в файле с соответствующим кодом для сохранения ее на диске в одном каталоге.
Проблема в том, что после создания около 1100 файлов fopen просто возвращает NULL и прекращает создание новых файлов. Я могу создавать дополнительные файлы вручную в этом каталоге, но с помощью C ++ он не может создавать дополнительные файлы.
Я знаю о максимальном предельном значении inode для файловой системы ext3, которое составляет (из Википедии) 32 000, но у меня это намного меньше, также обратите внимание, что я могу создавать файлы вручную на диске; только не через fopen.
Кроме того, я действительно ценю любую идею относительно лучшего способа хранения очень динамического дерева квадрантов на диске (мне нужно, чтобы узлы были в отдельных файлах, а глубина дерева дерева могла составлять 50).
Использование вложенных каталогов - одна из идей, но я думаю, что это снизит производительность из-за перехода по ссылкам в файловой системе для доступа к файлу.
Спасибо,
Нима