BACKGROUND

The subject disclosure relates to database systems, and more specifically, to distributed graph databases that facilitate streaming data insertion and queries.

SUMMARY

The following presents a summary to provide a basic understanding of one or more embodiments of the invention. This summary is not intended to identify key or critical elements, or delineate any scope of the particular embodiments or any scope of the claims. Its sole purpose is to present concepts in a simplified form as a prelude to the more detailed description that is presented later. In one or more embodiments described herein, devices, systems, computer-implemented methods, apparatus and/or computer program products that facilitate distributed graph databases for streaming data insertion and queries are described.

According to an embodiment, a computer-implemented method to reduce number of messages required to add a new edge by employing asynchronous communication, comprises: using a processor, operatively coupled to at least one memory, to execute the following acts: receiving a request at a first machine to add a first target; adding the first target at the first machine, generating a unique VIDT, and forwarding the VIDT to a second machine wherein the second machine adds a vertex, and generates a corresponding VIDS, comprising the acts of: Prepare EID as {ShardID, MAXEID}, incrementing MAXEID; adding an outgoing edge {VIDS,VIDT, LID, EID}; forwarding {VIDS,VIDT,LID,EID} to the first machine; and adding at the first machine the incoming edge.

In another embodiment, a computer-implemented method for efficient throughput edge addition, comprises: using a processor, operatively coupled to at least one memory, to execute the following acts: determine vertex placement, based on a hash or an arbitrary placement function; place outgoing edge requests into appropriate queues of a firehose; and place incoming edge requests into appropriate queues of the firehose, wherein for each queue, in parallel: send requests to add vertices for all sources in an outgoing edges set, and all targets in an incoming edges set, and wait for vertex ids of all added vertices and MAXEID from each machine, respectively. Build the final edge tuples for each queue in the form of {YIDS, VIDT, LID, EID} based on the yids returned and insert the outgoing and incoming edge tuples and their corresponding shards.

In yet another embodiment, a method to provide low latency graph queries, comprises: using a processor, operatively coupled to at least one memory, to execute the following acts: employing a query manager to perform graph queries; and employing the query manager to manage multiple threads of execution to handle multiple concurrent queries from one or more clients; wherein for a complete traversal, a thread running on the query manager performs multiple requests to various shards during multiple waves corresponding to traversal levels, and wherein the thread will maintain all partial results until the traversal finishes (max depth, max nodes, max time allowed) and then return results to clients.

In some embodiments, elements described in connection with the computer-implemented method(s) can be embodied in different forms such as a system, a computer program product, or another form.

