2013-03-12 13 views
11

Posiadam relacje między węzłami, które są ważne tylko przez określony czas. Prosty przykład: Osoba P mieszkała pod adresem A od czasu t1 do czasu t2. Mogę umieścić właściwość validFrom i validUntil w relacji, ale przy użyciu cypher, mam do filer to w klauzuli WHERE, ale chciałbym go w klauzula MATCH.Relacje Neo4J z ograniczeniami czasowymi

Powodem, dla którego chcę tego w klauzuli MATCH, jest to, że może on potencjalnie przejść przez duży podgraph, ale później dowie się, że większość z nich można zignorować. Dzieje się tak zwłaszcza w przypadku dużego zestawu historycznych relacji.

Mogę wykonać seperate validFrom i validUntil relacje do określonych węzłów daty. W ten sposób mogę użyć MATCH. Byłoby to OK, jeśli mam ograniczony zestaw takich węzłów czasowych, ale kiedy mam przechowywać znaczniki czasu, nie jest to praktyczne.

Jak zoptymalizować Cyphera do tego typu zapytań? Jak wycinać w czasie wykres z węzłami i relacjami mającymi wskaźniki czasu ważności?

+0

Cypher automatycznie ściąga wyrażeń do klauzul meczu w miarę możliwości, więc są one oceniane, jak tylko mogą być. –

+0

Czy rzeczywiście możesz pokazać swoje zapytanie? –

+0

Czy znalazłeś rozwiązanie, które działało w tym celu? – John

Odpowiedz

4

Widziałeś modelowanie timeline opisane tutaj: http://docs.neo4j.org/chunked/milestone/cypher-cookbook-path-tree.html

+1

Działa to w przypadku ograniczonego czasu zdarzeń, ale nie można modelować czasu w dół do sekund lub mniej. To jest to, co już zasugerowałem, ale nie skaluje się. – ignazw

+0

Co z podziałem modelu, w którym dbasz o dni używania powyższego modelu i utrzymywania tylko czasu na węźle? Nie masz pewności co do rodzaju danych, ale możesz również przedłużyć ten sam model do czasu i po prostu utworzyć relacje czasowe na żądanie ... ponownie, może to być niepraktyczne dla wzorca danych, który masz – Luanne

Powiązane problemy