Non-blocking secondary reads
AssigneeMongoDB, Inc.
InventorEliot Horowitz
Life of this patent
Estimating the term…
Abstract
Described herein are embodiments of a database system. The database system receives a read command to read at least some stored data. The database system may generate a plurality of snapshots of data stored in a first data storage node of a plurality of data storage nodes. The database system may determine whether data is being written to the first data storage node. Responsive to determining that data is not being written to the first data storage node, the database system may process the read command at least in part by reading at least some data stored on the first data storage node. Responsive to determining that data is being written to the first data storage node, the database system may process the read command at least in part by reading at least some data from a snapshot of the plurality of snapshots.
Claims20
A database system comprising:
- a database comprising a plurality of data storage nodes, the plurality of data storage nodes including a primary data storage node and a plurality of secondary data storage nodes;
- at least one processor configured to execute a plurality of operations comprising:
- receiving at least one write command to write data to the database and at least one read command configured to read data from the database;
- generating a plurality of snapshots of data stored in a secondary data storage node of the plurality of secondary data storage nodes;
- applying the at least one write command to the secondary data storage node;
- and
- reading at least some data from a snapshot of the plurality of snapshots of data stored in the secondary data storage node, wherein at least part of the reading is performed in parallel with at least part of applying the at least one write command to the secondary data storage node.
A method of performing, by one or more processors, operations in a database comprising a plurality of data storage nodes, the method comprising:
- receiving at least one write command to write data to the database and at least one read command configured to read data from the database;
- generating a plurality of snapshots of data stored in a secondary data storage node of the plurality of secondary data storage nodes of the plurality of data storage nodes;
- applying the at least one write command to the secondary data storage node;
- and
- reading at least some data from a snapshot of the plurality of snapshots of data stored in the secondary data storage node, wherein at least part of the reading is performed in parallel with at least part of applying the at least one write command to the secondary data storage node.
A database system comprising:
- at least one processor configured to execute a plurality of operations comprising:
- receiving a read command to read at least some stored data;
- generating a plurality of snapshots of data stored in a first data storage node of a plurality of data storage nodes;
- determining whether data is being written to the first data storage node;
- responsive to determining that data is not being written to the first data storage node, processing the read command at least in part by reading at least some data stored on the first data storage node;
- and
- responsive to determining that data is being written to the first data storage node, processing the read command at least in part by reading at least some data from a snapshot of the plurality of snapshots of data stored in the first data storage node, wherein at least part of the reading is performed in parallel with at least part of writing data to the first data storage node.
A method of performing, by one or more processors, operations in a database comprising a plurality of data storage nodes, the method comprising:
- receiving a read command to read at least some stored data;
- generating a plurality of snapshots of data stored in a first data storage node of the plurality of data storage nodes;
- determining whether data is being written to the first data storage node;
- and
- processing the read command at least in part by reading at least some data stored on the first data storage node responsive to determining that data is not being written to the first data storage node;
- and
- processing the read command at least in part by reading at least some data from a snapshot of the plurality of snapshots of data stored in the first data storage node, wherein at least part of the reading is performed in parallel with at least part of writing data to the first data storage node, the processing being responsive to determining that data is being written to the first data storage node.
Dependencies are inferred from the claim text.