一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适用于图式区块链的轻量化数据存储装置及方法与流程

2021-11-15 17:22:00 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,尤其涉及一种适用于图式区块链的轻量化数据存储装置及方法。


背景技术:

2.由于其不可篡改、透明性和可追溯性等优点,区块链技术有望成为重塑公共治理和商业逻辑的信任基石。区块链技术的这些优点也促进了其在各种场景下的应用,例如加密货币、数据溯源以及可信存储等。传统的链式区块链模型核心是通过矿工(记账权) 的唯一性来确保合法数据链的唯一性。链式区块链的基本组成单位是区块,区块之间通过哈希指针相连,哈希指针确保数据的完整性、连续性和合法性。每个区块由区块头和区块体组成。区块由矿工产生,矿工收集一定时间内的交易进行打包,再结合时间戳、非对称加密等技术进行封装。最后矿工将其广播给其他用户,收到该区块的用户对本地数据视图进行延伸完善。继承了创世项目比特币的特点,大多数区块链系统都采用了顺序链式的数据模型。在该数据模型中,后续区块包含其前序区块的哈希。这种链式的数据结构虽然可以防止交易的恶意篡改,但也阻碍了区块链系统的性能。举例来说,作为区块链主流平台的比特币和以太坊系统每秒只能分别处理7笔交易和15 笔交易。
3.链表就是一条很多节点链接而形成的一条链,每个节点中包含指向前一个节点的链接。区块链之所以能连成一条链,是因为新区块中有指向上一个区块的指针,所以说区块链的数据结构是一个链表。但是区块链的问题就在于它是一条线,假设一个区块生成的时间是固定的,那么这样一条线的结构就会造成性能瓶颈。因为每隔这个固定时间,只允许有一个区块添加到链上。所以要提升区块链的性能,大概有两个思路,一个是缩短生成一个区块的时间,另一个则采用dag技术,通过改变数据的结构,让新数据的添加可以平行进行的思路。
4.相比于链式区块链,dag(directed acyclic graph)式区块链的优势在于良好的扩展性。链式区块链受限于对数据的链式组织方式,任何分叉会被认为是不合法的。对数据库写入的权限唯一性和数据的单向延伸极大地限制了链式区块链的扩展性和并发性。在数据组织方式上,dag式区块链中允许每个区块有两个或者两个以上的哈希指针,一段时间内的区块就会构成一个有向无环图。在写入权限上,dag式区块链允许多个(甚至每一个)用户拥有写入权限。每个区块的产生者可以自主选择引用多个历史区块,再将其广播,收到区块的用户将其保存在本地数据库中。这两个方面的改进使得dag式区块链获得了扩展性和并发性上的大幅度提升。
5.dag是不同于主流区块链的一种分布式账本技术,把同步记账提升为异步记账,目前限制区块链发展的核心技术问题就是效率问题,而dag模式为区块链提升效率提供了可能性。dag主要解决了区块链系统中的三大问题。1、提高交易速度:dag可以多线程交易,而区块链只能单线程交易,而且dag中交易者越多速度越快。2、节省成本:dag把交易确认的环境直接下放给交易本身,因此不需要手续费。3、节约资源:dag中没有矿工角色,所以不需要
消耗社会资源。为了提高区块链系统的性能,一些区块链项目引入了有向无环图(directed acyclic graph,dag)结构作为基础数据模型。该模型有望提供并行的交易处理和验证的强大功能。影响传统区块链性能的因素包括区块大小、生成速度和交易确认速度,不同于传统区块链, dag链没有区块的概念,所以没有区块容量的限制。tx(交易)被视为一种消息,多个消息组合成一个数据块,该数据块称作一个单元(unit),单元与单元之间相互链接组合成dag图。区块链是单线程,dag是多线程。交易验证方面,新单元可以选择链接到任意一个或多个旧单元,通过新交易验证并引用旧交易完成验证,简称“dag共识”。这允许用户的账本之间存在临时性的微小差异,短时间内弱化数据块全网一致性,因而不易发生堵塞,可以提高交易并发量。因此,dag链网络节点规模越大、交易量越大,则交易确认时间越短。
6.总体而言,基于dag的区块链系统可以分为两大类:blockdag和txdag。前者(如conflux和phantom共识算法)与传统的链式区块链相似,以区块为单位,组织和处理多笔交易。从理论上讲,这允许不同的节点并行地创建新区块,从而提升系统的吞吐量。然而,在实际运行中,并发产生的区块中可能存在大量的交易重叠,从而使系统只能获得有限的性能提升。相比之下,iota、byteball和nano等许多项目属于txdag类型,该类型采用了更细粒度的“交易”作为存储单元,可以获得更高的并行度,从而成为图式区块链项目中的主流。
7.现有技术中公开号为cn111080288a的专利文献提出了一种基于有向无环图的区块链共识达成方法及装置,在其提出的区块链共识达成方法中,可在区块链上的网络节点发布某一交易时,在当前dag视图中创建与所述某一交易对应的新块,并根据最优轴心树的规则及所述新块,对所述当前d ag视图中的轴心树以及所述当前dag视图进行更新,还可根据pbft算法,使所述区块链的整个网络对更新后的dag视图的轴心树达成共识,从而可保证在去中心化与安全性的前提下,提高区块链系统的处理效率。
8.现有技术中公开号为cn111901350a的专利文献提出了一种区块链系统、数据处理方法、计算机设备及存储介质,属于区块链技术领域。区块链的数据处理方法通过构建有向无环图结构的区块链提高了区块的存储效率,对区块存储的数据进行压缩,有效提升了区块的存储空间;采用聚合的方式传输数据,提高了区块链的网络通信效率;采用poa协议同步各个节点中的交易信息,降低了验证的复杂度,加速了节点间的共识验证效率;采用侧链协议和分片策略控制区块间的数据交互,加速了区块间的交互效率。
9.然而,现有的txdag图式区块链项目在提升了系统性能的同时,也带来了高额的数据存储开销。更准确地说,与blockdag图式区块链项目或链式区块链项目相比,txdag项目的存储开销问题更为严峻。这是因为txdag系统要求每笔交易都包含额外的哈希字段以引用过去的交易,这些交易字段往往占用了大量的存储空间。具体而言,哈希字段的大小往往比其他字段更大,如前者需要32个字节,而后者中的随机数往往只需要8个字节或4个字节。因此,txdag系统很容易累积多达tb(terabyle,太字节)甚至更多的数据,从而超过了普通节点的存储能力。尤其是在物联网(internet of things,i ot)等设备资源受限的场景中,节点的高额存储开销问题亟待解决。
10.此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于申请人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。


