A fault-tolerant method for distributing a plurality of data records to a plurality of nodes, the method comprising: generating one or more distribution tables, each distribution table including k+1 columns wherein each entry in a particular column in the one or more distribution tables corresponds to a copy of one of the plurality of the data records and is associated with a fault status, a node, and a group based on a position of the entry in the particular column within the one or more distribution tables; for each entry in the particular column in the one or more distribution tables, storing the copy of the data record that corresponds to the entry in a database included in a plurality of databases within a tree of databases, wherein the tree of databases that the copy of the data record is stored in corresponds to the fault status, the node, and the group based on the position of the corresponding entry in the particular column; in response to determining one or more unavailable nodes of the plurality of nodes, determining a fault status, a node, and a group based on the one or more unavailable nodes and one or more available nodes of the plurality of nodes; providing the one or more available nodes access to at least a portion of the copies of data records that are stored in a particular database of the plurality of databases within the tree of databases, wherein the particular database corresponds to the determined fault status, the node, and the group; determining a serial identification associated with a particular data record of the plurality of data records; determining a current position based on the serial ID: determining a cyclic distance based on the current position and a count of the plurality of nodes; and generating a correspondence between a copy of the particular data record and an entry in the one or more distribution tables, wherein a position of the entry in the particular column is based on the cyclic distance. generating one or more distribution tables, each distribution table including k+1 columns wherein each entry in a particular column in the one or more distribution tables corresponds to a copy of one of the plurality of the data records and is associated with a fault status, a node, and a group based on a position of the entry in the particular column within the one or more distribution tables; for each entry in the particular column in the one or more distribution tables, storing the copy of the data record that corresponds to the entry in a database included in a plurality of databases within a tree of databases, wherein the tree of databases that the copy of the data record is stored in corresponds to the fault status, the node, and the group based on the position of the corresponding entry in the particular column; in response to determining one or more unavailable nodes of the plurality of nodes, determining a fault status, a node, and a group based on the one or more unavailable nodes and one or more available nodes of the plurality of nodes; providing the one or more available nodes access to at least a portion of the copies of data records that are stored in a particular database of the plurality of databases within the tree of databases, wherein the particular database corresponds to the determined fault status, the node, and the group; determining a serial identification associated with a particular data record of the plurality of data records; determining a current position based on the serial ID: determining a cyclic distance based on the current position and a count of the plurality of nodes; and generating a correspondence between a copy of the particular data record and an entry in the one or more distribution tables, wherein a position of the entry in the particular column is based on the cyclic distance. determining a cyclic distance based on the current position and a count of the plurality of nodes; and generating a correspondence between a copy of the particular data record and an entry in the one or more distribution tables, wherein a position of the entry in the particular column is based on the cyclic distance.