Есть задача быстрого поиска поименованных объектов в древовидной структуре напоминающей файловую систему с каталогами и файлами, файлы это объекты типа "1" а каталоги это объекты типа "2"
Проще привести пример —
дир1:объект1
дир1:объект2
дир1:объект3
дир1:объект4
дир2:объект5
дир2:объект6
дир2:объект1
дир2:объект3
дир3:объект10
дир3:объект11
дир3:объект12
дир3:объект14
В рамках директории объекты уникальны. В аналогии с файловой системой — не могут быть два файла с одним и тем же именем.
Директории также уникальны.
Пример близкий к реальному:
\aaaa\eeee\yyyyy\ooooo(01):\bbbb\cccc\dddd\eeeee
\aaaa\eeee\yyyyy\ooooo(01):\bbbb\cccc\dddd\qqqqqq
\aaaa\eeee\yyyyy\ooooo(01):\bbbb\cccc\dddd\hhhhh
\aaaa\eeee\yyyyy\vvvvv(02):\bbbb\cccc\dddd\eeeee
\aaaa\eeee\yyyyy\vvvvv(02):\bbbb\cccc\dddd\qqqqqq
\aaaa\eeee\yyyyy\vvvvv(02):\bbbb\cccc\dddd\jjjjjj
\aaaa\eeee\yyyyy\ddddd(03):\bbbb\cccc\dddd\eeeee
\aaaa\eeee\yyyyy\ddddd(03):\bbbb\cccc\dddd\qqqqqq
\aaaa\eeee\yyyyy\ddddd(03):\bbbb\cccc\dddd\wwwww
\aaaa\eeee\yyyyy\lllll(04):\bbbb\cccc\dddd\eeeee
\aaaa\eeee\yyyyy\lllll(04):\bbbb\cccc\dddd\qqqqqq
\aaaa\eeee\yyyyy\lllll(04):\bbbb\cccc\dddd\ffffff
В скобках перед двоеточием это не часть строки DIR-а, а некий ID для этого DIR-a.
Требуется :
1) быстро искать по запросам типа:
1) найти ID для DIR=\aaaa\eeee\yyyyy\ooooo,
2) найти объект \aaaa\eeee\yyyyy\vvvvv если ID=10
2) Хранить это в неком блобе (двоичный файл), который при загрузке можно уже превратить в некое дерево или что угодно.
Да, забыл важное добавить — ID для DIR, назначается в рантайм, то есть неизвестно заранее — на этапе "компиляции". Ну скажем, во время выполнения возникает некое событие имя которому и есть DIR, его надо найти в нашей базе, и у этого события есть некий ID, который ему надо присвоить. Таких события может одновременно возникать несколько. Затем возникает второй тип события имя которому OBJECT и для него известен ID и вот надо найти этот объект в нашей базе. Затем возникает третий тип события имя которому DIR и его ID известен, и надо найти его в базе и удалить этот ID из DIR.
ps: Заранее спасибо!