CN111680019B - 一种区块链的数据扩容方法及其装置 - Google Patents
一种区块链的数据扩容方法及其装置 Download PDFInfo
- Publication number
- CN111680019B CN111680019B CN202010358782.1A CN202010358782A CN111680019B CN 111680019 B CN111680019 B CN 111680019B CN 202010358782 A CN202010358782 A CN 202010358782A CN 111680019 B CN111680019 B CN 111680019B
- Authority
- CN
- China
- Prior art keywords
- local database
- data
- read
- database node
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000013507 mapping Methods 0.000 claims abstract description 99
- 238000013508 migration Methods 0.000 claims abstract description 53
- 230000005012 migration Effects 0.000 claims abstract description 53
- 238000010276 construction Methods 0.000 claims abstract description 8
- 230000008014 freezing Effects 0.000 claims description 11
- 238000007710 freezing Methods 0.000 claims description 11
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种区块链的数据扩容方法及其装置,其中数据扩容方法包括:建立多个本地数据库节点,根据哈希环构建区块链的数据与本地数据库节点的映射关系,区块链的数据以Key‑Value键值对的形式存储至本地数据库节点中;当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,将待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;根据待读取数据的Key值依照映射关系查找多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到并在待读取数据所在的待读取的本地数据库节点中读取待读取数据。本发明的有益效果:突破原有的区块链的容量限制,并减轻性能衰减。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链的数据扩容方法及其装置。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据;并且每台计算设备都可以参与数据库记录,并通过共识算法实现各计算设备之间可以快速地进行数据同步,从而保证数据的不可伪造和篡改,进而使得区块链技术在众多的领域中广泛地进行应用。
世界状态是基于账户模型的区块链系统在交易执行完之后产生的状态信息的总和,包括所有区块链中账户的包括余额在内的账户信息,和所有智能合约的状态信息。因而,智能合约的调用或者在不调用合约情况下的转账操作都会导致世界状态的改变。每一个区块的交易执行之后产生的最新世界状态,是下一个区块的交易执行的基础,准确地说,每笔交易的执行都会在前一笔交易执行之后的最新世界状态的基础上继续修改。
在一些基于账户模型的区块链系统中,交易、区块等类型的数据被存储到专用的数据库类型中,这样便有可能可以通过数据归档等技术手段对数据大小进行控制,即把很久之前的需要查询或校验的交易和区块数据迁移到线下用于存储归档数据的低成本介质或机器中,这样一来减小了线上的数据量,缓解了线上存储压力,二来即使以后需要访问这些数据,也可以从线下找到。然而即使在这样的系统中,依旧存在状态数据这一数据类型,它无法使用数据归档来缓解单节点的存储压力,这是因为旧的状态数据是基于账户模型的区块链系统执行交易和产生新的状态数据的基础,比如进行一笔转账交易,转入账户和转出账户在转账完成之后的账户余额的计算是基于转账之前各自的账户余额的,这些余额就记录在状态数据库中,一旦这些数据被归档,就会导致后续的转账交易的效率奇低,甚至无法正常执行。对于未进行数据类型拆分的数据库系统,这一问题更为严重。
本地数据库,在使用时往往会将数据库的底层数据存储放在单一磁盘的单一路径下。目前市面上已有通过将本地数据库的底层存储分散到多个磁盘、多个路径下的方法。现有技术通常采用下述方案:将多个磁盘或路径进行编号,然后将LSM文件树中的文件,根据存储路径的个数进行哈希映射,并存储到相应编号的路径下;当需要新增一个存储路径(往往对应着一个新的存储介质)时,便给新的存储路径一个新的编号,然后新生成的文件就会按照增加后的路径个数进行散列,但访问之前的文件时,由于文件映射关系被打乱,就需要遍历每一个路径。然而上述现有技术存在下述两个问题:一是可能出现的各个路径的文件遍历成本过高,二是数据库的读性能会随着数据量的增加而不断降低,另外读操作引发的文件重新整理的操作又回反过来进一步影响写性能乃至整个系统其他部分的性能。
发明内容
针对现有技术中存在的上述问题,现提供一种区块链的数据扩容方法及其装置。
具体技术方案如下:
一种区块链的数据扩容方法,其中,包括以下步骤:
建立多个本地数据库节点,根据哈希环构建区块链的数据与本地数据库节点的映射关系,区块链的数据以Key-Value键值对的形式存储至本地数据库节点中;
当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,将待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;
根据待读取数据的Key值依照映射关系查找与待读取数据的Key值相关联的多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到待读取数据所在的待读取的本地数据库节点,并在查找到的待读取的本地数据库节点中读取待读取数据;
其中,历史数据库用于读取数据。
优选的,区块链的数据扩容方法,其中,还包括:
根据一存储路径建立一个新的本地数据库节点,并将新的本地数据库节点映射到哈希环上。
优选的,区块链的数据扩容方法,其中,存储路径由用户自设定,当与存储路径对应的本地数据库节点在哈希环上的映射位置上已存在其他本地数据库节点时,不建立与存储路径对应的本地数据库节点。
优选的,区块链的数据扩容方法,其中,
建立多个数据库,并将至少一个用于读、写数据的读写数据库和至少一个历史数据库形成一个本地数据库节点;
将本地数据库节点映射到哈希环上,以形成本地数据库集群;
将要存储到本地数据库集群的数据的Key值映射到哈希环上,并将Key值对应的数据写入到与Key值对应的本地数据库节点上。
优选的,区块链的数据扩容方法,其中,
新建本地数据库节点,当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,待迁移的本地数据库节点在哈希环上的映射位置与新建的本地数据库节点在哈希环上的映射位置相邻设置;
将待迁移的本地数据库节点中的读写数据库和历史数据库冻结成冻结数据库,并在待迁移的本地数据库节点中建立新的读写数据库和新的历史数据库;
将待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;
删除待迁移的本地数据库节点中的冻结数据库。
优选的,区块链的数据扩容方法,其中,
对待读取数据的Key值进行哈希运算,根据运算结果依照映射关系查找与待读取数据的Key值对应的待读取的本地数据库节点;
判断与待读取数据的Key值对应的待读取的本地数据库节点是否进行数据迁移;
若是,在与待读取的本地数据库节点相邻的一个本地数据库节点中的冻结数据库中查找并读取待读取数据;
若否,在与待读取数据的Key值对应的待读取的本地数据库节点的读写数据库中查找并读取待读取数据。
优选的,区块链的数据扩容方法,其中,还包括:
根据待写入数据的Key值依照映射关系查找到与待写入数据的Key值对应的待写入的本地数据库节点,并将待写入数据写入到待写入的本地数据库节点上。
还包括一种区块链的数据扩容装置,其中,包括:
构建模块,用于建立多个本地数据库节点,根据哈希环构建区块链的数据与本地数据库节点的映射关系,区块链的数据以Key-Value键值对的形式存储至本地数据库节点中;
迁移模块,用于当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,将待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;
读取模块,根据待读取数据的Key值依照映射关系查找与待读取数据的Key值相关联的多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到待读取数据所在的待读取的本地数据库节点,并在查找到的待读取的本地数据库节点中读取待读取数据;
其中,历史数据库用于读取数据。
优选的,区块链的数据扩容装置,其中,迁移模块包括:
设置单元,用于新建本地数据库节点,当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,待迁移的本地数据库节点在哈希环上的映射位置与新建的本地数据库节点在哈希环上的映射位置相邻设置;
冻结单元,用于将待迁移的本地数据库节点中的读写数据库和历史数据库冻结成冻结数据库,并在待迁移的本地数据库节点中建立新的读写数据库和新的历史数据库;
迁移单元,用于将待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;
删除单元,用于删除待迁移的本地数据库节点中的冻结数据库。
优选的,区块链的数据扩容装置,其中,读取模块包括:
查找单元,用于对待读取数据的Key值进行哈希运算,根据运算结果依照映射关系查找与待读取数据的Key值对应的待读取的本地数据库节点;
判断单元,用于判断与待读取数据的Key值对应的待读取的本地数据库节点是否进行数据迁移;
于待读取的本地数据库节点进行数据迁移时,在与待读取的本地数据库节点相邻的一个本地数据库节点中的冻结数据库中查找并读取待读取数据;
于待读取的本地数据库节点未进行数据迁移时,在与待读取数据的Key值对应的待读取的本地数据库节点的读写数据库中查找并读取待读取数据。
上述技术方案具有如下优点或有益效果:
在上述实施例中,通过在本地数据库节点中分别设置用于读、写数据的读写数据库和用于读数据的历史数据库,来缓解每个本地数据库节点的存储压力,并且将只能被读取的数据存储到历史数据库中方便用户对只读数据的查询;
将待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中,从而缓解待迁移的本地数据库节点的存储压力;
并且在读取在本地数据库集群中的待读取数据时,只需遍历与待读取数据的Key值相关联的多个待读取的本地数据库节点就可以实现在少量的本地数据库节点中查找到待读取数据并进行读取,从而减少读取时的本地数据库节点的遍历数据,及其读取性能不会随着本地数据库节点的增加而降低,进而提高读取性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的区块链的数据扩容方法的实施例的数据迁移的结构示意图;
图2为本发明的区块链的数据扩容装置的实施例的原理框图一;
图3为本发明的区块链的数据扩容装置的实施例的原理框图二;
图4为本发明的区块链的数据扩容装置的实施例的构建模块的原理框图;
图5为本发明的区块链的数据扩容装置的实施例的迁移模块的原理框图;
图6为本发明的区块链的数据扩容装置的实施例的读取模块的原理框图。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
并且将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明包括一种区块链的数据扩容方法,包括以下步骤:
步骤S1,建立多个本地数据库节点,根据哈希环构建区块链的数据与本地数据库节点的映射关系,区块链的数据以Key-Value键值对的形式存储至本地数据库节点中;
步骤S2,当待迁移的本地数据库节点6中的待迁移数据满足数据迁移条件时,将待迁移数据分别迁移至待迁移的本地数据库节点6中新建的历史数据库8和新建的本地数据库节点5中的历史数据库8中;
步骤S3,根据待读取数据的Key值依照映射关系查找与待读取数据的Key值相关联的多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到待读取数据所在的待读取的本地数据库节点,并在查找到的待读取的本地数据库节点中读取待读取数据;
其中,历史数据库8用于读取数据。
在上述实施例中,通过在本地数据库节点中分别设置用于读、写数据的读写数据库7和用于读数据的历史数据库8,来缓解每个本地数据库节点的存储压力,并且将只能被读取的数据存储到历史数据库8中方便用户对只读数据的查询;
将待迁移数据分别迁移至待迁移的本地数据库节点6中新建的历史数据库8和新建的本地数据库节点5中的历史数据库8中,从而缓解待迁移的本地数据库节点6的存储压力,进而可以突破原有的区块链的容量限制;
并且在读取在本地数据库集群中的待读取数据时,只需遍历与待读取数据的Key值相关联的多个待读取的本地数据库节点就可以实现在少量的本地数据库节点中查找到待读取数据并进行读取,从而减少读取时的本地数据库节点的遍历数据,及其读取性能不会随着本地数据库节点的增加而降低,进而提高读取性能。
在上述实施例中,Key值为数据的索引,也是数据查询的依据,每一个Key值都会通过哈希运算得到一个对应的数字(例如当哈希环上具有0-31的序号时,每一个Key值都会通过哈希运算得到对应的0-31的数字),该数字就是Key值所对应的数据在哈希环上的映射位置,哈希环上按照一预设规则进行映射,例如Key值在哈希环上的映射位置上的本地数据库节点或顺时针方向的第一个本地数据库节点,就是该Key值所对应的数据应该存在的本地数据库节点。哈希环上的任意一个点都可以和一个本地数据库节点和无限条数据存在对应关系。
进一步的,在上述实施例中,还包括:
步骤S4,根据一存储路径建立一个新的本地数据库节点,并将新的本地数据库节点映射到哈希环上。
在上述实施例中,上述步骤S4可以在步骤S1之后执行,也可以在步骤S2之间执行,可以根据需求在上述步骤S1-S3之间的任何步骤前、中、后执行。
在上述实施例中,当一个本地数据库节点中的数据量较大时,可以根据存储路径新建一个新的本地数据库节点,使得数据量较大的本地数据库节点中的数据可以迁移到新的本地数据库节点中,从而通过创建新的本地数据库节点分担数据量较大的本地数据库节点的存储压力。
其中,新建的本地数据库节点5在哈希环上的映射位置与上述数据量较大的本地数据库节点在哈希环上的映射位置可以为同一个映射位置;
或者,新建的本地数据库节点5在哈希环上的映射位置与上述数据量较大的本地数据库节点在哈希环上的映射位置可以为相邻关系;并且新建的本地数据库节点5在哈希环上的映射位置可以是上述数据量较大的本地数据库节点在哈希环上的映射位置的逆时针方向的相邻位置上,即数据量较大的本地数据库节点在哈希环上的逆时针方向的下一个节点就是新建的本地数据库节点5,也就是说新建的本地数据库节点5在哈希环上的顺时针方向的下一个节点就是上述数据量较大的本地数据库节点。
进一步的,在上述实施例中,存储路径由用户自设定,当与存储路径对应的本地数据库节点在哈希环上的映射位置上已存在其他本地数据库节点时,不建立与存储路径对应的本地数据库节点。
在上述实施例中,存储路径中包括:本地数据库节点中的每个数据库的名称、用于标识或确定每个本地数据库节点在本地数据库集群中的编号,以及每个本地数据库节点在哈希环上的映射位置(即序号)。
作为优选的实施方式,本地数据库节点的新建操作可以由用户自动发起,即可以判断根据用户设定的存储路径新建的本地数据库节点5在哈希环上的映射位置上是否已经存在其他的本地数据库节点;若是,则确定新建的本地数据库节点5与已有的本地数据库节点相冲突,以拒绝本次的本地数据库节点的新建操作,即不建立与存储路径对应的本地数据库节点;若否,则根据用户设定的存储路径来新建的本地数据库节点5,并将与存储路径对应的本地数据库节点映射到哈希环上。
作为优选的实施方式,本地数据库节点的新建操作可以由用户自动发起,即用户设定新建的本地数据库节点5的存储路径,此时的存储路径中并没有设置新建的本地数据库节点5在哈希环上的映射位置;
随后采用区块链的数据扩容方法的系统或装置在一原有的本地数据库节点中的数据满足数据迁移条件时,在满足数据迁移条件的本地数据库节点在哈希环上的映射位置的逆时针方向处获取下一个本地数据库节点,并在满足数据迁移条件的本地数据库节点和下一个本地数据库节点之间的映射位置区间中选择一个映射位置作为新建的本地数据库节点5在哈希环上的映射位置,即采用区块链的数据扩容方法的系统或装置给新建的本地数据库节点5一个哈希环上与满足数据迁移条件的本地数据库节点的相邻的逆时针方向上的尚未映射有本地数据库节点的序号;并完善存储路径,从而根据完善后的存储路径来创建新的本地数据库节点,并将新建的本地数据库节点5映射到哈希环上。
需要说明的是,上述完善存储路径包括:将存储路径中的新建的本地数据库节点5在哈希环上的映射位置设置为:在满足数据迁移条件的本地数据库节点和下一个本地数据库节点之间的映射位置区间中选择的映射位置。
其中,上述满足数据迁移条件的本地数据库节点和下一个本地数据库节点在哈希环上的位置关系为相邻关系。
需要说明的是,由于数据迁移需要消耗一定的系统资源,本实施例限制同一时刻只能进行一个本地数据库节点的新增操作;
例如,当需要增加多个新的本地数据库节点时,只能依次进行一个本地数据库节点的新增操作。
进一步的,在上述实施例中,步骤S1包括以下步骤:
步骤S11,建立多个数据库,并将至少一个用于读、写数据的读写数据库7和至少一个历史数据库8形成一个本地数据库节点;
步骤S12,将本地数据库节点映射到哈希环上,以形成本地数据库集群;
步骤S13,将要存储到本地数据库集群的数据的Key值映射到哈希环上,并将Key值对应的数据写入到与Key值对应的本地数据库节点上。
在上述实施例中,在步骤S11中可以根据用户提供的需要建立的本地数据库节点的数量和每一个本地数据库节点对应的存储路径来创建多个本地数据库节点;其中,创建的本地数据库节点的数量与用户提供的需要建立的本地数据库节点的数量一致;
在步骤S12中,将每个本地数据库节点都映射到哈希环上,以形成本地数据库集群,其中每个本地数据库节点在哈希环上的映射位置均不相同,即在哈希环上的一个映射位置只对应一个本地数据库节点;
在上述实施例中,存储路径中包括:本地数据库节点中的每个数据库的名称、用于标识或确定每个本地数据库节点在本地数据库集群中的编号,以及每个本地数据库节点在哈希环上的映射位置(即序号)。
例如,可以创建一个大小为32的哈希环,则哈希环上会有0-31这32个序号对应的点,本地数据库节点集群中每个本地数据库节点就会各自有一个0-31的不重复的编号,每个本地数据库节点的编号与哈希环上的序号一一对应,即编号为0的本地数据库节点在哈希环上的映射位置为哈希环的序号为0所在的位置,编号为1的本地数据库节点在哈希环上的映射位置为哈希环的序号为1所在的位置,以此类推,其中,哈希环上不一定每个点都要映射有本地数据库。
需要说明的是,哈希环是分布式系统中一种建立数据与机器的对应关系的方式,其主要思想是:将整个哈希空间抽象为一个固定大小的环,每一条数据和分布式系统中的每一个节点,都可以通过给定的哈希趋于运算映射到环上的一个点,之后数据便会和在环上与其距离最近的节点建立对应关系(比如,存储到这个节点对应的机器的磁盘上)。当分布式系统需要新增节点时,新节点也会映射到这个环上,此时,新节点在环上相邻的两个之前就已存在的节点中,可能就会有一部分数据的对应关系就需要迁移到新节点中,这是因为它们到新节点的距离会比之前的节点更近。
作为优选的实施方式,在每一个本地数据库节点上对应一个用于读、写数据的读写数据库7和一个用于读数据的历史数据库8。当且仅当,在该本地数据库节点和与该本地数据库节点在哈希环上的逆时针方向的相邻的本地数据库节点之间需要新建一个新的本地数据库节点时,会将该本地数据库节点的读写数据库7和历史数据库8分别冻结成对应的冻结读写数据库7和冻结历史数据库8,上述冻结读写数据库7和冻结历史数据库8形成一个冻结数据库9。
在步骤S13中,将要存储到本地数据库集群的数据的Key值进行哈希运算,以将要存储到本地数据库集群的数据的Key值映射到哈希环上,并且可以将Key值对应的数据写入到与Key值在哈希环上的映射位置在顺时针方向上的第一个本地数据库节点上,其中要存储到本地数据库集群的数据的Key值在哈希环上的映射位置可以和第一个本地数据库节点在哈希环上的映射位置一致。
上述步骤S13就是区块链的数据和本地数据库节点之间的映射关系。
进一步的,在上述实施例中,步骤S2包括以下步骤:
步骤S21,新建本地数据库节点,当待迁移的本地数据库节点6中的待迁移数据满足数据迁移条件时,待迁移的本地数据库节点6在哈希环上的映射位置与新建的本地数据库节点5在哈希环上的映射位置相邻设置;
步骤S22,将待迁移的本地数据库节点6中的读写数据库7和历史数据库8冻结成冻结数据库,并在待迁移的本地数据库节点6中建立新的读写数据库7和新的历史数据库8;
步骤S23,将待迁移数据分别迁移至待迁移的本地数据库节点6中新建的历史数据库8和新建的本地数据库节点5中的历史数据库8中;
步骤S24,删除待迁移的本地数据库节点6中的冻结数据库。
在上述实施例中,上述待迁移的本地数据库节点6中的待迁移数据满足数据迁移条件时,可以基于实际的数据迁移需求来设置,在本说明书中不进行特别限定;
例如,在实际应用中,待迁移的本地数据库节点6中的待迁移数据的数据迁移条件,具体可以是待迁移的本地数据库节点6中存储的数据已达到存储阈值,急需一个新建的本地数据库节点5分担待迁移的本地数据库节点6的存储压力;
例如,在实际应用中,待迁移的本地数据库节点6中的待迁移数据的数据迁移条件,具体可以是创建了一个新的本地数据库节点,需要上述新的本地数据库节点帮忙分担与新的本地数据库节点在哈希环上的映射位置逆时针相邻的本地数据库节点的存储压力。
作为优选的实施方式,在步骤S21中,可以先新建本地数据库节点,并且需要该新建的本地数据库节点5分担原有的本地数据库节点的存储压力,因此将在哈希环上与新建的本地数据库节点5逆时针相邻的一个本地数据库节点设置为待迁移的本地数据库节点6;
作为优选的实施方式,在步骤S21中,也可以将存储的数据达到存储阈值的本地数据库节点设置为待迁移的本地数据库节点6,并且待迁移的本地数据库节点6在哈希环上的映射位置和与待迁移的本地数据库节点6的映射位置逆时针相邻的一个本地数据库节点的映射位置之间新建一个本地数据库节点,此时待迁移的本地数据库节点6在哈希环上的映射位置与新建的本地数据库节点5在哈希环上的映射位置相邻设置;
在上述实施例中,在步骤S22中,如图1所示,可以将待迁移的本地数据库节点6中的读写数据库7和历史数据库8一起冻结成一个冻结数据库9,并且在待迁移的本地数据库节点6中建立新的读写数据库7和新的历史数据库8;即将待迁移的本地数据库节点6中的所有数据(待迁移的本地数据库节点6中的所有数据就是待迁移数据)冻结到冻结数据库9中,并且冻结数据库9中的数据只能被读取;在待迁移的本地数据库节点6中建立的新的读写数据库7用于后续的数据的读和写,在待迁移的本地数据库节点6中建立的新的历史数据库8用于后续的数据的迁移。
在上述实施例中,在步骤S23中,将被冻结在冻结数据库9中的待迁移数据根据分配需要分别迁移至待迁移的本地数据库节点6中新建的历史数据库8和新建的本地数据库节点5中的历史数据库8中,上述分配需要可以由用户自设定;
在上述实施例中,在步骤S24中,在完成冻结数据库9中的待迁移数据的数据迁移后直接删除待迁移的本地数据库节点6中的冻结数据库9。
进一步的,在上述实施例中,步骤S3包括以下步骤:
步骤S31,对待读取数据的Key值进行哈希运算,根据运算结果依照映射关系查找与待读取数据的Key值对应的待读取的本地数据库节点;
步骤S32,判断与待读取数据的Key值对应的待读取的本地数据库节点是否进行数据迁移;
若是,在与待读取的本地数据库节点相邻的一个本地数据库节点中的冻结数据库中查找并读取待读取数据;
若否,在与待读取数据的Key值对应的待读取的本地数据库节点的读写数据库7中查找并读取待读取数据。
在上述实施例中,在步骤S31中,对在本地数据库集群中待读取的待读取数据的Key值进行哈希运算,并根据运算结果将Key值映射到哈希环上,并查找到Key值在哈希环上的映射位置的顺时针相邻的本地数据库节点,并将该本地数据库节点作为待读取的本地数据库节点;
在步骤S32中,当与待读取数据的Key值对应的待读取的本地数据库节点在进行数据迁移时,在与待读取的本地数据库节点在哈希环上的映射位置顺时针相邻的本地数据库节点中的冻结数据库9中查找并读取待读取数据;需要说明的是,此时,可以直接在与待读取的本地数据库节点在哈希环上的映射位置顺时针相邻的本地数据库节点中的冻结数据库9中进行查询的理由如下所示:当一条数据被映射到新增的本地数据库节点时,该数据原来所在的本地数据库节点一定是该新增的本地数据库节点在哈希环在的映射位置顺时针方向上的相邻的本地数据库节点。
在上述实施例中,映射关系为:待读取数据的Key值在哈希环的映射位置与待读取本地数据库节点在哈希环的映射位置之间是一致关系或相邻关系,并且待读取本地数据库节点在哈希环的映射位置是在待读取数据的Key值在哈希环的映射位置的顺时针方向的相邻位置上。
在上述实施例中,上述本地数据库节点中的读写数据库7和历史数据库8,具体可以是LevelDB数据库;或者,基于LevelDB架构的数据库。
进一步的,在上述实施例中,还包括:
步骤S5,根据待写入数据的Key值依照映射关系查找到与待写入数据的Key值对应的待写入的本地数据库节点,并将待写入数据写入到待写入的本地数据库节点上。
进一步的,在上述实施例中,步骤S5具体包括:
对要写入到本地数据库集群中的待写入数据的Key值进行哈希运算,并根据运算结果依照映射关系查找到与待写入数据的Key值对应的待写入本地数据库节点,以将待写入数据写入到待写入的本地数据库节点中的读写数据库7中。
在上述实施例中,上述步骤S5可以在步骤S2之后执行。
在上述实施例中,对要写入到本地数据库集群中的待写入数据的Key值进行哈希运算,并根据运算结果将Key值映射到哈希环上,并查找到Key值在哈希环上的映射位置的顺时针相邻的本地数据库节点,并将该本地数据库节点作为待写入本地数据库节点,以将待写入数据写入到待写入的本地数据库节点中的读写数据库7中。
在上述实施例中,映射关系为:待写入数据的Key值在哈希环的映射位置与待写入本地数据库节点在哈希环的映射位置之间是一致关系或相邻关系,并且待写入本地数据库节点在哈希环的映射位置是在待写入数据的Key值在哈希环的映射位置的顺时针方向的相邻位置上。
与上述方法实施例相对应,还包括一种区块链的数据扩容装置,如图2所示,包括:
构建模块1,用于建立多个本地数据库节点,根据哈希环构建区块链的数据与本地数据库节点的映射关系,区块链的数据以Key-Value键值对的形式存储至本地数据库节点中;
迁移模块2,与构建模块1连接,用于当待迁移的本地数据库节点6中的待迁移数据满足数据迁移条件时,将待迁移数据分别迁移至待迁移的本地数据库节点6中新建的历史数据库8和新建的本地数据库节点5中的历史数据库8中;
读取模块3,分别与构建模块1和/或迁移模块2连接,根据待读取数据的Key值依照映射关系查找与待读取数据的Key值相关联的多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到待读取数据所在的待读取的本地数据库节点,并在查找到的待读取的本地数据库节点中读取待读取数据;
其中,历史数据库8用于读取数据。
与上述方法实施例相对应,在上述实施例中,存储路径可以由用户自设定,当与存储路径对应的本地数据库节点在哈希环上的映射位置上已存在其他本地数据库节点时,不建立与存储路径对应的本地数据库节点。
与上述方法实施例相对应,在上述实施例中,还包括新建模块,用于根据一存储路径建立一个新的本地数据库节点,并将新的本地数据库节点映射到哈希环上。
与上述方法实施例相对应,在上述实施例中,如图4所示,构建模块1包括:
数据库建立单元11,用于建立多个数据库,并将至少一个用于读、写数据的读写数据库7和至少一个用于读数据的历史数据库8形成一个本地数据库节点;
第一映射单元12,与数据库建立单元11连接,用于将本地数据库节点映射到哈希环上,以形成本地数据库集群;
第二映射单元13,与第一映射单元12连接,用于将要存储到本地数据库集群的数据的Key值映射到哈希环上,并将Key值对应的数据写入到与Key值对应的本地数据库节点上。
与上述方法实施例相对应,在上述实施例中,如图5所示,迁移模块2包括:
设置单元21,用于新建本地数据库节点,当待迁移的本地数据库节点6中的待迁移数据满足数据迁移条件时,待迁移的本地数据库节点6在哈希环上的映射位置与新建的本地数据库节点5在哈希环上的映射位置相邻设置;
冻结单元22,与设置单元21连接,用于将待迁移的本地数据库节点6中的读写数据库7和历史数据库8冻结成冻结数据库,并在待迁移的本地数据库节点6中建立新的读写数据库7和新的历史数据库8;
迁移单元23,与冻结单元22连接,用于将待迁移数据分别迁移至待迁移的本地数据库节点6中新建的历史数据库8和新建的本地数据库节点5中的历史数据库8中;
删除单元24,分别与迁移单元23和冻结单元22连接,用于删除待迁移的本地数据库节点6中的冻结数据库。
与上述方法实施例相对应,在上述实施例中,如图6所示,读取模块3包括:
查找单元31,用于对待读取数据的Key值进行哈希运算,根据运算结果依照映射关系查找与待读取数据的Key值对应的待读取的本地数据库节点;
判断单元32,与查找单元31连接,用于判断与待读取数据的Key值对应的待读取的本地数据库节点是否进行数据迁移;
于待读取的本地数据库节点进行数据迁移时,在与待读取的本地数据库节点相邻的一个本地数据库节点中的冻结数据库中查找并读取待读取数据;
于待读取的本地数据库节点未进行数据迁移时,在与待读取数据的Key值对应的待读取的本地数据库节点的读写数据库7中查找并读取待读取数据。
与上述方法实施例相对应,在上述实施例中,如图3所示,还包括:
写入模块4,分别与构建模块1和/或迁移模块2连接,用于根据待写入数据的Key值依照映射关系查找到与待写入数据的Key值对应的待写入的本地数据库节点,并将待写入数据写入到待写入的本地数据库节点上。
与上述方法实施例相对应,在上述实施例中,写入模块4具体可以对要写入到本地数据库集群中的待写入数据的Key值进行哈希运算,并根据运算结果依照映射关系查找到与待写入数据的Key值对应的待写入本地数据库节点,以将待写入数据写入到待写入的本地数据库节点中的读写数据库7中。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (10)
1.一种区块链的数据扩容方法,其特征在于,包括以下步骤:
建立多个本地数据库节点,根据哈希环构建区块链的数据与所述本地数据库节点的映射关系,所述区块链的数据以Key-Value键值对的形式存储至所述本地数据库节点中;
当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,将所述待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;
根据待读取数据的Key值依照所述映射关系查找与所述待读取数据的Key值相关联的多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到所述待读取数据所在的待读取的本地数据库节点,并在查找到的待读取的本地数据库节点中读取所述待读取数据;
其中,所述历史数据库用于读取数据。
2.如权利要求1所述的区块链的数据扩容方法,其特征在于,还包括:
根据一存储路径建立一个新的所述本地数据库节点,并将新的所述本地数据库节点映射到哈希环上。
3.如权利要求2所述的区块链的数据扩容方法,其特征在于,所述存储路径由用户自设定,当与所述存储路径对应的所述本地数据库节点在哈希环上的映射位置上已存在其他所述本地数据库节点时,不建立与所述存储路径对应的所述本地数据库节点。
4.如权利要求1所述的区块链的数据扩容方法,其特征在于,
建立多个数据库,并将至少一个用于读、写数据的读写数据库和至少一个所述历史数据库形成一个所述本地数据库节点;
将所述本地数据库节点映射到哈希环上,以形成本地数据库集群;
将要存储到所述本地数据库集群的数据的Key值映射到哈希环上,并将所述Key值对应的数据写入到与所述Key值对应的所述本地数据库节点上。
5.如权利要求4所述的区块链的数据扩容方法,其特征在于,
新建所述本地数据库节点,当待迁移的所述本地数据库节点中的待迁移数据满足数据迁移条件时,待迁移的本地数据库节点在哈希环上的映射位置与新建的本地数据库节点在哈希环上的映射位置相邻设置;
将待迁移的本地数据库节点中的所述读写数据库和所述历史数据库冻结成冻结数据库,并在待迁移的本地数据库节点中建立新的读写数据库和新的历史数据库;
将所述待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的所述历史数据库中;
删除待迁移的本地数据库节点中的所述冻结数据库。
6.如权利要求5所述的区块链的数据扩容方法,其特征在于,
对所述待读取数据的Key值进行哈希运算,根据运算结果依照所述映射关系查找与所述待读取数据的Key值对应的待读取的本地数据库节点;
判断与所述待读取数据的Key值对应的待读取的本地数据库节点是否进行数据迁移;
若是,在与待读取的本地数据库节点相邻的一个所述本地数据库节点中的所述冻结数据库中查找并读取所述待读取数据;
若否,在与所述待读取数据的Key值对应的待读取的本地数据库节点的所述读写数据库中查找并读取所述待读取数据。
7.如权利要求1所述的区块链的数据扩容方法,其特征在于,还包括:
根据待写入数据的Key值依照所述映射关系查找到与所述待写入数据的Key值对应的待写入的本地数据库节点,并将所述待写入数据写入到待写入的本地数据库节点上。
8.一种区块链的数据扩容装置,其特征在于,包括:
构建模块,用于建立多个本地数据库节点,根据哈希环构建区块链的数据与所述本地数据库节点的映射关系,所述区块链的数据以Key-Value键值对的形式存储至所述本地数据库节点中;
迁移模块,用于当待迁移的本地数据库节点中的待迁移数据满足数据迁移条件时,将所述待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的历史数据库中;
读取模块,根据待读取数据的Key值依照所述映射关系查找与所述待读取数据的Key值相关联的多个待读取的本地数据库节点,遍历待读取的本地数据库节点,查找到所述待读取数据所在的待读取的本地数据库节点,并在查找到的待读取的本地数据库节点中读取所述待读取数据;
其中,所述历史数据库用于读取数据。
9.如权利要求8所述的区块链的数据扩容装置,其特征在于,所述迁移模块包括:
设置单元,用于新建所述本地数据库节点,当待迁移的所述本地数据库节点中的待迁移数据满足数据迁移条件时,待迁移的本地数据库节点在哈希环上的映射位置与新建的本地数据库节点在哈希环上的映射位置相邻设置;
冻结单元,用于将待迁移的本地数据库节点中的读写数据库和所述历史数据库冻结成冻结数据库,并在待迁移的本地数据库节点中建立新的读写数据库和新的历史数据库;
迁移单元,用于将所述待迁移数据分别迁移至待迁移的本地数据库节点中新建的历史数据库和新建的本地数据库节点中的所述历史数据库中;
删除单元,用于删除待迁移的本地数据库节点中的所述冻结数据库。
10.如权利要求9所述的区块链的数据扩容装置,其特征在于,所述读取模块包括:
查找单元,用于对所述待读取数据的Key值进行哈希运算,根据运算结果依照所述映射关系查找与所述待读取数据的Key值对应的待读取的本地数据库节点;
判断单元,用于判断与所述待读取数据的Key值对应的待读取的本地数据库节点是否进行数据迁移;
于待读取的本地数据库节点进行数据迁移时,在与待读取的本地数据库节点相邻的一个所述本地数据库节点中的所述冻结数据库中查找并读取所述待读取数据;
于待读取的本地数据库节点未进行数据迁移时,在与所述待读取数据的Key值对应的待读取的本地数据库节点的所述读写数据库中查找并读取所述待读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010358782.1A CN111680019B (zh) | 2020-04-29 | 2020-04-29 | 一种区块链的数据扩容方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010358782.1A CN111680019B (zh) | 2020-04-29 | 2020-04-29 | 一种区块链的数据扩容方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680019A CN111680019A (zh) | 2020-09-18 |
CN111680019B true CN111680019B (zh) | 2023-11-24 |
Family
ID=72433950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010358782.1A Active CN111680019B (zh) | 2020-04-29 | 2020-04-29 | 一种区块链的数据扩容方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680019B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112492008B (zh) * | 2020-11-19 | 2022-05-20 | 深圳壹账通智能科技有限公司 | 节点位置确定方法、装置、计算机设备和存储介质 |
CN113328920B (zh) * | 2021-08-04 | 2021-10-29 | 成都飞机工业(集团)有限责任公司 | 一种对设备数据的采集与存储方法 |
CN113793148B (zh) * | 2021-08-24 | 2024-03-22 | 上海点融信息科技有限责任公司 | 联盟链的区块同步方法、装置、节点和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844510A (zh) * | 2016-12-28 | 2017-06-13 | 北京五八信息技术有限公司 | 一种分布式数据库集群的数据迁移方法和装置 |
WO2018099397A1 (zh) * | 2016-12-01 | 2018-06-07 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法、装置及存储介质 |
CN108959548A (zh) * | 2018-07-02 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 业务请求的处理方法及装置 |
CN109902127A (zh) * | 2019-03-07 | 2019-06-18 | 腾讯科技(深圳)有限公司 | 历史态数据处理方法、装置、计算机设备及存储介质 |
CN110083312A (zh) * | 2019-04-28 | 2019-08-02 | 联想(北京)有限公司 | 磁盘扩容方法、装置及计算机设备 |
CN110535969A (zh) * | 2019-09-16 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
WO2019231954A1 (en) * | 2018-05-31 | 2019-12-05 | Alibaba Group Holding Limited | Blockchain-based data migration method and apparatus |
CN111031100A (zh) * | 2019-11-21 | 2020-04-17 | 上海交通大学 | 一种扩展的区块链存储方法、系统及介质 |
-
2020
- 2020-04-29 CN CN202010358782.1A patent/CN111680019B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018099397A1 (zh) * | 2016-12-01 | 2018-06-07 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法、装置及存储介质 |
CN106844510A (zh) * | 2016-12-28 | 2017-06-13 | 北京五八信息技术有限公司 | 一种分布式数据库集群的数据迁移方法和装置 |
WO2019231954A1 (en) * | 2018-05-31 | 2019-12-05 | Alibaba Group Holding Limited | Blockchain-based data migration method and apparatus |
CN108959548A (zh) * | 2018-07-02 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 业务请求的处理方法及装置 |
CN109902127A (zh) * | 2019-03-07 | 2019-06-18 | 腾讯科技(深圳)有限公司 | 历史态数据处理方法、装置、计算机设备及存储介质 |
CN110083312A (zh) * | 2019-04-28 | 2019-08-02 | 联想(北京)有限公司 | 磁盘扩容方法、装置及计算机设备 |
CN110535969A (zh) * | 2019-09-16 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
CN111031100A (zh) * | 2019-11-21 | 2020-04-17 | 上海交通大学 | 一种扩展的区块链存储方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111680019A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111680019B (zh) | 一种区块链的数据扩容方法及其装置 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN110347684B (zh) | 基于区块链的分级存储方法及装置、电子设备 | |
CN102301347B (zh) | 存储系统 | |
CN106815218B (zh) | 数据库访问方法、装置和数据库系统 | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和系统 | |
CN106934048A (zh) | 数据在线迁移方法、代理节点 | |
CN110222030B (zh) | 数据库动态扩容的方法、存储介质 | |
CN110597835B (zh) | 一种基于区块链的交易数据删除方法及装置 | |
KR20160100216A (ko) | 대량 오디오 지문 데이터베이스의 온라인 실시간 업데이트를 구축하는 방법과 장치 | |
WO2016192496A1 (zh) | 数据迁移处理方法及装置 | |
CN105574217A (zh) | 分布式关系型数据库的数据同步方法和装置 | |
US11288247B2 (en) | Blockchain based hierarchical data storage | |
CN107153680B (zh) | 一种分布式内存数据库在线扩展节点的方法及系统 | |
CN111400273B (zh) | 数据库扩容方法、装置、电子设备及机器可读存储介质 | |
CN113722319A (zh) | 基于学习索引的数据存储方法 | |
CN113297171A (zh) | 数据库迁移方法及装置、数据库集群 | |
CN116610670A (zh) | 一种基于区块链的状态数据存储方法及设备 | |
CN109542860A (zh) | 基于hdfs的业务数据管理方法、终端设备 | |
CN116010359A (zh) | 一种基于日志进行数据存储和查询的方法及系统 | |
CN110399354B (zh) | 数据库的分区交换方法及装置 | |
US7949632B2 (en) | Database-rearranging program, database-rearranging method, and database-rearranging apparatus | |
CN114691039A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113867626A (zh) | 一种存储系统性能优化方法、系统、设备和存储介质 | |
CN102298592A (zh) | 名单管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |