Hi, i am considering how to capture the "date/time" dimension efficiently in a graph. The bigger idea being able to query on the exact status of my graph in any point in time (history) .. this includes when nodes are created , modified and also when relations are created and modified
Since i would like to query the information and the graph can become huge i do not want to store time based events in attributes.. it guess it must be in relations to allow for the graph traversal to work fast and prevent a lot of attribute lookups Following some samples i found in the "Graph Databases" book and some samples Peter provided before one could make a "timeline" and link the nodes from your graph to the nodes of this "timeline" The "timeline" itself (if would like to go down to he "seconds" level) looks like a giant tree having one node for each year, 12 nodes per year for each month , 28/29/30 or 31 days for each month , 25 hours per day , 60 minutes per hour and 60 secs per minute.. each related top down... and horizontal with a NEXT / PREV relation.. So far so good. When a node is created one could give it a :CREATED relation to the (seconds) node representing the time at that moment. So every node will have at least one link to the "timeline" when created. If attributes change on an node actually one would have to duplicate the node and set some relations again to the "timeline" to indicate the change and between the nodes itself to indicate which is the "NEXT" instance. Although it cam become messy this would allow for some queries where you could really see the state at some point in time .. or between or before some point in time. NOW the main point of my question ... ... if i also want to know "timeline" based info on when RELATIONS between nodes are created / changed / removed etc i wonder how to do that optimally in a huge graph ?? Actually i think that the relation that exists between 2 nodes maybe must be replaced by a "node" representing the relation.. so (a)-[:KNOWS]->(b) becomes (a)-[:KNOWS]->(likes)-[:KNOWS]->(b) which allows for the linking of the "relation" node (likes) to the timeline too so that you also can see (and mainly efficiently query on) exactly when a relation is set So ... has anyone experience with this way of working ? Would that somehow be manageable in a really huge graph ? Other ideas ? I made the assumption that the time dimension must be captured in relations iso attributes since that is what a graph is good at thx for any addl ideas reg koen -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
