IP Library › Granted Patent US 12,481,703
Granted Patent B2
US 12,481,703 · App. 16/834,891 · Granted Nov 25, 2025

Shard hashing for database objects within a distributed database

Inventor: Jeronimo Irazabal (Buenos Aires, AR)
Assignee: International Business Machines Corporation
G06F16/9027G06F16/9014H04L9/0643H04L9/50
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,481,703
App. No.
16/834,891
Filed
Mar 30, 2020
Granted
Nov 25, 2025
Kind
B2
Examiner
LE, MICHAEL
Art Unit
2163
USPC
707/797
Abstract

An example operation may include one or more of storing an object across a plurality of shards of a database, generating a sequence of local hash values from the plurality of shards based on respective object content stored locally within the plurality of shards, converting the sequence of local hash values from the plurality of shards into a global hash value for the database, and storing an identifier of the object paired with the global hash value in the database.

Claims (67)

1 . An apparatus, comprising:

a database partitioned into a plurality of shards; and

a hardware-implemented processor configured to:

store a plurality of fragments of an object across a subset of shards of the plurality of shards, wherein

each fragment of the plurality of fragments is stored in a respective shard of the subset of shards;

assign each fragment of the plurality of fragments stored in the respective shard to a corresponding hash tree, of a plurality of hash trees, associated with the respective shard;

generate a first local hash value for each shard of the subset of shards based on the assignment of each fragment of the plurality of fragments;

combine the first local hash value of each shard of the subset of shards into a first sequence to generate a plurality of intermediate hash values;

roll up the plurality of intermediate hash values via a Merkle tree to generate a first root hash value for the object;

at a first time, generate a first snapshot of the database, wherein the first snapshot comprises the first root hash value and a first global hash value associated with the first root hash value;

at a second time later than the first time:

combine a second local hash value of each shard of the subset of shards into a second sequence to generate a second root hash value for the object;

generate a second global hash value based on the second root hash value, the first global hash value of the first snapshot, and a number value of the first snapshot; and

generate a second snapshot of the database, wherein

the second snapshot comprises the second root hash value and the second global hash value, and

the second snapshot is cryptographically linked to the first snapshot based on the second global hash value.

2 . The apparatus of claim 1 , wherein a storage format of each shard of the subset of shards comprises one of a log-structured merge tree or a b-tree.

3 . The apparatus of claim 1 , wherein the hardware-implemented processor is further configured to:

hash a plurality of key-value pairs stored in each shard of the subset of shards, wherein

the plurality of key-value pairs in each shard of the subset of shards is associated with a respective fragment of the plurality of fragments; and

assign at least one hashed key-value pair of the plurality of hashed key-value pairs to a respective leaf node of a plurality of leaf nodes of the corresponding hash tree.

4 . The apparatus of claim 1 , wherein the hardware-implemented processor is further configured to:

assign the first local hash value of each shard of the subset of shards to a respective leaf node of a plurality of leaf nodes of the Merkle tree; and

determine a root hash value of the Merkle tree as the first root hash value for the object based on the assignment of the first local hash value of each shard of the subset of shards.

5 . A method, comprising:

storing an object within a database partitioned into a plurality of shards, wherein

the storing of the object comprises storing each fragment of a plurality of fragments of the object in a respective shard of a subset of shards of the plurality of shards of the database;

assigning each fragment of the plurality of fragments stored in the respective shard to a corresponding hash tree, of a plurality of hash trees, associated with the respective shard;

generating a first local hash value for each shard of the subset of shards based on the assigning of each fragment of the plurality of fragments;

combining the first local hash value of each shard of the subset of shards into a first sequence to generate a plurality of intermediate hash values;

rolling up the intermediate hash values via a Merkle tree to generate a first root hash value for the object;

at a first time, generating a first snapshot of the database, wherein the first snapshot comprises the first root hash value and a first global hash value associated with the first root hash value;

at a second time later than the first time:

