Откомпилированное дерево поиска.
От: BLov  
Дата: 25.12.17 18:54
Оценка:
Есть задача быстрого поиска поименованных объектов в древовидной структуре напоминающей файловую систему с каталогами и файлами, файлы это объекты типа "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) быстро искать по запросам типа:
    2) Хранить это в неком блобе (двоичный файл), который при загрузке можно уже превратить в некое дерево или что угодно.

Да, забыл важное добавить — ID для DIR, назначается в рантайм, то есть неизвестно заранее — на этапе "компиляции". Ну скажем, во время выполнения возникает некое событие имя которому и есть DIR, его надо найти в нашей базе, и у этого события есть некий ID, который ему надо присвоить. Таких события может одновременно возникать несколько. Затем возникает второй тип события имя которому OBJECT и для него известен ID и вот надо найти этот объект в нашей базе. Затем возникает третий тип события имя которому DIR и его ID известен, и надо найти его в базе и удалить этот ID из DIR.

ps: Заранее спасибо!
Отредактировано 25.12.2017 19:11 BLov . Предыдущая версия . Еще …
Отредактировано 25.12.2017 18:56 BLov . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.