技术实现要素:

11.现有的针对区块链系统所提出的轻量化数据存储方案,主要是针对链式区块链结构来提出的,链式区块链系统中由于交易频次低,账户数据的冗余性也相应较低,并且链式区块链系统中不存在交易之间相互引用的特点,因此不存在引用数据的冗余性问题。反观图式区块链尤其是txdag图式区块链,采用了更细粒度的“交易”作为存储单元,可以获得更高的并行度,但在提升了系统性能的同时,也带来了高额的数据存储开销,图式区块链中的账户数据和引用数据冗余问题严重。对此,本发明提出了一种适用于图式区块链的轻量化数据存储装置及方法,或也可称为面向图式区块链的弹性可扩展数据存储模型及系统,实现了在图式区块链中的高可扩展性。本发明通过对图式区块链系统中数据的冗余性进行了分析,并提出了两种数据冗余问题:账户数据冗余和引用数据冗余。对此,本发明提出了周期性的交易合并方案,以减少账户数据的冗余性;并通过进行引用数据之间的覆盖关系分析,对被覆盖的引用和交易进行删减,以降低引用数据的冗余性。通过本发明所提出的彼此相结合的交易合并与交易引用删减方案,可达到降低图式区块链中的数据存储开销的目的。
12.本发明提出了一种适用于图式区块链的轻量化数据存储装置,至少包括用于用户发起新交易的普通交易构建模块以及广播交易的网络广播模块,其特征在于,还包括合并交易构建模块和交易删减模块,合并交易构建模块用以在其确定账户所发起的交易笔数满足第一预设条件时对交易进行第一轻量化处理,交易删减模块用以对经第一轻量化处理后得到的且其验证引用满足第二预设条件的交易进行第二轻量化处理,网络广播模块对处理得到的交易进行广播。第一轻量化处理指的是对交易进行合并处理。第二轻量化处理指的是对交易进行删减处理。
13.根据一种优选实施方式,合并交易构建模块被配置为周期性地确定账户所发起的交易数量是否满足进行合并处理的第一预设条件。
14.根据一种优选实施方式,所述轻量化数据存储装置还包括普通交易构建模块,其用于构建用户所发起的新交易数据。
15.根据一种优选实施方式,合并交易构建模块用于收集新交易构建前发起的至少一笔交易并将其收集到的交易与构建的新交易进行合并。
16.根据一种优选实施方式,合并交易构建模块可通过第一轻量化处理生成合并交易的内容区、头部区、验证区和签名区中的至少一个。
17.根据一种优选实施方式,所述轻量化数据存储装置还包括内容区压缩模块,其用于对同一账户的不同合并交易中的内容区进行统一存储。
18.本技术还提出了一种适用于图式区块链的轻量化数据存储方法,其特征在于,至少包括:确定账户所发起的交易笔数是否满足第一预设条件;当交易数量满足第一预设条件时,对交易进行合并处理;确定交易的验证引用是否满足第二预设条件;当验证引用满足第二预设条件时,对交易进行删减处理;广播合并交易。
19.根据一种优选实施方式,周期性地确定账户所发起的交易数量是否满足进行合并处理的第一预设条件。
20.根据一种优选实施方式,第一预设条件包括:账户所发起的当前交易笔数为预设交易笔数阈值的整数倍。
21.根据一种优选实施方式,将账户所发起的交易中与预设交易笔数阈值相对应的至少两笔交易进行合并,得到合并交易。
22.根据一种优选实施方式,进行交易合并处理的步骤至少包括:将每笔交易中的验证引用相组合以共同构成合并交易中的验证区。
23.根据一种优选实施方式,第二预设条件包括:合并交易中的至少一笔交易达到引用覆盖状态。
24.根据一种优选实施方式,进行交易删减处理的步骤至少包括:删除达到引用覆盖状态的交易的验证引用数据。
25.根据一种优选实施方式,若账户所发起的交易笔数不满足第一预设条件,账户构建普通交易,广播该普通交易。
26.本发明还提出了一种适用于图式区块链的轻量化数据存储装置,至少包括用于用户发起新交易的普通交易构建模块,还包括:合并交易构建模块,其被配置为收集账户此前发起的至少一笔交易,并将此前发起的至少一笔交易和新交易中的相关字段进行合并;引用覆盖计算模块,用于对新交易中所包含的验证引用进行覆盖关系的计算;交易删减模块,用于对达到引用覆盖状态的交易进行删减。
27.本发明还提出了一种适用于图式区块链的轻量化数据存储装置,包括计算机设备,其特征在于,所述计算机设备被编程或配置以执行本发明所提出的适用于图式区块链的轻量化数据存储方法的步骤,或所述计算机设备的存储介质上存储有被编程或配置以执行本发明所提出的适用于图式区块链的轻量化数据存储方法的计算机程序,或所述计算机可读存储介质上存储有被编程或配置以执行本发明所提出的适用于图式区块链的轻量化数据存储方法的计算机程序。
28.通过本发明所构思的技术方案,能够取得至少一个以下有益效果:
29.(1)本发明针对图式区块链设计轻量化的数据存储模型,有望大大降低区块链系统的数据存储开销,提升系统的可扩展性。与此同时,该模型可保证原有图式区块链系统的并行化特点,从而保证较高的系统吞吐量。此外,该模型不会影响图式区块链系统中采用的累积确认共识算法,从而维护了图式区块链系统原有的安全性。
30.(2)本发明针对图式区块链提出了轻量化的数据存储模型,对其他结构下的区块链数据存储模型设计也将具有借鉴意义。如对传统的链式结构区块链系统,以及未来可能出现的图链混合式区块链系统,本发明提出的合并删减方法都有望降低系统的数据存储开销。
附图说明
31.图1是本发明提供的适用于图式区块链的轻量化数据存储方法的简化流程示意图。
具体实施方式
32.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要
彼此之间未构成冲突就可以相互组合。
33.为了便于理解,将本发明的技术用语进行如下解释。
34.dag,directed acyclic graph,即有向无环图,按照数学上的定义,d ag指的是一个没有有向循环的、有限的有向图。它由有限个顶点和有向边组成,每条有向边都从一个顶点指向另一个顶点;从任意一个顶点出发都不能通过这些有向边回到原来的顶点。在计算机领域,有向无环图是一种数据结构,即一种数据组织方式。
35.图式区块链,其主要指的是基于dag的区块链,也被称作dag账本,其采用dag数据结构组织账本数据并进行存储。dag账本的每个顶点表示存储单元,可以是单笔交易,也可以是一段时间内的多笔交易组成的区块。一般的单链区块链是dag账本的一种特殊情况,也即每个时间段内整个系统只能产生一个区块。不同的是,dag账本允许不同节点按自己的节奏创建存储单元,只要每个存储单元选择一个或多个单元作为自己的子单元。dag 账本相对于传统链式区块链的优势是非常明显的,主要在于可扩展性和交易吞吐量上。由于采取dag数据结构来组织账本,每个节点不需要再等其它节点的数据达到统一就可以处理新的交易,避免了因网络延迟和数据同步造成的时间浪费。因此,参与dag记账的节点很容易大幅延展。此外,dag 账本的末端可以平行增加任意多的新数据,因此具有天然的高并发特性,可提供很高的交易吞吐量。这一点更是完胜链式区块链。链式区块链每次只能增加一个区块大小的数据量,所以提供的交易吞吐量有限且难以大幅提升。
36.弹性可扩展性,其在本发明可以是指可以在固定的时间内处理更多交易的技术或协议。像visa这样的传统支付网络每秒可处理数千笔交易,但大多数区块链目前只能在同一时间内处理少量交易。
37.区块链,区块链由一组具有共识协议(工作量证明,股权证明和股权授权证明)的节点维护,每个全节点保留整个区块链的本地副本,因此,每个节点都可以访问历史信息、完成搜索交易以及计算余额。然而,随着区块链包含的数据的数量逐渐增加,其所需的存储空间不断增大。例如,完整的某数字凭证区块由区块头和区块体组成,其中,区块头占80个字节并包含区块的基本信息,例如版本号,前一个区块的区块头哈希值,merkle根哈希,时间戳,目标值和随机数等等;区块体包括交易数据。区块体所包含的交易数据用于构建merkle树,merkle树的数根存储在区块头中。每笔交易都由发送者使用数字签名进行签名,从而确保交易无法伪造。一笔交易包括若干交易输入和若干交易输出。交易的每个输入对应于某一先前笔交易的输出,用哈希指针表示,占32字节,称为previous tx hash。由于每个交易至少有一个输入,而哈希字段的大小往往比其他字段更大,如前者需要32个字节,而后者中的随机数往往只需要8个字节或4个字节,因此哈希指针将占用区块中的大量空间。
38.为降低图式区块链系统的数据存储开销,本发明提出了一种适用于图式区块链的轻量化数据存储方法,该方法至少包括步骤s1~s10。尽管本发明具体实施方式中的轻量化数据存储方法以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施例的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的
子组合中实施。
39.s1:对于账户发起的第n笔交易,判断n是否是k的整数倍。该判断对应于第一预设条件。如图1所示出的n%y==0,等价于:n能够被y整除,即n是y的整数倍。若n%y==0成立,转入步骤s2;否则,转入步骤s3。交易的合并按照一定的周期进行,从而避免频繁合并带来计算开销。不失一般性,该周期设定为k笔交易。即:账户每发起k笔交易,尝试进行一次合并操作。在本技术中,k值为预设交易笔数阈值。
40.s2:账户构建普通交易t
n
,广播该普通交易。
41.优选地,一笔普通交易t
n
可包含一个父引用字段、两个验证引用字段、发送方账户字段、接收方账户字段、转账数额字段、时间戳字段、随机数字段和签名字段。其中,父引用字段指向该账户发出的前一个交易哈希,验证引用字段随机指向网络中的两笔端节点交易哈希。
42.优选地,为保证普通交易在后续阶段可进行合并操作,步骤s2还可包括:若一笔交易没有被任何其他交易使用验证引用字段进行引用,该交易被认为是端节点交易。一般而言,端节点交易代表一些新生成的交易。此外,由于不同账户的网络视图不同,且网络具有一定的延迟性,不同账户可能同时引用同一个端节点交易。
43.s3:对于满足合并周期的第n笔交易,将其之前的k