combining a second local hash value of each shard of the subset of shards into a second sequence to generate a second root hash value for the object;

generating a second global hash value based on the second root hash value, the first global hash value of the first snapshot, and a number value of the first snapshot; and

generating a second snapshot of the database, wherein

the second snapshot comprises the second root hash value and the second global hash value, and

the second snapshot is cryptographically linked to the first snapshot based on the second global hash value.

6 . The method of claim 5 , wherein a storage format of each shard of the subset of shards comprises one of a log-structured merge tree or a b-tree.

7 . The method of claim 5 , further comprising:

hashing a plurality of key-value pairs stored in each shard of the subset of shards, wherein

the plurality of key-value pairs in each shard of the subset of shards is associated with a respective fragment of the plurality of fragments; and

assigning at least one hashed key-value pair of the plurality of hashed key-value pairs to a respective leaf node of a plurality of leaf nodes of the corresponding hash tree.

8 . The method of claim 5 , further comprising:

assigning the first local hash value of each shard of the subset of shards to a respective leaf node of a plurality of leaf nodes of the Merkle tree; and

determining a root hash value of the Merkle tree as the first root hash value for the object based on the assigning of the first local hash value of each shard of the subset of shards.

9 . A non-transitory computer-readable medium comprising instructions that, when executed by a processor, cause the processor to perform:

storing an object within a database partitioned into a plurality of shards, wherein

the storing of the object comprises storing each fragment of a plurality of fragments of the object in a respective shard of subset of shards of the plurality of shards of the database;

assigning each fragment of the plurality of fragments stored in the respective shard to a corresponding hash tree, of a plurality of hash trees, associated with the respective shard;

generating a first local hash value for each shard of the subset of shards based on the assigning of each fragment of the plurality of fragments;

combining the first local hash value of each shard of the subset of shards into a first sequence to generate a plurality of intermediate hash values;

rolling up the intermediate hash values via a Merkle tree to generate a first root hash value for the object;

at a first time, generating a first snapshot of the database, wherein the first snapshot comprises the first root hash value and a first global hash value associated with the first root hash value;

at a second time later than the first time:

combining a second local hash value of each shard of the subset of shards into a second sequence to generate a second root hash value for the object;

generating a second global hash value based on the second root hash value, the first global hash value of the first snapshot, and a number value of the first snapshot; and

generating a second snapshot of the database, wherein

the second snapshot comprises the second root hash value and the second global hash value, and

the second snapshot is cryptographically linked to the first snapshot based on the second global hash value.

10 . The non-transitory computer-readable medium of claim 9 , wherein the instructions further cause the processor to perform:

hashing a plurality of key-value pairs stored in each shard of the subset of shards, wherein

the plurality of key-value pairs in each shard of the subset of shards is associated with a respective fragment of the plurality of fragments; and

assigning at least one hashed key-value pair of the plurality of hashed key-value pairs to a respective leaf node of a plurality of leaf nodes of the corresponding hash tree.

11 . The non-transitory computer-readable medium of claim 9 , wherein the instructions further cause the processor to perform:

assigning the first local hash value of each shard of the subset of shards to a respective leaf node of a plurality of leaf nodes of the Merkle tree; and

