×

Immutable datastore for low-latency reading and writing of large data sets

  • US 10,042,782 B2
  • Filed: 08/11/2017
  • Issued: 08/07/2018
  • Est. Priority Date: 06/02/2015
  • Status: Active Grant
First Claim
Patent Images

1. A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations comprising:

  • receiving, with one or more processors, a write command requesting that a document associated with the write command be stored in an immutable data structure that prevents an attacker attempting to modify the document from concealing that the document was modified after storing the document in the data structure;

    in response to the write command, forming, with one or more processors, at least part of a directed acyclic graph having a plurality of nodes and edges linking respective pairs of the nodes, wherein;

    nodes of the directed acyclic graph have respective node identifiers that distinguish between different nodes of the directed acyclic graph;

    nodes of the directed acyclic graph have node content;

    each of at least some nodes of the directed acyclic graph have the node content that includes a plurality of cryptographic hash values;

    the cryptographic hash values of each node are each (i) a cryptographic hash function output based on node content of another respective node of the directed acyclic graph and (ii) associated with a node identifier of the other respective node, thereby designating an edge of the directed acyclic graph; and

    forming the at least part of the directed acyclic graph comprises;

    writing data encoding at least some of the document to node content of a first set of nodes of the directed acyclic graph; and

    from the first set of nodes, traversing edges of the directed acyclic graph and forming node content of nodes visited via the traversing by determining the cryptographic hash values of the visited nodes;

    storing, with one or more processors, the directed acyclic graph in memory;

    receiving a read command requesting that the document be retrieved from the immutable data structure;

    accessing the first set of nodes of the directed acyclic graph to retrieve at least part of the document;

    determining whether the at least part of the document has been modified at least in part by;

    calculating one or more cryptographic hash values based on node content of the first set of nodes;

    comparing the one or more calculated cryptographic hash values to one or more corresponding cryptographic hash values of node content of nodes adjacent the first set of nodes in the directed acyclic graph; and

    determining that the at least part of the document has not been modified based on the comparison, wherein;

    the document is a file larger than 1 kilobyte;

    the directed acyclic graph includes a binary tree;

    the document is stored in one or more leaf nodes of the binary tree;

    the directed acyclic graph includes a second set of nodes disjoint from the first set of nodes, the second set of nodes being part of the binary tree and visited nodes during the traversing of edges of the directed acyclic graph;

    traversing comprises forming a visited node to which traversal occurs such that at least part of the binary tree is formed during traversing;

    traversing comprises traversing from leaf nodes of the binary tree toward a root node of the binary tree;

    forming at least part of the directed acyclic graph comprises forming the entire binary tree;

    storing the directed acyclic graph in memory comprises storing three or more different instances of the directed acyclic graph in three or more different computing devices on three or more different subnetworks;

    the directed acyclic graph is a binary tree;

    at least part of the document is stored in one or more leaf nodes of the binary tree;

    a root node of the binary tree has node content including a cryptographic hash value that is based on node content of every node of the binary tree;

    the document is encoded in encrypted form in the node content of one or more leaf nodes;

    the document is compressed with entropy coding before being encrypted into the encrypted form; and

    read latency of the data structure scales at least in part based on a value proportionate to nlog(n), where n is a number of entries in the data structure.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×