1笔交易进行合并。获取账户之前发起的k

1笔交易:t
n

k 1
,t
n

k 2


,t
n
‑1,合并为tu
n

44.优选地,为了减少合并交易的数据存储开销,步骤s3还可包括s31~s34 中的至少一个。
45.s31:根据交易内容的重要性程度划分,每笔交易中的内容可以被划分为两类:核心内容和辅助内容。其中,核心内容包括交易的接收方账户、转账金额、时间戳、随机数等字段;而辅助内容主要包括父引用和验证引用字段。对于t
n

k 1
,t
n

k 2


,t
n
‑1,t
n
中的每一笔交易,在合并交易中保留该交易中的核心内容,构成合并交易中的核心内容区。
46.s32:对辅助内容中的父引用进行处理,将t
n

k 1
交易中的父引用和当前账户构成合并交易中的头部区。
47.s33:对辅助内容中的验证引用进行处理,将t
n

k 1
,t
n

k 2


,t
n
‑1, t
n
中的验证引用组合在一起构成合并交易的验证区。
48.对于同一个账户发出的多笔合并交易,不同合并交易中的内容区数据重复比例较高。s34:将合并交易中的核心内容区数据统一存储在共同内容区 (ccs,common content site)中,并针对每一个合并交易生成指向ccs 不同部分的指针,以标明该合并交易的内容区数。
49.s34:最后针对整个合并交易进行签名,附加在合并交易的末尾。
50.s4:令i=n

