CN110489460B - 一种快速统计的优化方法及系统 - Google Patents
一种快速统计的优化方法及系统 Download PDFInfo
- Publication number
- CN110489460B CN110489460B CN201910735557.2A CN201910735557A CN110489460B CN 110489460 B CN110489460 B CN 110489460B CN 201910735557 A CN201910735557 A CN 201910735557A CN 110489460 B CN110489460 B CN 110489460B
- Authority
- CN
- China
- Prior art keywords
- statistical
- data
- hash
- bucket
- barrel
- 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
Images
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/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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
- G06Q10/06393—Score-carding, benchmarking or key performance indicator [KPI] analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/12—Accounting
- G06Q40/125—Finance or payroll
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Resources & Organizations (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Probability & Statistics with Applications (AREA)
- Educational Administration (AREA)
- Marketing (AREA)
- Computational Linguistics (AREA)
- Entrepreneurship & Innovation (AREA)
- Technology Law (AREA)
- Automation & Control Theory (AREA)
- Computing Systems (AREA)
- Game Theory and Decision Science (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种快速统计的优化方法及系统,所述方法和系统应用于图结构分布式账本中,所述方法包括统计方法和反馈制导方法,其中:所述统计方法包括:获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;根据所述统计需求,在数链节点中读取第一数据集,并在第一数据集中提取原始数据;将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新。本发明可以实现对图结构分布式账本数据的快速、准确、实时的统计,同时能在固定时间内针对生产环境的变化适当调整统计方法,以保证其高度适应性。
Description
技术领域
本发明涉及数据统计领域,特别是涉及一种快速统计的优化方法以及一种快速统计的优化系统。
背景技术
统计需求是互联网领域十分常见的需求之一。在大数据统计的背景下,统计需求可以划分为两种,一种是精准的统计,一种是对大数据模糊的统计,即估计。后者的出现原因有二:一是面对大数据,精准统计往往需要消耗大量的时间空间资源,在资源有限的情况下,精准统计往往无法实现;二是用户通常并不关心大数据的具体数值,而是对误差有一定容忍,只需要统计对数据有量级的把控,或关心变化趋势。
分布式账本技术,其特点是去中心化、开放、自治,同时带有信息不可篡改和可匿名的特征。作为一种去中心化的新型工具,分布式账本技术对于共享价值体系建立,及维护交易安全具有重要意义。目前分布式账本普遍由区块链技术实现。随着分布式账本技术的飞速发展,多种共识机制和网络结构被众多学者提出。图结构分布式账本即为其中之一。图结构分布式账本将有向无环图(DAG)代替传统链式结构,各个节点相互连接,构成一个有向无环图,大大提升了网络的吞吐量,增强了网络的分布性。
在图结构分布式账本中,我们需要对网络中的资源,如每日登录的用户数、注册的用户数、每日的交易量等信息进行统计,以进行流量监控或业务处理等。此类业务属于前文提到的模糊统计中的一个子类:对基数(基数指的是一个存在重复元素的集合中不同元素的个数)的统计。若采用传统的统计方法,如遍历各个节点数据并统计,将会占用大量的网络带宽和计算资源。且会对网络的实时性,有效性产生严重的影响。且在实际的生产使用中,需求往往是复杂多变的,针对不同的生产环境,为使得统计方法在资源负载、效率和准确性上达到比较好的均衡,由此我们需要一种更高效的方案对网络中的数据进行统计或估计。
发明内容
本发明提供一种快速统计的优化方法以及一种快速统计的优化系统,可以实现对图结构分布式账本数据的快速、准确、实时的统计,同时能在固定时间内针对生产环境的变化适当调整统计方法,以保证其高度适应性。
为了解决上述问题,本发明公开了一种快速统计的优化方法,所述方法应用于图结构分布式账本中,所述方法包括统计方法和反馈制导方法,其中:
所述统计方法包括:
步骤S1:获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;
步骤S2:根据所述统计需求,在数链节点中读取相应起止序号或起止时间的第一数据集,并在第一数据集中提取相应的统计对象对应的数据作为原始数据;
步骤S3:将所述原始数据作为基数估计方法的输入,设定目标参数,将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新;
步骤S4:当完成所述第一数据集的全部数据处理后,将所述第一数据集的全部桶信息保存在该数链节点的内存中;
步骤S5:根据所述统计需求,从数链节点中读取在第一数据集之后更新的所有数据,并作为第二数据集,在所述第二数据集中提取相应的统计对象对应的数据作为新增原始数据;
步骤S6:将新增原始数据输入到与步骤S3相同的统计模型中,计算对应的桶信息;
步骤S7:将新增原始数据的桶信息与该数链节点的内存中的桶信息进行合并,得到完整的桶信息,并保存至该数链节点的内存中;
步骤S8:将各个数链节点的内存中的桶信息返回给所述主节点,所述主节点用于将各个数链节点返回的桶信息进行统计运算,并将统计结果反馈给该用户;
所述反馈制导方法应用于所述图结构分布式账本的记账链中,包括:
步骤S9:利用记账链周期性地向各个数链节点发送收集内存中的桶信息的请求,待内存中的桶信息收集完成后,将收集的桶信息去重并链式存储在记账链中;
步骤S10:在所述统计方法的每次调用过程中,在统计日志中记录所述调用过程中的统计性能指标;所述统计性能指标包括第一统计结果;
步骤S11:周期性地对所述统计日志和所述记账链做抽样检测,获得抽样样本;
步骤S12:对所述记账链中的抽样样本进行统计,获得第二统计结果,并将所述第二统计结果与所述统计日志的抽样样本中的第一统计结果进行计算,获得精准度误差;
步骤S13:对所述精准度误差和所述统计日志的抽样样本中的统计性能指标做分析,将分析结果反馈给该用户。
进一步的,所述步骤S3具体包括以下子步骤:
根据所述统计需求,选择一个哈希函数H将存储在数链节点中的每一条原始数据作为一个二进制的缓存buffer数据进行哈希,输出多个哈希结果;
将哈希空间平均分为m份,其中每一份称为一个桶,所述m为2的整数次幂;
将所述哈希结果作为哈希样本,所述哈希样本的哈希值长度为L,取其哈希值的前k位作为其桶号,其中m=2K,其后的L-k位作为用于之后估计的比特串,并将所述桶号相同的哈希样本分配到同一个桶中;
计算每个哈希样本的哈希值去除桶号后的剩余位数第一个“1”出现的位置,记为m[i];
针对同一个桶的哈希样本,将当前计算的m[i]与之前的桶信息m[j]进行比较,如果m[i]>m[j],将该桶号的桶信息更新为m[i],所述i,j均为正整数。
进一步的,所述哈希结果满足以下条件:
A1:所述哈希结果为固定长度;
A2:所述哈希结果满足均匀分布;
A3:所述哈希结果相同的概率无限趋近于零。
进一步的,所述方法还包括:
对桶信息进行排除离群值处理;
对所述排除离群值处理后的数据进行偏差修正。
进一步的,所述对桶信息进行排除离群值处理进一步包括:
采用抽样一致性RANSAC算法对桶信息进行排除离群值处理;其中,所述RANSAC算法基于如下假设:
B1:存在内群数据inlie带有一些参数的模型来描述其分布,且离群数据outlier是不能通过模型来拟合;
B2:离群数据是噪声,极端的噪声会导致有关数据的错误解释;
B3:给定一组内群数据,通常数据量很小的内存数据,存在一个程序,用于估算适合解释这组数据模型的参数。
进一步的,采用抽样一致性RANSAC算法对经过分桶平均后的数据进行排除离群值处理的步骤包括:
子步骤一:对桶信息抽取样本,计算该样本在桶信息上的覆盖率,得到内群数据;
子步骤二:重复所述子步骤一多次,选出覆盖率最高的一组作为桶内群数据。
进一步的,所述对所述排除离群值处理后的数据进行偏差修正进一步包括:
使用超级日志计数HLLC算法对所述排除离群值处理后的数据进行偏差修正。
进一步的,所述方法还包括:
所述主节点向传输异常的目标数链节点进行二次请求,在未接收到所述目标数链节点针对所述二次请求返回的桶信息时,则停止与所述目标数链节点的通信。
进一步的,所述统计性能指标还包括模型参数、输入参数、内存占用率、流量负载以及时间消耗值。
为了解决上述问题,本发明还公开了一种快速统计的优化系统,所述系统应用于图结构分布式账本中,所述系统包括统计装置和反馈制导装置,其中:
所述统计装置包括:
统计需求广播模块,用于获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;
原始数据生成模块,用于根据所述统计需求,在数链节点中读取相应起止序号或起止时间的第一数据集,并在第一数据集中提取相应的统计对象对应的数据作为原始数据;
第一计算模块,用于将所述原始数据作为基数估计方法的输入,设定目标参数,将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新;
第一保存模块,用于在完成所述第一数据集的全部数据处理后,将所述第一数据集的全部桶信息保存在该数链节点的内存中;
新增原始数据模块,用于根据所述统计需求,从数链节点中读取在第一数据集之后更新的所有数据,并作为第二数据集,在所述第二数据集中提取相应的统计对象对应的数据作为新增原始数据;
第二计算模块,用于将新增原始数据输入到与第一计算模块相同的统计模型中,计算对应的桶信息;
第二保存模块,用于将新增原始数据的桶信息与该数链节点的内存中的桶信息进行合并,得到完整的桶信息,并保存至该数链节点的内存中;
统计结果反馈模块,用于将各个数链节点的内存中的桶信息返回给所述主节点,所述主节点用于将各个数链节点返回的桶信息进行统计运算,并将统计结果反馈给该用户;
所述反馈制导装置应用于所述图结构分布式账本的记账链中,包括:
记账链收集模块,用于利用记账链周期性地向各个数链节点发送收集内存中的桶信息的请求,待内存中的桶信息收集完成后,将收集的桶信息去重并链式存储在记账链中;
统计性能指标记录模块,用于在所述统计装置的每次调用过程中,在统计日志中记录所述调用过程中的统计性能指标;所述统计性能指标包括第一统计结果;
抽样检测模块,用于周期性地对所述统计日志和所述记账链做抽样检测,获得抽样样本;
误差计算模块,用于对所述记账链中的抽样样本进行统计,获得第二统计结果,并将所述第二统计结果与所述统计日志的抽样样本中的第一统计结果进行计算,获得精准度误差;
分析结果反馈模块,用于对所述精准度误差和所述统计日志的抽样样本中的统计性能指标做分析,将分析结果反馈给该用户。
与现有技术相比,本发明包括以下优点:
本发明根据用户的统计需求,应对图结构数据分散的特点,本发明在各个节点上直接做数据统计,节省了统计时间,且只将空间占用量极小的中间结果(桶信息)做为传输量,节省了统计需要的传输负载;同时,将新生成的数据结果合并到之前初始化的结果中去,以保证数据统计的时效性,使得反馈给用户时的数据为最新时刻的,最终达到了对图结构分布式账本数据的快速、准确、实时的统计的目的;
本发明通过反馈制导方法对统计结果进行精准度误差校验,结合如内存占用率、流量负载以及时间消耗值等统计性能指标对统计方法的桶量等参数进行调整,使得本发明的统计方法在资源负载、效率和准确性上达到比较好的均衡,进一步达到统计方法能更好地贴合当前使用场景的目的。
附图说明
图1是本发明一种快速统计的优化方法的步骤流程图;
图2是本发明哈希空间编号图;
图3是本发明哈希样本分桶示意图;
图4是本发明的框架架构图;
图5是为BDChain的区块交易动态展示面板;
图6是Block压缩实验图;
图7是Block桶量-时间实验图;
图8是Block节点-时间实验图;
图9是Block桶量-误差实验图;
图10是Transactions压缩实验图;
图11是Transactions桶量-时间实验图;
图12是Transactions节点-时间实验图;
图13是Transactions桶量-误差实验图;
图14是Transactions算法-误差频次图;
图15是Transactions算法-误差CDF图;
图16是本发明一种快速统计的优化系统的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
数据快速统计是指对系统中是互联网实际应用场景中最常见的计算场景之一。在数据分析、网络监控、优化工作等领域都有相关的需求。在实际应用中,数据快速统计流程分为三个步骤:1.将分散在各个数据库的数据收集汇总,得到待统计的统计量数据集。2.将收集到的统计数据集合做去重(去掉重复数据)处理,得到需要的统计量并反馈给使用者。3.面对频繁统计的场景,比如网络监控等,需要快速更新数据,重复执行前两个步骤。
对于图结构分布式账本来说,账本的去中心化数据结构特点使得数据快速统计的三个步骤都难以快速完成,极大地提高了数据快速统计的难度。具体来说图结构分布式账本的数据如下的三个典型特点给数据快速统计造成了困难:
(1)图结构分布式账本数据存储节点分散,采用分布式存储的数据结构。这些节点物理上分布于不同的地点,甚至跨国或者跨洲,同时分布式账本的特点是没有中心节点。在数据统计过程中,收集汇总数据时远程传输需要消耗大量时间,同时还要面临大量数据传输可能造成丢包,以及数据传输中保证数据的安全性,防止数据被窃取等问题。
(2)图结构分布式账本数据存在大量冗余的数据。根据分布式账本数据的存贮方式,单个数据(主要是交易)是被存储在多个节点上的,以此来保证交易之间的共享,建立信任机制。对于数据统计来说,大量的冗余数据对于数据去重是个很大的挑战,需要消耗大量的内存资源。
(3)图结构分布式账本本身存在海量数据,且数据量还在实时高速增长。图结构对于频繁统计的场景来说,需要及时获取新增的数据,并和之前的海量数据合并去重,这种持续的海量运算量无疑对于内存资源和计算性能都是极大的挑战。
图结构分布式账本是去中心化的,数据存储在交易中,一定量的交易被复制多份后打包成区块,区块再次复制多份,并存储在各个数链节点上。
针对以上技术问题和图结构分布式账本的特性,参照图1,示出了本发明一种快速统计的优化方法的步骤流程图,所述方法应用于图结构分布式账本中,所述方法包括统计方法和反馈制导方法,其中:
所述统计方法具体可以包括以下步骤:
步骤S1:获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;
在本发明中,针对所有节点,直接构建一个异步的client-server服务,将client部署在主节点上,在每个数链节点上部署一个agent server。首先,用户调用web-service服务,在主节点的client输入统计需求的参数字段,包括统计量字段名称,统计对象(在分布式账本中主要为交易或区块),索引格式,统计按照序号索引或时间索引,统计起止的序号或时间。然后,主节点接收用户统计需求后,主节点将需求打包广播分发给全部数链节点,即主节点client异步请求各个数链节点的server。最后,各个数链节点的server接收到统计需求后,进入到相应的统计运算流程。
步骤S2:根据所述统计需求,在数链节点中读取相应起止序号或起止时间的第一数据集,并在第一数据集中提取相应的统计对象对应的数据作为原始数据;
每个数据节点具有server,也具有一个数据库,数据存储在数据库中。在本发明中,数链节点的server根据统计需求中的起止序号或起止时间,向数据库读取与该起止序号或该起止时间的第一数据集,然后根据统计对象,在第一数据集中该统计对象对应的数据作为需要统计的原始数据。
在实际使用过程中,大部分统计需求数据的截止时间或者截止序号均为统计到最新的数据,因此统计需求中的参数默认为统计到最新的数据。
为了设计针对图结构区块链数据的快速统计方法,首先我们需要分析统计需求以及统计数据的特征。在大数据的背景下,统计需求主要有两种,一种是需要精确的统计结果,譬如,对错误审计的修正,依托数据的款项的清账结算等。在海量数据的基础上做精准的统计需要消耗大量的时间和空间,甚至由于数据过大,会导致程序的崩溃。所以此种需求适用于对少量数据排查,或者完全不计较时间消耗的情景。另一种是需要基本精确的统计结果,即概率上可能准确的结果,比如对数据增长趋势的把控,流量异常的监控,实时或者快速的大额结算,对用户来说,都可以允许误差的存在。此类需求的期望是快速、低能耗以及基本准确的统计,用户往往并不关心精确的统计数值,而是关心体量大小或是变化趋势。
本发明的统计方法针对的是后一种情况,即基本准确的统计,即估计。接下来,在步骤S3~步骤S7中阐述了本发明的统计方法,本方法的输入是原始数据,输出是统计结果。
步骤S3:将所述原始数据作为基数估计方法的输入,设定目标参数,将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新;
在本发明中,设计了基于RANSAC随机抽样一致性的R-HLLC基数估计方法,该方法分为以下几个步骤:第一步,均匀随机化;第二步,分桶平均;第三步,排除离群值;第四步,偏差修正。
第一步,均匀随机化,步骤包括:
步骤301:在均匀随机化中,根据所述统计需求,选择一个哈希函数H将存储在数链节点中的每一条原始数据作为一个二进制的缓存buffer数据进行哈希,输出多个哈希结果。得到的哈希结果满足以下条件:A1:所述哈希结果为固定长度;A2:所述哈希结果满足均匀分布;A3:所述哈希结果相同的概率无限趋近于零。
第二步,分桶平均,分桶平均基于以下数学基础:
假设a为一个哈希样本,哈希值长度为L,即固定为L位。a为一个长度为L位的二进制比特串。参照图2,为本发明哈希空间编号图,在图2中将这个长度为L的比特串按照比特位从左到右分别编号为0、1、2、3、……、L-1。因为哈希空间是服从均匀分布的,而a是随机抽取的一个样本,所以a的每一位都应当相互独立,且满足如下分布:
P(X=k)={(0.5(k=0)@0.5(k=1)) 公式(1);
即a的每一位有相等概率为0或者1,并且各个位之间相互独立。假设p(a)代表a的哈希空间里第一个“1”出现的位置,忽略比特串全为0的特殊情况(概率为1/2L),如果遍历哈希空间中的全部样本,即全部数据形成的哈希值,取其中p(a)最大的值作为pmax,此时可以将2pmax作为此次样本的一个粗糙的基数估计。即估计的结果为:
n^=2^pmax 公式(2);
此时,可以这样进行粗糙的估计是基于以下事实:从统计学角度来看,对于一个每个比特都独立且服从0-1分布的比特串来说,从左到右依次扫描就类似于抛一枚质地均匀的硬币最多L次,直到得到一次结果是正面朝上。在统计学上,这被称作为一个伯努利过程。显然这个问题就是投掷一次即为正面的概率为1/2,投掷两次为1/4,投掷k次才可以得到第一个正面的概率为(1/2)k。
对于扫描哈希结果a,从左到右扫描直至遇见第一个“1”停止。需要扫描大于k位才能结束的概率显然为1/2k,即之前的k位均为“0”的概率。所以在扫描a的过程中,扫描位数不大于k的概率为1-1/2k,对于n个数据的哈希结果来说,n次扫描位数均不大于k的概率为:
Pn(X≤K)=(1-1/2^k)^n 公式(3);
同理,扫描n个哈希结果,只要有一次扫描p(a)=k的概率为:
Pn(X≥K)=1-(1-1/2^(k-1))^n 公式(4);
这样当n远远大于2k时,可以看出Pn(X≤K)的概率无限趋近于零;当n远远小于2k时,可以看出Pn(X≥K)的概率无限趋近于零。因此对于一个基数为n的数据集,如果n远远大于2^pmax,则我们得到pmax为当前值的概率几乎为0;同样,如果n远远小于2^pmax,则我们得到pmax为当前值的概率也几乎为0。所以我们认为2^pmax和n大小相近,即2^pmax为n的一个粗糙估计值。
以上以2^pmax作为统计量的基数估计会由于偶然性造成较大误差。因此我们采用分桶平均的方式来减少误差的影响。具体的操作如下:
步骤302:将哈希空间平均分为m份,其中每一份称为一个桶,所述m为2的整数次幂。
步骤303:将所述哈希结果作为哈希样本,所述哈希样本的哈希值长度为L,取其哈希值的前k位作为其桶号,其中m=2K,其后的L-k位作为用于之后估计的比特串,并将所述桶号相同的哈希样本分配到同一个桶中。
步骤304:计算每个哈希样本的哈希值去除桶号后的剩余位数第一个“1”出现的位置,记为m[i],即为每个桶的pmax。参照图3,示出了本发明哈希样本分桶示意图。
步骤305:针对同一个桶的哈希样本,将当前计算的m[i]与之前的桶信息m[j]进行比较,如果m[i]>m[j],将该桶号的桶信息更新为m[i],所述i,j均为正整数。
针对上述步骤,举例说明具体的分桶操作,假设哈希的固定长度为32位,k为4,则m为16,假设a的哈希值为“0010 0000 0010 1100 1101 0010 0010 0000”则a应当归入“0010”也就是2号桶,,对于剩下的部分,第一个“1”出现的位置是7,所以a对应的p(a)=7,如果桶中其他样本的p都小于7,则m[2]=7。
理论来讲,对这m个桶取平均即可消除一定程度上的偶然误差,即估计值为:
n^=2^((1/m)∑kmax) 公式(5);
但实际上,由于我们无法找到使其均匀分布的哈希函数,因此桶内的样本数据是极有可能出现不均匀造成的异常值的,一旦桶内异常值导致桶信息失真,就会对结果造成影响。我们称这种失真的桶信息为离群值。
接下来,在本发明的优选实施例中,提出了对失真的桶信息进行处理的方法,所述方法还包括:
步骤306:对桶信息进行排除离群值处理;
步骤307:对所述排除离群值处理后的数据进行偏差修正。
针对步骤306,具体的,采用抽样一致性RANSAC算法对桶信息进行排除离群值处理;RANSAC算法是由Fischler和Bolles与1981年提出,它是采用迭代的方式从一组包含离群数据的样本中来估算出符合预设模型的参数,以剔除离群数据。RANSAC是一个非确定性的算法,在一定概率下会产生一个合理的结果,而多次迭代可以增加得到合理结果的概率。其中,所述RANSAC算法基于如下假设:
B1:存在内群数据inlie带有一些参数的模型来描述其分布,且离群数据outlier是不能通过模型来拟合;
B2:离群数据是噪声,极端的噪声会导致有关数据的错误解释;
B3:给定一组内群数据,通常数据量很小的内存数据,存在一个程序,用于估算适合解释这组数据模型的参数。
RANSAC具体实现步骤如下:
1)随机选择一些原始数据,假设他们是内群数据的一个子集;
2)建立模型拟合,制定模型损失函数;
3)用剩余的数据来验证模型,计算损失函数;
4)统计此次模型中包含的内群数据量;
5)多次迭代,选择内群数据量最多的模型作为最终结果。
在本发明中,采用RANSAC算法对经过分桶平均后的数据进行排除离群值处理的步骤包括:
子步骤一:对桶信息抽取样本,计算该样本在桶信息上的覆盖率,得到内群数据;
子步骤二:重复所述子步骤一多次,选出覆盖率最高的一组作为桶内群数据。最后,用所述桶内群数据求平均算出最后的估计结果。
虽然RANSAC能在一定程度上抵抗来自离群值对统计结果的干扰,但是由于需要抽样迭代多次,所以如果样本量过小,会导致结果不准确,因此此种方法只适合桶量足够大的情况。
虽然通过上述三步,可以得到一个误差可控的估计量,但是从统计学分析可知,这种估计不是一个无偏的估计。而是一个渐进的无偏估计。但是在实际应用中这种渐进无偏是被允许的。这里不具体展开为何得到如此结论,只分析如何修正偏差。
针对步骤307,具体的,本发明使用超级日志计数HLLC算法对所述排除离群值处理后的数据进行偏差修正。
由于统计结果对离群值十分敏感,为了进一步降低离群值的干扰,我们采用调和平均数,而非几何平均数。在使用调和平均数后,估计的结果变为:
n^=(am*m^2)/(∑2^(-M)) 公式(6);
其中:
am=(m∫_0^∞(log2((2+u)/(1+u)))^m du)^(-1) (7);
本发明通过以上四步,即可完成对数据的统计。下面我们将分析R-HLLC算法的内存使用、时间消耗、误差控制以及合并特性,来验证通过此方法可以克本发明提出的三点问题,以实现对图结构分布式账本数据的快速统计。
内存使用分析:R-HLLC算法实现了对数据的O(log log n)压缩,使用内存的大小仅仅和桶量的大小m以及哈希结果长度L有关。内存占用字节=桶量m*桶信息大小/8,而桶信息大小根据定义一定小于L。原始数据被哈希函数哈希,为O(log n)压缩,哈希值再次压缩到桶信息,为O(log n)压缩,因此整体为O(log log n)压缩。事实上,后续的统计操作只需要保存桶信息,极大地节省了资源占用和流量消耗。
时间消耗:统计可以由各个数链节点在线性时间内完成,时间复杂度为O(n)。
误差控制:误差公式为:
StdError(n/n)^=1.30/m (8);
从公式(8)可看出,误差只和桶量m有关,只需要控制桶量,即可控制误差。需要说明的是,上述所提及到的O(log n)、O(log log n)均基于1999年,Kyu-Young Whang提出的基于概率模型的复杂度为O(q)的Linear Counting算法所计算得出。公式(8)根据在LinearCounting基础上进行改进的Loglog Counting算法推倒得出,计算原理为现有技术,为节省篇幅,在此不多叙述。
可合并特性:对于使用同样哈希函数和分桶的数据来说,合并时只需要保存对应桶中更大的桶信息即可完成合并,因此具有高效的合并特性。
步骤S4:当完成所述第一数据集的全部数据处理后,将所述第一数据集的全部桶信息保存在该数链节点的内存中;
步骤S5:根据统计需求,从数链节点中读取在第一数据集之后更新的所有数据,并作为第二数据集,在所述第二数据集中提取相应的统计对象对应的数据作为新增原始数据;
步骤S6:将新增原始数据输入到与步骤S3相同的统计模型中,计算对应的桶信息;
步骤S7:将新增原始数据的桶信息与该数链节点的内存中的桶信息进行合并,得到完整的桶信息,并保存至该数链节点的内存中;
上述步骤S3所提出的方案基本可以覆盖大部分的基数统计流程,但是对于高频次的统计需求来说,例如实时统计区块生产速率以便流量监控,本发明通过步骤S4~步骤S7所提出的步骤,只需要保留历史统计的桶信息,将新增的统计数据的桶信息与历史统计数据的桶信息叠加合并即可,而不需要重复对历史数据进行统计。步骤S4~步骤S7的快速统计的优化方法参照步骤S1~步骤S3。当然,在对新增原始数据进行处理的过程中,也会产生如原始数据处理过程中一样的问题,本发明仍可以采用步骤306~步骤307,即对桶信息进行排除离群值处理,再对所述排除离群值处理后的数据进行偏差修正,以此更进一步提高本发明统计结果的准确度。
在本发明中,对于定时统计的任务,比如每十秒统计一次交易速率,则在各个数链节点持续运行一个用于收发的server agent,每个固定时间收集此时间内缠身的数据,完成上述统计步骤,并将结果保存在内存中,随时等待主节点的client广播统计需求,以进行下一次的桶信息更新。
步骤S8:将各个数链节点的内存中的桶信息返回给所述主节点,所述主节点用于将各个数链节点返回的桶信息进行统计运算,并将统计结果反馈给该用户。
在本发明中,各个数链节点在完成统计需求后,会在内存中保存统计过程的结果,统计过程的输出为一串中间统计信息,数链节点通过server调用异步http协议,将中间统计信息响应给主节点。
然后,主节点收集来自全部子节点(数链节点)的信息,此时,本发明实施例的方法还包括:
所述主节点向传输异常的目标数链节点进行二次请求,在未接收到所述目标数链节点针对所述二次请求返回的桶信息时,则停止与所述目标数链节点的通信。
本发明对于传输失败的节点,或者传输超时的节点,进行二次请求,若仍未得到统计结果,则剔除此节点结果。需要说明的是,对于单个失败的节点,直接剔除其统计结果不会对结果产生过量影响。因为根据分布式账本数据存储的机制,每份数据会随机复制备份在多个节点上,所以单个失败节点的剔除不会造成影响。理论上,假设每份数据被分在n个节点上,则至少要n个节点同时失败,才会导致只存在这n个节点上的数据备份失败,事实上,这部分数据相对于全部数据来说是极为少量的。
综上,本发明根据用户的统计需求,应对图结构数据分散的特点,本发明在各个节点上直接做数据统计,节省了统计时间,且只将空间占用量极小的中间结果(桶信息)作为传输量,节省了统计需要的传输负载;同时,将新生成的数据结果合并到之前初始化的结果中去,以保证数据统计的时效性,使得反馈给用户时的数据为最新时刻的。
虽然上述的图结构分布式账本数据的快速统计方法基本可以满足用户对基数统计需求的需要。但在实际的生产使用中,需求往往是复杂多变的,为了使得本发明的统计方法可以较好地适应统计需求变化,在资源负载、效率和准确性上达到比较好的均衡。由此,参照图1,本发明还提出了一种反馈制导方法,该反馈制导方法应用于所述图结构分布式账本的记账链中,具体可以包括如下步骤:
步骤S9:利用记账链周期性地向各个数链节点发送收集内存中的桶信息的请求,待内存中的桶信息收集完成后,将收集的桶信息去重并链式存储在记账链中;
步骤S10:在所述统计方法的每次调用过程中,在统计日志中记录所述调用过程中的统计性能指标;所述统计性能指标包括第一统计结果;
步骤S11:周期性地对所述统计日志和所述记账链做抽样检测,获得抽样样本;
步骤S12:对所述记账链中的抽样样本进行统计,获得第二统计结果,并将所述第二统计结果与所述统计日志的抽样样本中的第一统计结果进行计算,获得精准度误差;
步骤S13:对所述精准度误差和所述统计日志的抽样样本中的统计性能指标做分析,将分析结果反馈给该用户。
本发明在步骤S1~步骤S9的调用(执行)过程中,利用统计日志中记录调用过程中的统计性能指标,以此可获得第一统计结果。需要说明的是,此处的统计结果是针对每个用户的实际统计需求的实际统计结果。另外,上述的统计性能指标不止包括第一统计结果,还包括模型参数、输入参数、内存占用率、流量负载以及时间消耗值。
同时,本发明周期性地向各个数链节点请求桶信息,将收集的桶信息去重并链式存储在记账链中,所以记账链中的数据是无重复且为链式的,只要根据抽样检测需求,顺序扫描记账链,即可获得抽样检测对应的记账链中所存储的桶信息,此次获得的桶信息为抽样样本。接下来,对所述记账链中的抽样样本(桶信息)进行统计,获得第二统计结果。此处的第二统计结果为记账链中的数据,具有相当一段时间的滞后性,用于核对校验第一统计结果的准确性。由于抽样检测的时间段一致,本发明将第二统计结果与统计日志的抽样样本中的第一统计结果进行比较,可得出两者的精准度误差。需要说明的是,统计误差虽然是可控的,但是仍然具有一定的偶然性,这也是本发明进行多次抽样(周期性)的原因。
在本发明中,当精准度误差值过大则说明当前的统计方法与统计场景(统计场景在本发明中可视为统计需求)存在一定的不匹配,无法使得统计方法在资源负载、效率和准确性上达到比较好的均衡。如当统计使用的桶量越多时,统计的精准度会越高,但是统计所占用的内存资源,以及传输桶信息需要消耗的流量资源就会越大。反之,使用的桶量越少,统计的精准度会有所下降,但是统计所占用的内存资源,以及传输桶信息需要消耗的流量资源会越少。
在反馈制导方法的最后,系统将精准度误差和统计性能指标做分析,可判断出当前所设置的参数如桶量、哈希函数等是否需要改变,将分析结果反馈给该用户,以便开发者可以根据用户统计需求的精度要求、以及整体运行时长要求和流量负载要求,同时辅助内存占用量、日志文件占用量等因素对统计方法的桶量等参数进行调整,使得本发明的统计方法能更好地贴合当前使用场景。
接下来,针对上述步骤如何具体实现,本发明为实现上述快速统计的优化方法设计了一种框架结构,包括收发部分,统计部分和反馈制导部分,参照图4,示出了本发明的框架架构图。在图4中,收发部分由通信模块完成,统计部分由预处理模块和实时统计模块完成,反馈制导部分由反馈制导模块完成;通信模块对应本发明的快速统计的优化方法中的步骤S1和步骤S8;预处理模块对应本发明的快速统计的优化方法中的步骤S3~步骤S4;实时统计模块对应本发明的快速统计的优化方法中的步骤S5~步骤S7;反馈制导模块对应本发明的快速统计的优化方法中的步骤S9~步骤S13。
在本发明中,收发部分是整体部署方案的通讯框架,主要目的是解决各个节点之间的通讯问题。首先,在通讯协议上,本发明采用了XML-RPC(Extensible MarkupLanguage-Remote Procedure Call)。XML-RPC是XML远程调用方法的分布式计算协议,采用HTTP协议作为发送机制,可以调用或者请求其他操作系统的程序,并且期待可以得到答复。换句话说,XML-RPC使用户或者开发人员可以发送XML格式的请求到外部程序。其次,在异步收发上,为了使主节点可以异步管控各个数链节点,本发明采用python线程池ThreadPool,利用线程池来实现对各个节点需求的通讯。同时增添超时容错机制,以保证统计需求可以在规定时间内完成。
统计部分中,在对数据哈希部分,本发明采用的是murmurhash,它是一种非加密型的哈希函数。它适用于一半的哈希检索操作,对于规律性较强的key,murmurhash展现了较好的随机分布特性,并且具有低碰撞率的特性,能够比较好的满足我们的算法对数据哈希的要求。
反馈制导部分中,反馈制导模块的输入是一组快速统计方法实例的输入及统计结果、对应数据的真实统计值、统计中间结果的大小,以及统计所消耗的时长。输出是对这组统计的内存占用率,流量负载,时间消耗,以及准确性的权衡分析,给出新的统计中针对某种类别的统计应该如何调整统计方法。此模块的目的是在固定时间内针对生产环境的变化适当调整统计方法,以保证其高度适应性。鉴于快速统计的需求场景,一般情况下使用者(本发明中的用户)也是开发团队的成员,因此本发明不多描述如何确认用户对统计需求准确性的允许误差,以及统计时间容忍度。另外需要开发者对方法的流量使用和内存使用有所估计。
为更进一步验证本发明所设计与实现的图结构分布式账本数据的快速统计方法,本发明对现有北大数链BDChain分布式账本中区块总量统计和交易总量统计做实例验证,将本方法得到的统计结果与真实的统计结果做准确性对比,另外对空间压缩率、统计时长做分析,从而验证方法的有效性。
实例研究1——区块总量统计
图5为BDChain的区块交易动态展示面板,该面板向用户动态地展示交易详细信息、客户端信息、区块总量、交易总量、区块生产速率、交易生产速率、节点的物理位置信息以及各个节点的当前统计信息等。当前面板的区块总量统计信息为每5秒更新一次,将最新产生的区块总量叠加到统计中。在区块量较少时,可以通过访问轮询节点收集数据并去重做统计,但是对于目前上百万的区块量来说,之前的方法明显已经不适用。考虑到展示面板的作用只是为了流量监控,以及使用户对当前区块的体量和增长趋势有所把控,而并不是关心区块总量的精准数值。因此本发明以统计BDChain分布式账本的区块总量为例,展示本发明方法在分布式账本数据快速统计中的应用,以及对实验结果进行评估分析。
本次研究部署在BDChain的五个真实数链节点上,另有一个主节点负责分发统计。因为本方法的统计虽然误差可控,但仍具有一定偶然性,因此本次一共进行了五组对区块总量的统计实验。
首先,进行实验准备。在实验环境上,实验数据包含五组区块的数据,每组数据有五十万个区块左右,分布在各个节点上,平均每组数据在每个节点上有十万个区块左右。作为原始的待统计数据。因为区块的哈希字段为区块的唯一标识,因此统计区块的哈希字段即可得知区块总量。本发明抽取全部区块数据的哈希字段作为统计量,每组哈希数据的总大小大约为33M。
本发明将从压缩率、统计消耗时长以及精准度三个评估指标来验证本方法在区块总量统计上的适用性。
高压缩率:由于本发明使用的快速统计方法所占用的内存仅和桶量以及哈希函数有关。一般情况下,桶量为2的整数次幂,哈希空间为32位或64位。以实际使用的32位哈希为例,则每个桶的值最大为32,需要5个bit来保存,设桶量为m,则m个桶的内存占用量仅为m*5/8个字节。可知2^12个桶需要2.5k内存,同理2^16个桶需要40k内存,2^20个桶需要640k内存,即可以利用很小的内存完成统计任务。同时传输仅需传输桶信息,因此压缩量为从原始数据到桶信息,是O(log log n)压缩。
在此方法之前,分布式账本使用的统计方式为将数据全部汇总后去重,也就是说,将数据进行压缩后,通过http传输,这种方法的压缩量为数据的简单压缩。参照图6,示出了区块Block压缩实验图。本发明以zip压缩为例,展示两种方法的压缩量对比。从而体现本发明方法在压缩传输上具有的优势。
快速统计:对于高频使用的统计需求,除去数据的初始化时间,本发明对统计所消耗的时长进行了验证。统计时长包括两个部分:一是统计需求分发和统计桶信息回传所消耗的网络传输时间;二是各个数链节点计算桶信息以及主节点合并桶信息并计算最终结果所消耗的统计时间。
本发明从两个方面对统计时长进行评估,首先验证不同的桶量大小对统计消耗总时长的影响。分别取2的8、12、16、20次幂作为桶量参数,在5个数链节点的情况下,分别对5组数据做统计验证,并将最终的结果用箱型图表示出来,如图7所示,为Block桶量-时间实验图。通过实验结果图可以看出,随着桶量的增加,统计所需的时长也在增长,但总体可在秒级时间内完成。对于2的16次幂以下的桶量,快速统计可在基本可在一秒内完成。其次,本发明验证了不同节点个数对统计消耗总时长的影响,以5个节点为递增单位,模拟了分布式账本存在从5,10……一直到100个数链节点的统计时长。采用桶量为2的16次幂,做了5组数据的统计时间采集,实验结果如图8所示,图8为Block节点-时间实验图。从图8中可以看出,由于采用了异步的通信机制,所以节点数的增长对统计时长并无明显影响。因此证明本发明的方法可以拓展到大量节点上去,能够满足实际统计的需求。
准确性:准确性是本发明对方法校验的关键部分。本发明利用误差率来衡量实验结果的准确性,误差率的定义如下:
误差率=|准确值-估计值|/准确值*100%
对于本发明来说,准确值即为数据的精准统计值,估计值为利用本发明方法得出的统计值。从两个方面对准确性进行评估:首先,验证不同桶量大小对统计误差率的影响。分别取2的8、12、16、20次幂作为桶量参数,在5个数链节点的情况下,分别对5组数据做统计验证,并将最终的结果用箱型图表示出来,如图9所示,图9为Block桶量-误差实验图。通过图可以看出,随着桶量的增加,统计的误差率在迅速降低。在2^16次个桶的时候,误差已经可以控制在1%左右,在2^20次个桶时,误差可以控制在1‰以下。从而可以证明,面对大数据的统计需求,本发明的快速统计方法可以很好地满足用户对统计的要求。
实例研究2——交易总量统计
本次实验同上一节的区块总量统计,部署在BDChain的五个真实数链节点上,另有一个主节点负责分发统计。因为本方法的统计虽然误差可控,但仍具有一定偶然性,而交易的数据源包含的数据量远大于区块数据源的数据量,因此本次一共进行了二百组对交易总量的统计实验。除了验证上一节中提到的压缩率、统计时长、准确性之外,还可以对不同的基数估计方法做统计的结果进行评估分析,从而验证本发明提出的方法的有效性。
实验准备方面,在实验环境上,实验数据包含二百组交易的数据,每组数据有一千万个交易以上,分布在各个节点上,平均每组数据在每个节点上有两百万个交易左右。作为原始的待统计数据。因为交易的哈希字段为区块的唯一标识,因此统计交易的哈希字段即可得知交易总量。本申请抽取了全部交易数据的哈希字段作为统计量,每组哈希数据的总大小大约为600M。
接下来,本申请将再次从压缩率、统计消耗时长以及精准度三个评估指标来验证本方法在交易总量统计上的适用性,从而证实本发明的快速统计的优化方法可以很好地完成对分布式账本数据的快速统计。
高压缩率:根据实例研究1——区块总量统计的表述可知,在桶量为2的12、16、20次幂时,内存的使用量分别为2.5k,40k,640k;而对于之前使用的统计方法,对数据传输使用的普通的zip压缩来说,压缩完的数据大小在458M左右。可以看出本发明的快速统计方法在传输的压缩率要远远高于之前的方法,在流量消耗上,对流量资源的消耗极低。参照图10,图10为交易Transactions压缩实验图,可明确得到本发明的快速统计的优化方法和之前普通统计方法压缩率的对比效果。
快速统计:交易总量统计作为控制面板的一个高频使用统计需求,除去数据的初始化时间,发明人对统计所消耗的时长进行了验证。
发明人从两个方面对统计时长进行评估,首先验证不同的桶量大小对统计消耗总时长的影响。分别取2的8、12、16、20次幂作为桶量参数,在5个数链节点的情况下,分别对二百组数据做统计验证,并将最终的结果用箱型图表示出来,如图11所示,图11为Transactions桶量-时间实验图。通过实验结果图可以看出,随着桶量的增加,统计所需的时长也在增长,但总体可在秒级时间内完成。对于2的16次幂以下的桶量,快速统计可在基本可在一秒内完成。
其次,本发明验证了不同节点个数对统计消耗总时长的影响,以5个节点为递增单位,模拟了分布式账本存在从5,10……一直到100个数链节点的统计时长。采用桶量为2^16,做了两百组数据的统计时间采集,实验结果如图12所示,图12为Transactions节点-时间实验图。从图12中可以看出,节点数的增长对统计时长并无明显影响。
准确性:根据实例研究1——区块总量统计中误差率的定义,本发明对二百组数据做了准确性验证,从两个方面对准确性进行评估。首先,我们验证不同桶量大小对统计误差率的影响,分别取2的8、12、16、20次幂作为桶量参数,在5个数链节点的情况下,分别对两百组数据做统计验证,并将最终的结果用箱型图表示出来,如图13所示,图13为Transactions桶量-误差实验图。通过实验结果图13可以看出,随着桶量的增加,统计的误差率在迅速降低。在2^16次个桶的时候,误差已经可以控制在1%左右,在2^20次个桶时,误差可以控制在1‰左右。
其次,本发明对不同的基数估计方法进行了准确度方面的验证,实验复现了ADP基数估计算法以及HLLC基数估计算法,另有本发明所述R-HLLC基数估计方法,对两百组实验进行准确性评估。如图14所示,图14为Transactions算法-误差频次图,横坐标代表实验的误差率,纵坐标代表出现在此误差的实验频次,可以看出本发明所述的R-HLLC方法有统计更大的概率落在更小的误差内,从而证明本发明的统计方法相对于之前的统计方法在分布式账本数据统计的应用场景里有所改进。
为了更清晰直观地描述这种差异,参照图15,图15为Transactions算法-误差CDF图,即图14的CDF图。在图15中,横轴代表误差率,纵轴代表小于等于当前误差的实验频次。从图中15可以更加直观地看出,R-HLLC方法有统计更大的概率落在更小的误差内。以上实验结论可以证明,本发明所述的图结构分布式账本数据快速统计方法的有效性得到了验证,可以很好地解决当前分布式账本中此类需要快速、资源消耗低、几乎准确的统计要求。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图16,示出了本发明一种快速统计的优化系统的结构示意图,所述系统应用于图结构分布式账本中,所述系统包括统计装置100和反馈制导装置200,其中:
所述统计装置100包括:
统计需求广播模块1601,用于获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;
原始数据生成模块1601,用于根据所述统计需求,在数链节点中读取相应起止序号或起止时间的第一数据集,并在第一数据集中提取相应的统计对象对应的数据作为原始数据;
第一计算模块1603,用于将所述原始数据作为基数估计方法的输入,设定目标参数,将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新;
第一保存模块1604,用于在完成所述第一数据集的全部数据处理后,将所述第一数据集的全部桶信息保存在该数链节点的内存中;
新增原始数据模块1605,用于根据所述统计需求,从数链节点中读取在第一数据集之后更新的所有数据,并作为第二数据集,在所述第二数据集中提取相应的统计对象对应的数据作为新增原始数据;
第二计算模块1606,用于将新增原始数据输入到与第一计算模块相同的统计模型中,计算对应的桶信息;
第二保存模块1607,用于将新增原始数据的桶信息与该数链节点的内存中的桶信息进行合并,得到完整的桶信息,并保存至该数链节点的内存中;
统计结果反馈模块1608,用于将各个数链节点的内存中的桶信息返回给所述主节点,所述主节点用于将各个数链节点返回的桶信息进行统计运算,并将统计结果反馈给该用户;
所述反馈制导装置200应用于所述图结构分布式账本的记账链中,包括:
记账链收集模块1609,用于利用记账链周期性地向各个数链节点发送收集内存中的桶信息的请求,待内存中的桶信息收集完成后,将收集的桶信息去重并链式存储在记账链中;
统计性能指标记录模块1610,用于在所述统计装置的每次调用过程中,在统计日志中记录所述调用过程中的统计性能指标;所述统计性能指标包括第一统计结果;
抽样检测模块1611,用于周期性地对所述统计日志和所述记账链做抽样检测,获得抽样样本;
误差计算模块1612,用于对所述记账链中的抽样样本进行统计,获得第二统计结果,并将所述第二统计结果与所述统计日志的抽样样本中的第一统计结果进行计算,获得精准度误差;
分析结果反馈模块1613,用于对所述精准度误差和所述统计日志的抽样样本中的统计性能指标做分析,将分析结果反馈给该用户。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本发明实施例所述的一个或多个的快速统计的优化方法。
本发明实施例还提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明实施例所述的快速统计的优化方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种快速统计的优化方法及系统,进行了详细介绍,本发明中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种快速统计的优化方法,其特征在于,所述方法应用于图结构分布式账本中,所述方法包括统计方法和反馈制导方法,其中:
所述统计方法包括:
步骤S1:获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;
步骤S2:根据所述统计需求,在数链节点中读取相应起止序号或起止时间的第一数据集,并在第一数据集中提取相应的统计对象对应的数据作为原始数据;
步骤S3:将所述原始数据作为基数估计方法的输入,设定目标参数,将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新;
步骤S4:当完成所述第一数据集的全部数据处理后,将所述第一数据集的全部桶信息保存在该数链节点的内存中;
步骤S5:根据所述统计需求,从数链节点中读取在第一数据集之后更新的所有数据,并作为第二数据集,在所述第二数据集中提取相应的统计对象对应的数据作为新增原始数据;
步骤S6:采用步骤S3的方法对新增原始数据进行处理,得到新增原始数据的桶信息;
步骤S7:将新增原始数据的桶信息与该数链节点的内存中的桶信息进行合并,得到完整的桶信息,并保存至该数链节点的内存中;
步骤S8:将各个数链节点的内存中的桶信息返回给所述主节点,所述主节点用于将各个数链节点返回的桶信息进行统计运算,并将统计结果反馈给该用户;
所述反馈制导方法应用于所述图结构分布式账本的记账链中,包括:
步骤S9:利用记账链周期性地向各个数链节点发送收集内存中的桶信息的请求,待内存中的桶信息收集完成后,将收集的桶信息去重并链式存储在记账链中;
步骤S10:在所述统计方法的每次调用过程中,在统计日志中记录所述调用过程中的统计性能指标;所述统计性能指标包括第一统计结果;
步骤S11:周期性地对所述统计日志和所述记账链做抽样检测,获得抽样样本;
步骤S12:对所述记账链中的抽样样本进行统计,获得第二统计结果,并将所述第二统计结果与所述统计日志的抽样样本中的第一统计结果进行计算,获得精准度误差;
步骤S13:对所述精准度误差和所述统计日志的抽样样本中的统计性能指标做分析,将分析结果反馈给该用户;
所述步骤S3具体包括以下子步骤:
根据所述统计需求,选择一个哈希函数H将存储在数链节点中的每一条原始数据作为一个二进制的缓存buffer数据进行哈希,输出多个哈希结果;
将哈希空间平均分为m份,其中每一份称为一个桶,所述m为2的整数次幂;
将所述哈希结果作为哈希样本,所述哈希样本的哈希值长度为L,取其哈希值的前k位作为其桶号,其中m=2K,其后的L-k位作为用于之后估计的比特串,并将所述桶号相同的哈希样本分配到同一个桶中;
计算每个哈希样本的哈希值去除桶号后的剩余位数第一个“1”出现的位置,记为m[i];
针对同一个桶的哈希样本,将当前计算的m[i]与之前的桶信息m[j]进行比较,如果m[i]>m[j],将该桶号的桶信息更新为m[i],所述i,j均为正整数。
2.根据权利要求1所述的方法,其特征在于,所述哈希结果满足以下条件:
A1:所述哈希结果为固定长度;
A2:所述哈希结果满足均匀分布;
A3:所述哈希结果相同的概率无限趋近于零。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对桶信息进行排除离群值处理;
对所述排除离群值处理后的数据进行偏差修正。
4.根据权利要求3所述的方法,其特征在于,所述对桶信息进行排除离群值处理进一步包括:
采用抽样一致性RANSAC算法对桶信息进行排除离群值处理;其中,所述RANSAC算法基于如下假设:
B1:存在内群数据inlie带有一些参数的模型来描述其分布,且离群数据outlier是不能通过模型来拟合;
B2:离群数据是噪声,极端的噪声会导致有关数据的错误解释;
B3:给定一组内群数据,所述内群数据是数据量很小的内存数据,存在一个程序,用于估算适合解释这组数据模型的参数。
5.根据权利要求4所述的方法,其特征在于,采用抽样一致性RANSAC算法对经过分桶平均后的数据进行排除离群值处理的步骤包括:
子步骤一:对桶信息抽取样本,计算该样本在桶信息上的覆盖率,得到内群数据;
子步骤二:重复所述子步骤一多次,选出覆盖率最高的一组作为桶内群数据。
6.根据权利要求3所述的方法,其特征在于,所述对所述排除离群值处理后的数据进行偏差修正进一步包括:
使用超级日志计数HLLC算法对所述排除离群值处理后的数据进行偏差修正。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述主节点向传输异常的目标数链节点进行二次请求,在未接收到所述目标数链节点针对所述二次请求返回的桶信息时,则停止与所述目标数链节点的通信。
8.根据权利要求1所述的方法,其特征在于,所述统计性能指标还包括模型参数、输入参数、内存占用率、流量负载以及时间消耗值。
9.一种快速统计的优化系统,其特征在于,所述系统应用于图结构分布式账本中,所述系统包括统计装置和反馈制导装置,其中:
所述统计装置包括:
统计需求广播模块,用于获得用户的统计需求,主节点将所述统计需求广播分发给各个数链节点;
原始数据生成模块,用于根据所述统计需求,在数链节点中读取相应起止序号或起止时间的第一数据集,并在第一数据集中提取相应的统计对象对应的数据作为原始数据;
第一计算模块,用于将所述原始数据作为基数估计方法的输入,设定目标参数,将原始数据哈希后,计算哈希后的原始数据对应的桶号以及所述原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新;
第一保存模块,用于在完成所述第一数据集的全部数据处理后,将所述第一数据集的全部桶信息保存在该数链节点的内存中;
新增原始数据模块,用于根据所述统计需求,从数链节点中读取在第一数据集之后更新的所有数据,并作为第二数据集,在所述第二数据集中提取相应的统计对象对应的数据作为新增原始数据;
第二计算模块,用于将所述新增原始数据作为基数估计方法的输入,设定目标参数,将新增原始数据哈希后,计算哈希后的新增原始数据对应的桶号以及所述新增原始数据去除桶号后的剩余位数第一个“1”出现的位置,对所述桶号的桶信息进行更新,得到新增原始数据的桶信息;
第二保存模块,用于将新增原始数据的桶信息与该数链节点的内存中的桶信息进行合并,得到完整的桶信息,并保存至该数链节点的内存中;
统计结果反馈模块,用于将各个数链节点的内存中的桶信息返回给所述主节点,所述主节点用于将各个数链节点返回的桶信息进行统计运算,并将统计结果反馈给该用户;
所述反馈制导装置应用于所述图结构分布式账本的记账链中,包括:
记账链收集模块,用于利用记账链周期性地向各个数链节点发送收集内存中的桶信息的请求,待内存中的桶信息收集完成后,将收集的桶信息去重并链式存储在记账链中;
统计性能指标记录模块,用于在每次对所述统计装置执行的统计方法进行调用过程中,在统计日志中记录所述调用过程中的统计性能指标;所述统计性能指标包括第一统计结果;
抽样检测模块,用于周期性地对所述统计日志和所述记账链做抽样检测,获得抽样样本;
误差计算模块,用于对所述记账链中的抽样样本进行统计,获得第二统计结果,并将所述第二统计结果与所述统计日志的抽样样本中的第一统计结果进行计算,获得精准度误差;
分析结果反馈模块,用于对所述精准度误差和所述统计日志的抽样样本中的统计性能指标做分析,将分析结果反馈给该用户;
所述第一计算模块具体用于根据所述统计需求,选择一个哈希函数H将存储在数链节点中的每一条原始数据作为一个二进制的缓存buffer数据进行哈希,输出多个哈希结果;将哈希空间平均分为m份,其中每一份称为一个桶,所述m为2的整数次幂;将所述哈希结果作为哈希样本,所述哈希样本的哈希值长度为L,取其哈希值的前k位作为其桶号,其中m=2K,其后的L-k位作为用于之后估计的比特串,并将所述桶号相同的哈希样本分配到同一个桶中;计算每个哈希样本的哈希值去除桶号后的剩余位数第一个“1”出现的位置,记为m[i];针对同一个桶的哈希样本,将当前计算的m[i]与之前的桶信息m[j]进行比较,如果m[i]>m[j],将该桶号的桶信息更新为m[i],所述i,j均为正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910735557.2A CN110489460B (zh) | 2019-08-09 | 2019-08-09 | 一种快速统计的优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910735557.2A CN110489460B (zh) | 2019-08-09 | 2019-08-09 | 一种快速统计的优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489460A CN110489460A (zh) | 2019-11-22 |
CN110489460B true CN110489460B (zh) | 2021-09-24 |
Family
ID=68550512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910735557.2A Active CN110489460B (zh) | 2019-08-09 | 2019-08-09 | 一种快速统计的优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489460B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114881654B (zh) * | 2022-05-18 | 2023-04-11 | 天津大学 | 一种基于基数估计方法的高效区块链交易查询技术 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709001A (zh) * | 2016-12-22 | 2017-05-24 | 西安电子科技大学 | 一种面向流式大数据的基数估计方法 |
CN108769154A (zh) * | 2018-05-15 | 2018-11-06 | 北京工业大学 | 基于有向无环图和分布式账本的数据存储方法 |
CN109558727A (zh) * | 2018-10-25 | 2019-04-02 | 中国科学院计算技术研究所 | 一种路由安全检测方法和系统 |
-
2019
- 2019-08-09 CN CN201910735557.2A patent/CN110489460B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709001A (zh) * | 2016-12-22 | 2017-05-24 | 西安电子科技大学 | 一种面向流式大数据的基数估计方法 |
CN108769154A (zh) * | 2018-05-15 | 2018-11-06 | 北京工业大学 | 基于有向无环图和分布式账本的数据存储方法 |
CN109558727A (zh) * | 2018-10-25 | 2019-04-02 | 中国科学院计算技术研究所 | 一种路由安全检测方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110489460A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102548217B1 (ko) | 데이터 스트림의 실시간 처리를 위한 시스템 및 방법 | |
Nguyen et al. | Federated learning with buffered asynchronous aggregation | |
JP5620984B2 (ja) | テストデータの生成方法 | |
US8538938B2 (en) | Interactive proof to validate outsourced data stream processing | |
JP7003995B2 (ja) | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム | |
US11664974B2 (en) | Summary chains in distributed systems | |
KR101989330B1 (ko) | 데이터 처리 애플리케이션의 검사 | |
CN110580307B (zh) | 一种快速统计的处理方法及装置 | |
CN115186304B (zh) | 一种基于区块链的交易数据校验方法和系统 | |
CN111522846A (zh) | 一种基于时序中间态数据结构的数据聚合方法 | |
CN108415990B (zh) | 数据质量监控方法、装置、计算机设备和存储介质 | |
CN110489460B (zh) | 一种快速统计的优化方法及系统 | |
CN112508440B (zh) | 数据质量评估方法、装置、计算机设备及存储介质 | |
Suthakar et al. | Optimised lambda architecture for monitoring scientific infrastructure | |
Gessert et al. | The cache sketch: Revisiting expiration-based caching in the age of cloud data management | |
Cafaro et al. | Data stream fusion for accurate quantile tracking and analysis | |
CN115982292A (zh) | 数据建模方法、装置、模拟器及可读存储介质 | |
US11675777B2 (en) | Method, apparatus, and computer readable medium for generating an audit trail of an electronic data record | |
Ali | Consistency analysis of replication-based probabilistic key-value stores | |
US20210258372A1 (en) | Tiered access-oriented blockchain architecture | |
Zhu et al. | Lap: A latency‐aware parallelism framework for content‐based publish/subscribe systems | |
Che et al. | Improved streaming quotient filter: a duplicate detection approach for data streams. | |
Ramkumar | Scalable Computing in a Blockchain | |
Wai et al. | Performance Evaluation of M/D/1 Queuing Model on Hyperledger Fabric | |
CN117057425B (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 |