Michał,
powinieneś być w stanie przechowywać dane o swoich relacjach w bazie danych wykresów. Jego wysoka wydajność przy przechodzeniu przez duże grafy wynika z lokalizacji, tj. nie uruchamiasz zapytań globalnie, ale raczej uruchamiasz zestaw węzłów (które w twoim przypadku są równoznaczne z dokumentami, które są wyszukiwane przez indeks. Możesz nawet przechowywać węzeł startowy- identyfikatory dla szybkiego dostępu w dokumentach mongo). Stamtąd możesz przemierzać dowolnie duże ścieżki w stałym czasie (wrt data set size).
Jakie są Twoje inne wymagania (np. rozmiar zestawu danych, liczba jednoczesnych dostępów itp., złożoność relacji/wykresu).
Twoje zapytania są naprawdę dobrze dopasowane do bazy danych wykresów i łatwo wyrażalne w jej terminach.
Sugeruję, abyś po prostu wziął graphdb, taki jak neo4j i zrobił szybki skok w swojej domenie, aby zweryfikować ogólną wykonalność, a także znaleźć dodatkowe pytania, na które chciałbyś odpowiedzieć przed zainwestowaniem w drugą technologię.
PS Jeśli jeszcze nie zacząłeś, mógłbyś również skorzystać z czystego podejścia graphdb, ponieważ bazy danych wykresów są nadzbiorem baz danych dokumentów. A i tak wolałbyś mówić o domenie niż tylko o ogólnych dokumentach. (Np. structr to CMS zbudowany na Neo4j).