In our increasingly connected and instrumented
world, live data recording the interactions between people, systems, and the
environment is available in various domains, such as telecommunications and
social media. This data often takes the form of a temporally evolving graph,
where entities are the vertices and the interactions between them are the
edges. An important feature of this graph is that the number of edges it has
grows continuously, as new interactions take place. We call such graphs
interaction graphs. In this paper we study the problem of storing interaction
graphs such that temporal queries on them can be answered efficiently. Since
interaction graphs are append-only and edges are added continuously,
traditional graph layout and storage algorithms that are batch based cannot be
applied directly. We present the design and implementation of a system that
caches recent interactions in memory, while quickly placing the expired
interactions to disk blocks such that those edges that are likely to be
accessed together are placed together. We develop live block formation
algorithms that are fast, yet can take advantage of temporal and spatial
locality among the edges to optimize the storage layout with the goal of
improving query performance. We evaluate the system on synthetic as well as
real-world interaction graphs, and show that our block formation algorithms are
effective for answering temporal neighborhood queries on the graph. Such
queries form a foundation for building more complex online and offline temporal
analytics on interaction graphs
No comments:
Post a Comment