k 1。此时i所对应的即为第n

k 1笔交易t
n

k 1

51.s5:判断i<n与否。该判断对应于第二预设条件。若i<n成立,转入步骤s6。否则,转入步骤s10。
52.s6:更新第i笔交易的引用计数。具体地,若一个新的交易引用了之前的某个交易,则将被引用的该交易的引用计数递增加1。更新第i笔交易的引用计数以确保其所引用的对象的存在。不会对图式区块链系统中采用的累积确认共识算法造成影响。
53.s7:判断之前的第i笔交易中的验证引用是否达到“引用覆盖”的状态。以此进一步
对合并交易中的验证区数据进行精简。若是,转入步骤s8;若否,转入步骤s9。
54.优选地,对于任意两个验证引用,若引用的头节点和尾节点分别属于相同的账户,则称时间戳较晚的验证引用覆盖了时间戳较早的验证引用。若一个交易中的所有验证引用都被覆盖,则称该交易达到了“引用覆盖”的状态。
55.s8:删除第i笔交易。以此降低数据存储空间。
56.s9:递增i的值,转入步骤s5,进行下一笔交易的处理。通过递增i的值可遍历当前交易周期中的k笔交易。如图1所示出的i ,等价于递增i 的值。
57.s10:广播tu
n
,结束。
58.优选地,为降低tu广播中的网络传输开销,当前用户只需广播新交易中的接收方账户、转账金额、时间戳、随机数、验证引用字段,以及新tu 中的签名字段。其他用户在接收到以上字段信息后,基于已有的交易数据可构建出新tu(合并交易)的完整内容。
59.本技术所提出的一种适用于图式区块链的轻量化数据存储装置中至少包括普通交易构建模块、合并交易构建模块、引用计数更新模块、引用覆盖计算模块、交易删减模块、内容区压缩模块和网络广播模块中的至少一个。本发明的轻量化数据存储装置优选地例如是:计算机、服务器等,以及其他采用轻量化数据存储装置的装置或系统。根据本发明实施例,除了普通交易构建模块、合并交易构建模块、引用计数更新模块、引用覆盖计算模块、交易删减模块、内容区压缩模块和网络广播模块,分片存储装置还可以包括诸如中央处理器、通信单元、存储单元、i/o单元的其他组件。例如,普通交易构建模块、合并交易构建模块、引用计数更新模块、引用覆盖计算模块、交易删减模块、内容区压缩模块和网络广播模块分别与中央处理器相连接,均与中央处理器进行信息交互。又或例如,普通交易构建模块、合并交易构建模块、引用计数更新模块、引用覆盖计算模块、交易删减模块、内容区压缩模块和网络广播模块彼此依次连接以进行信息交互。
60.作为示例,可以用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本公开所描述的各种示例性的逻辑块、模块和电路。通用处理器可以是微处理器,或者,处理器也可以是任何普通的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp内核的结合,或者任何其它此种结构。作为示例,本公开的实施例可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
61.普通交易构建模块用于用户发起新交易。普通交易构建模块在无需进行交易合并时构建交易数据。构建交易数据包括对生成的新交易进行签名。
62.合并交易构建模块用于收集账户之前发起的k

1笔交易。合并交易构建模块将这k

1笔交易和新交易中的相关字段进行合并。合并交易构建模块可生成合并交易中的内容区、头部区、验证区和签名区。
63.引用计数更新模块用于对新交易所指向的其他节点进行引用计数的更新。
64.引用覆盖计算模块用于对新交易中所包含的验证引用进行覆盖关系的计算。引用覆盖计算模块可对被覆盖的验证引用进行标记。
65.交易删减模块用于对所有验证引用都被覆盖了的交易进行删减,从而降低系统中的数据存储开销。
66.内容区压缩模块用于对同一账户的不同合并交易中的内容区进行统一存储。合并交易中的数据冗余被压缩,可有效降低数据存储开销。
67.网络广播模块用于收集新交易中的接收方账户、转账金额、时间戳、随机数、验证引用字段,以及新tu中的签名字段。网络广播模块将这些字段组建成tu增量,实现轻量化的网络广播。
68.需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。本发明说明书包含多项发明构思,诸如“优选地”、“根据一个优选实施方式”或“可选地”均表示相应段落公开了一个独立的构思,申请人保留根据每项发明构思提出分案申请的权利。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献