чтение из БД минуты, инициализация - тоже минуты, всякие доп дозагрузки которые обязательно поверх того что получилось нужно делать - еще несколько минут. вобщем тут есть уверенность что ничего значительно не ускорить - все что можно уже распараллелили. если еще извратиться может быть в два-несколько раз ускоримся а хочется в сотню раз за счет предварительной загрузки и инициализации всех структур.
лучше считать что структуры подходящие - они оптимизировы под бизнес нужды. там несколько графов строится, поверх всякие дополнения потом загружатся. просто данных много и будет еще больше. може быть можно что-то еще предварительно рассчитать - то что сейчас на старте рассчитывается. ну может быть это раз в 10 нас ускорит. это будет полумера. хочется попробовать сразу прийти в финальную точку - когда всё предрассчитали включая все связи между всеми объектами и целиком их сдампили и целиком их загружаем - вот это уже точно самое оптимальное будет
Когда-то, когда я занимался маршрутизацией в Я.Картах, мы данные из базы в оффлайн- процессе дампили в бинарные файлы, а потом в рантайме делали mmap. Не знаю насколько вам релевантно, но вот и так бывает.
это было бы идеально - только как быть со ссылками между объектами - все на всех ссылаются. ссылки либо надо заменять каким-то суррогатом типа index, либо обновлять после загрузки, либо как-то это делегировать ОС (в своп файл же сохраняется все как-то и загружается оттуда / или hibernate функция / или перенос работающих подов между нонами)
можно - это идея #1 - заменить все ссылки индексами - но тогда это будет не идеально по скорости в ходе работы с графом (а если совсем отдельно хранить то все еще менее оптимально будет).
не знаю, чем вам поможет статистика по рынку. в какой-то момент у меня была похожая ситуация, в итоге оказалось, что ребятам просто нужен был оффер, чтобы зарплатку себе поднять на текущем месте
я скорее о другом - скинуть объекты в условных protobuf на диск, а ссылки восставновить после чтения файла где хранятся связи. Объекты в памяти по прежнему ссылаются друг на друга, но на диске это хранится раздельно
да. спасибо это интереная идея. это в сторону пункта #2 только без unsafe кода - все будет safe. и мне это больше нравится чем писать unsafe подмены ссылок на лету