Patent ID: 9251232
Filing Date: 2016-02-02
CPC Classification: G06F

Claim Text:
1. A database controller for a database, stored on a non-transitory computer readable storage medium, when executed by a computer, for storing graph data encoded as triples, each triple comprising a subject, a predicate, and an object, and each stored within a data item among a set of data items ordered according to the triple stored within, with each data item being stored on a storage node from among a plurality of storage nodes distributed in a network; the database controller comprising: a storage request receiver configured to receive a request to store a triple in the database; a data item generation module configured to generate two or more data items each having a different version of the triple from among the following: a first version in which the subject precedes the predicate and the object in the data item; a second version in which the predicate precedes the subject and the object in the data item; and a third version in which the object precedes the subject and the predicate in the data item; and the database controller further comprises: an instruction distributer configured to, for each of the two or more data items, select a storage node from among the plurality of storage nodes to instruct to store the data item, the selection being made in dependence upon the position of the data item within the ordered set, the instruction distributer including a redundancy module configured to ensure that at least two different storage nodes from among the plurality of storage nodes are instructed to store a data item including a version of the triple; wherein the instruction distributer is configured to select a storage node from among the plurality of storage nodes to instruct to store the data item in a deterministic fashion, and the redundancy module is configured to, following the selection of storage nodes for the two or more data items, obtain a count of the number of different storage nodes from among the storage nodes selected to store the two or more data items, and if the count is less than the number of different storage nodes that the redundancy module is configured to ensure are instructed to store a data item including a version of the triple, then the redundancy module is configured to instruct a number, equal to the difference between the count and the number of different storage nodes that the redundancy module is configured to ensure are instructed to store a data item including a version of the triple, of additional storage nodes from among the plurality of storage nodes to store a further data item including a version of the triple.