determining a root hash value of the Merkle tree as the first root hash value for the object based on the assigning of the first local hash value of each shard of the subset of shards.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2020
From: IRAZABAL, JERONIMO
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 052264/0560 →
Continuity (1)
Related Publication 20210303633A1 · Sep 30, 2021
References Cited (103)
US 5832487A · Olds · 1998 [cited by examiner]
US 7356549B1 · Bruso · 2008 [cited by examiner]
US 9009199B2 · Asmundsson · 2015 [cited by examiner]
US 9122741B1 · McAlister · 2015 [cited by examiner]
US 9177079B1 · Ramachandran · 2015 [cited by examiner]
US 9256659B1 · Willett · 2016 [cited by examiner]
US 9286003B1 · Hallak · 2016 [cited by examiner]
US 9329940B2 · Baptist · 2016 [cited by examiner]
US 9342406B2 · Grube · 2016 [cited by examiner]
US 9606858B2 · Resch · 2017 [cited by examiner]
US 9680655B2 · Ryan · 2017 [cited by examiner]
US 10193696B2 · Struttmann · 2019 [cited by examiner]
US 10235090B1 · Baruch · 2019 [cited by examiner]
US 10289631B2 · Madisetti et al. · 2019 [cited by applicant]
US 10338972B1 · Acheson · 2019 [cited by examiner]
US 10379890B1 · Mehta · 2019 [cited by examiner]
US 10592153B1 · Subramaniam · 2020 [cited by examiner]
US 10656857B2 · Hallak · 2020 [cited by examiner]
US 11030187B1 · Boodman · 2021 [cited by examiner]
US 11036677B1 · Grunwald · 2021 [cited by examiner]
US 11036762B1 · Bruck · 2021 [cited by examiner]
US 11074244B1 · Mritunjai · 2021 [cited by examiner]
US 11106708B2 · Lu · 2021 [cited by examiner]
US 20010034839A1 · Karjoth · 2001 [cited by examiner]
US 20050021287A1 · Rjaibi · 2005 [cited by examiner]
US 20050038784A1 · Zait · 2005 [cited by examiner]
US 20050114666A1 · Sudia · 2005 [cited by examiner]
US 20060059333A1 · Gentry · 2006 [cited by examiner]
US 20060116989A1 · Bellamkonda · 2006 [cited by examiner]
US 20080133906A1 · Parkinson · 2008 [cited by examiner]
US 20100146003A1 · Bruso · 2010 [cited by examiner]
US 20100281013A1 · Graefe · 2010 [cited by examiner]
US 20110185253A1 · Resch · 2011 [cited by examiner]
US 20120047284A1 · Tarkoma · 2012 [cited by examiner]
US 20120310916A1 · Abadi · 2012 [cited by examiner]
US 20120330954A1 · Sivasubramanian · 2012 [cited by examiner]
US 20130246431A1 · Ahuja · 2013 [cited by examiner]
US 20130275774A1 · Maheshwari · 2013 [cited by examiner]
US 20140025607A1 · Wang · 2014 [cited by examiner]
US 20140046909A1 · Patiejunas · 2014 [cited by examiner]
US 20140090023A1 · Hu · 2014 [cited by examiner]
US 20140149794A1 · Shetty · 2014 [cited by examiner]
US 20150066857A1 · Dayal · 2015 [cited by examiner]
US 20150143136A1 · Barney · 2015 [cited by examiner]
US 20150347453A1 · Shetty · 2015 [cited by examiner]
US 20160239529A1 · Bulkowski · 2016 [cited by examiner]
US 20160378824A1 · Li · 2016 [cited by examiner]
US 20170024428A1 · Patiejunas · 2017 [cited by examiner]
US 20170300490A1 · Kachemir · 2017 [cited by examiner]
US 20180039671A1 · Yang · 2018 [cited by examiner]
US 20180089041A1 · Smith · 2018 [cited by examiner]
US 20180276269A1 · Rasscevskis · 2018 [cited by examiner]
US 20180300350A1 · Mainali · 2018 [cited by examiner]
US 20180322161A1 · Horii · 2018 [cited by examiner]
US 20180336263A1 · Bensberg · 2018 [cited by examiner]
US 20190018984A1 · Setty et al. · 2019 [cited by applicant]
US 20190034507A1 · Duttagupta · 2019 [cited by examiner]
US 20190149320A1 · Keselman · 2019 [cited by examiner]
US 20190182313A1 · Yoo · 2019 [cited by examiner]
US 20190188086A1 · Maeda · 2019 [cited by examiner]
US 20190199515A1 · Carver · 2019 [cited by examiner]
US 20190273617A1 · Maher · 2019 [cited by examiner]
US 20190303234A1 · Chella · 2019 [cited by examiner]
US 20190334726A1 · Kelly · 2019 [cited by examiner]
US 20190334920A1 · Kelly · 2019 [cited by examiner]
US 20190349426A1 · Smith · 2019 [cited by examiner]
US 20190349733A1 · Nolan · 2019 [cited by examiner]
US 20190363874A1 · Shirley · 2019 [cited by examiner]
US 20190370241A1 · Miraldo · 2019 [cited by examiner]
US 20190392047A1 · Sorenson, III · 2019 [cited by examiner]
US 20200004851A1 · Lambov · 2020 [cited by examiner]
US 20200057865A1 · Yan · 2020 [cited by examiner]
US 20200084041A1 · Xu · 2020 [cited by examiner]
US 20200104294A1 · Alas · 2020 [cited by examiner]
US 20200127833A1 · Konda · 2020 [cited by examiner]
US 20200153627A1 · Wentz · 2020 [cited by examiner]
US 20200201679A1 · Wentz · 2020 [cited by examiner]
US 20200320340A1 · Wentz · 2020 [cited by examiner]
US 20200322159A1 · Xu · 2020 [cited by examiner]
US 20200356566A1 · Ransil · 2020 [cited by examiner]
US 20200372015A1 · Baird, III · 2020 [cited by examiner]
US 20210019326A1 · Rauch · 2021 [cited by examiner]
US 20210021426A1 · Scherrer · 2021 [cited by examiner]
US 20210049156A1 · Lu · 2021 [cited by examiner]
US 20210049157A1 · Lu · 2021 [cited by examiner]
US 20210117274A1 · Federwisch · 2021 [cited by examiner]
US 20210117276A1 · Federwisch · 2021 [cited by examiner]
US 20210273807A1 · Wertheim · 2021 [cited by examiner]
US 20210288971A1 · Karlberg · 2021 [cited by examiner]
US 20230054245A1 · Wright · 2023 [cited by examiner]
CN 109791542A · 2019 [cited by examiner]
EP 3313020A1 · 2018 [cited by examiner]
WO WO2008014002A2 · 2008 [cited by examiner]
Poon et al., The bitcoin lightning network: Scalable off-chain instant payments. [cited by applicant]
Croman et al. “On scaling decentralized blockchains.” International Conference on Financial Cryptography and Data Security. Springer, Berlin, Heidelberg, 2016. [cited by applicant]
Lesnikov, “Shard X - blockchain API with MPC signing” Technical Whitepaper, date not available. [cited by applicant]
Luu et al. “A secure sharding protocol for open blockchains.” Proceedings of the 2016 Acm Sigsac Conference on Computer and Communications Security. ACM, 2016. [cited by applicant]
Poon et al., The bitcoin lightning network: Scalable off-chain instant payments Jan. 14, 2016. [cited by applicant]
Wahab, “Privacy in Blockchain Systems.” arXiv preprint arXiv:1809.10642 (2018). [cited by applicant]
Wang et al. “SoK: Sharding on Blockchain.” Proceedings of the 1st ACM Conference on Advances in Financial Technologies. ACM, 2019. [cited by applicant]
Zamani et al., “Rapidchain: Scaling blockchain via full sharding.” Proceedings of the 2018 Acm Sigsac Conference on Computer and Communications Security. ACM, 2018. [cited by applicant]
No. Author. “Amazon Quantum Ledger Database (QLDB)”, https://web.archive.org/web/20200324133504/https://aws.amazon.com/qldb/, Mar. 24, 2020, 3 pages, https://web.archive.org/web/20200324133504/https://aws.amazon.com/qld… [cited by applicant]
No. Author. “Meet BigchainDB”, The Blockchain Database, Mar. 6, 2020, 7 pages, https://web.archive.org/web/20200306143659/https://www.bigchaindb.com/. [cited by applicant]