CN115858533A - 一种基于哈希表的积点信息溯源方法、装置、设备及介质 - Google Patents

一种基于哈希表的积点信息溯源方法、装置、设备及介质 Download PDF

Info

Publication number
CN115858533A
CN115858533A CN202211633694.3A CN202211633694A CN115858533A CN 115858533 A CN115858533 A CN 115858533A CN 202211633694 A CN202211633694 A CN 202211633694A CN 115858533 A CN115858533 A CN 115858533A
Authority
CN
China
Prior art keywords
point
point information
information
tracing
block
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.)
Pending
Application number
CN202211633694.3A
Other languages
English (en)
Inventor
王鲁昱
成磊
杨晨
李文博
郑超洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Unionpay Co Ltd
Original Assignee
China Unionpay Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN202211633694.3A priority Critical patent/CN115858533A/zh
Publication of CN115858533A publication Critical patent/CN115858533A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于哈希表的积点信息溯源方法、装置、设备及介质,在产生消费或者退款的交易信息时,按照交易用户和交易时间作为次序索引将交易信息产生的积点信息存储至磁盘。当需要进行积点溯源时,首先根据用户标识和预先配置的哈希表确定出对应的积点信息链表,然后按照先进先出原则对积点信息链表中的积分信息进行溯源。并且仅在第一个区块中存储积点信息,其它区块中仅存储磁盘哈希索引。对第一个区块中的积点信息进行溯源,若第一个区块已空,根据磁盘哈希索引,将磁盘中对应的积点信息写入非第一个区块,并按照先进先出原则对写入的积点信息进行溯源。从而实现了一种有效的积点信息溯源方案。

Description

一种基于哈希表的积点信息溯源方法、装置、设备及介质
技术领域
本申请涉及金融技术领域,尤其涉及一种基于哈希表的积点信息溯源方法、装置、设备及介质。
背景技术
商业积分是各大型企业加强渠道营销、提升产品用户粘性的重要方式。在本权利中,商业积分被称为用户积点,通过活动、消费、登录等方式领取,并可用于兑换用户权益。在会计账务处理上,积点涉及“借记营销费用”和“贷记应交税费”等会计账务处理,而积分的发放与核销时间往往是分离的,因此积点信息的溯源非常重要。
积点信息溯源主要包括:每次交易获取积点的数量、领取积点的时间、领取积点的活动ID、获取积点的途径,如通过交易获取、登录应用程序App的行为获取等。目前还没有一种快速而有效的积点信息溯源方案。
发明内容
本申请实施例提供了一种基于哈希表的积点信息溯源方法、装置、设备及介质,用以提供一种快速而有效的积点信息溯源方案。
本申请提供了一种基于哈希表的积点信息溯源方法,所述方法包括:
当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘;
当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表;
按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
进一步地,所述当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘包括:
在应用模块中,接收到消费或申请退款的交易信息时,将所述交易信息对应的积点信息暂存入内存中;
所述内存中的清理模块按照交易用户和交易时间作为次序索引将暂存的积点信息顺序写入磁盘中。
进一步地,所述将所述积点溯源请求对应的用户标识映射为对应的哈希值包括:
通过哈希算法将所述积点溯源请求对应的用户标识映射为对应的哈希码;
通过压缩函数将所述哈希码映射到设定范围区间,得到所述用户标识对应的哈希值。
进一步地,包括:
配置哈希表桶的数量,并建立每个桶分别与用户的对应关系;针对每个用户,通过键值对的形式建立所述用户与积点信息链表的对应关系;
其中,所述积点信息链表中包括第一个区块和非第一个区块;每个区块配置积点信息容量,所述第一个区块中包括所述容量个积点信息,所述非第一个区块中包括磁盘哈希索引。
进一步地,所述方法还包括:
若所述第一个区块已空,更新所述积点信息链表的链表指针,将与所述第一个区块相邻的非第一个区块更新为第一个区块。
进一步地,包括:
获取所述积点溯源请求中携带的核销积点数,以及当前溯源的积点信息中的积点获取数;根据所述核销积点数和积点获取数,对积点信息进行溯源。
进一步地,所述根据所述核销积点数和积点获取数,对积点信息进行溯源包括:
若所述核销积点数大于所述积点获取数,更新溯源信息,并移除所述积点信息,根据核销积点数与所述积点获取数的差值,对所述积点信息的下一积点信息进行溯源;
若所述核销积点数等于所述积点获取数,更新溯源信息,并移除所述积点信息;
若所述核销积点数小于所述积点获取数,更新溯源信息,并将所述积点获取数与所述核销积点数的差值作为所述积点信息中更新后的积点获取数。
另一方面,本申请提供了一种基于哈希表的积点信息溯源装置,所述装置包括:
存储模块,用于当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘;
确定模块,用于当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表;
溯源模块,用于按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
进一步地,所述存储模块,具体用于在应用模块中,接收到消费或申请退款的交易信息时,将所述交易信息对应的积点信息暂存入内存中;所述内存中的清理模块按照交易用户和交易时间作为次序索引将暂存的积点信息顺序写入磁盘中。
进一步地,所述确定模块,具体用于通过哈希算法将所述积点溯源请求对应的用户标识映射为对应的哈希码;通过压缩函数将所述哈希码映射到设定范围区间,得到所述用户标识对应的哈希值。
进一步地,所述确定模块,还用于配置哈希表桶的数量,并建立每个桶分别与用户的对应关系;针对每个用户,通过键值对的形式建立所述用与积点信息链表的对应关系;其中,所述积点信息链表中包括第一个区块和非第一个区块;每个区块配置积点信息容量,所述第一个区块中包括所述容量个积点信息,所述非第一个区块中包括磁盘哈希索引。
进一步地,所述溯源模块,还用于若所述第一个区块已空,更新所述积点信息链表的链表指针,将与所述第一个区块相邻的非第一个区块更新为第一个区块。
进一步地,所述溯源模块,具体用于获取所述积点溯源请求中携带的核销积点数,以及当前溯源的积点信息中的积点获取数;根据所述核销积点数和积点获取数,对积点信息进行溯源。
进一步地,所述溯源模块,具体用于若所述核销积点数大于所述积点获取数,更新溯源信息,并移除所述积点信息,根据核销积点数与所述积点获取数的差值,对所述积点信息的下一积点信息进行溯源;若所述核销积点数等于所述积点获取数,更新溯源信息,并移除所述积点信息;若所述核销积点数小于所述积点获取数,更新溯源信息,并将所述积点获取数与所述核销积点数的差值作为所述积点信息中更新后的积点获取数。
再一方面,本申请提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一项所述的方法步骤。
再一方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法步骤。
本申请提供了一种基于哈希表的积点信息溯源方法、装置、设备及介质,所述方法包括:当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘;当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表;按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
上述的技术方案具有如下优点或有益效果:
本申请中,在产生消费或者退款的交易信息时,按照交易用户和交易时间作为次序索引将交易信息产生的积点信息存储至磁盘。当需要进行积点溯源时,首先根据用户标识和预先配置的哈希表确定出对应的积点信息链表,然后按照先进先出原则对积点信息链表中的积分信息进行溯源。并且仅在第一个区块中存储积点信息,其它区块中仅存储磁盘哈希索引。对第一个区块中的积点信息进行溯源,若第一个区块已空,根据磁盘哈希索引,将磁盘中对应的积点信息写入非第一个区块,并按照先进先出原则对写入的积点信息进行溯源。从而实现了一种快速而有效的积点信息溯源方案。通过本申请哈希表和积点信息链表的设计,内存中仅存储少量的积点信息,对于其余的积点信息,只在内存中存储对应的磁盘哈希索引。根据溯源需要从磁盘中获取磁盘哈希索引对应的积点信息并进行溯源。本申请可以较大程度的降低内存的数据存储量,降低了数据处理量,保证了积点信息溯源的效率。并且无需申请额外的磁盘存储空间,不构成对磁盘中原有数据集的破坏。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的基于哈希表的积点信息溯源过程示意图;
图2为本申请提供的基于哈希表的积点信息溯源***流程图;
图3为本申请提供的哈希表的构建过程举例示意图;
图4为本申请提供的积点溯源算法流程图;
图5为本申请提供的基于哈希表的积点信息溯源装置结构示意图;
图6为本申请提供的电子设备结构示意图。
具体实施方式
为使本申请的目的和实施方式更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
术语“模块”是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
图1为本申请提供的基于哈希表的积点信息溯源过程示意图,该过程包括:
S101:当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘。
S102:当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表。
S103:按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
本申请提供的基于哈希表的积点信息溯源方法应用于电子设备,该电子设备可以是PC、平板电脑等设备,也可以是服务器。
电子设备接收到消费或申请退款的交易信息时,首先确定出当前交易信息所核销的或退回的积点信息,积点信息包括积点获取数、获取时间、活动编号、获取途径等。将积点信息按照交易用户和交易时间作为次序索引存储至磁盘中。
具体的,将积点信息存入磁盘的过程为:在应用模块中,接收到消费或申请退款的交易信息时,将交易信息对应的积点信息暂存入内存中;内存中的清理模块按照交易用户和交易时间作为次序索引将暂存的积点信息顺序写入磁盘中。这样针对每个用户,该用户历史的各个积点信息按照时间信息存储在磁盘中。以交易用户和交易时间作为次序索引将积点信息存入磁盘,有利于减小后续建立磁盘哈希索引的复杂度,提高后续根据磁盘哈希索引查找磁盘中的积点信息的效率。
需要说明的是,相对于“随机写入”,本申请采用“顺序写入”的方式将积点信息存储至磁盘中,顺序写入保证了积点信息在磁盘物理地址上的连续性,防止文件碎片的产生,确保在溯源时,根据哈希地址能快速对非第一区块进行更新,而不是浪费时间在磁针寻道上。
电子设备接收到积点溯源请求时,首先获取积点溯源请求中携带的用户标识,用户标识可以是用户的姓名、手机号码、身份证号码等。将用户标识映射为对应的哈希值。具体的,通过哈希算法将积点溯源请求对应的用户标识映射为对应的哈希码;通过压缩函数将哈希码映射到设定范围区间,得到用户标识对应的哈希值。例如,通过循环移位哈希算法将用户标识映射为对应的哈希码,哈希码可以是一个整数。然后通过绝对中位差MAD(Median Absolute Deviation)方法将哈希码映射到[0,N-1]的区间上,得到用户标识对应的哈希值。
电子设备预先配置有哈希表,哈希表记录有各个用户对应的哈希值与积点信息链表的对应关系,确定出积点溯源请求对应的用户标识映射为对应的哈希值之后,根据对应关系可以确定出积点溯源请求对应的用户对应的积点信息链表。
积点信息链表包括第一个区块和非第一个区块,非第一个区块可以是一个也可以是多个。如果非第一个区块是多个,那么按照顺序依次排列在第一个区块之后,并通过链表指针指示各个区块之间的先后顺序。第一个区块按照时间顺序存储设定数量的积点信息,非第一个区块仅存储对应的积点信息的磁盘哈希索引。本申请实现了待溯源数据的两级存储:哈希表的一部分在内存中,其它部分放在磁盘里。
具体的,配置哈希表桶的数量,并建立每个桶分别与用户的对应关系;针对每个用户,通过键值对的形式建立所述用户与积点信息链表的对应关系;其中,所述积点信息链表中包括第一个区块和非第一个区块;每个区块配置积点信息容量,所述第一个区块中包括所述容量个积点信息,所述非第一个区块中包括磁盘哈希索引。
例如,磁盘中存储了用户甲的10个积点信息,按照时间由先到后的顺序分别为积点信息1、积点信息2、积点信息3、积点信息4、积点信息5、积点信息6、积点信息7、积点信息8、积点信息9、积点信息10。设定用户甲对应的积点信息链表中每个区块的积点信息容量为4,那么经计算得出用户甲对应的积点信息链表中需要设置三个区块,分别称为第一个区块、第二个区块和第三个区块。第一个区块存储积点信息1、积点信息2、积点信息3、积点信息4,第二个区块存储积点信息5、积点信息6、积点信息7、积点信息8对应的磁盘哈希索引,第三个区块存储积点信息9、积点信息10对应的磁盘哈希索引。
按照先进先出原则对积点信息链表的第一个区块中的积点信息进行溯源,并且一个积点信息溯源结束之后,将积点信息从第一个区块中删除。若所述第一个区块已空,根据与第一个区块相邻的非第一个区块中的磁盘哈希索引,将磁盘中与磁盘哈希索引对应的积点信息写入非第一个区块,并按照先进先出原则对非第一个区块中的积点信息进行溯源,以此类推。
具体的,若第一个区块已空,更新积点信息链表的链表指针,将与第一个区块相邻的非第一个区块更新为第一个区块。例如哈希表中的第一个桶对应用户甲的积点信息链表,初始的链表指针例如是第一个桶指向用户甲,再指向第一个区块,再指向第二个区块,再指向第三个区块。若第一个区块已空,那么链表指针更新为第一个桶指向用户甲,再指向第二个区块,再指向第三个区块。也就是说删除了第一个区块,原来的第二个区块作为了更新后的第一个区块。然后根据更新后的第一个区块中的磁盘哈希索引,将磁盘中对应的积点信息写入更新后的第一个区块,再按照先进先出原则对更新后的第一个区块中的积点信息进行溯源。
电子设备获取积点溯源请求中携带的核销积点数,以及当前溯源的积点信息中的积点获取数;根据核销积点数和积点获取数,对积点信息进行溯源。
具体的,若所述核销积点数大于所述积点获取数,更新溯源信息,并移除所述积点信息,根据核销积点数与所述积点获取数的差值,对所述积点信息的下一积点信息进行溯源;如果核销积点数与所述积点获取数的差值仍大于下一个积点信息的积点获取数,那么以此类推继续计算差值并溯源再下一个积点信息。若所述核销积点数等于所述积点获取数,更新溯源信息,并移除所述积点信息;若所述核销积点数小于所述积点获取数,更新溯源信息,并将所述积点获取数与所述核销积点数的差值作为所述积点信息中更新后的积点获取数。
下面结合附图对基于哈希表的积点信息溯源过程进行详细说明。
本申请提供一种用于商业积分溯源方法。首先,围绕应用模块、清理模块和存储模块,以“用户+时间戳”为次序索引,基于日志结构合并树将数据顺序刷入磁盘,减少后续建立磁盘哈希索引的复杂程度。其次,依据哈希模块和溯源模块,以常数级时间开销实现对单笔交易的积分溯源。提供一种基于哈希表的数据结构。键值对的键为某用户id通过哈希函数映射到[0,N-1]的整数,值为若干积点队列构成的一条链表,其中第一区块的队列中包含完整的积点信息,非第一区块仅包含哈希磁盘索引信息,以节约内存空间。依据“先进先出”(FIFO)原则对用户核销的积点进行溯源。通过哈希表快速定位到存储积点信息且由若干区块构成的链表。首先从第一区块中获取队首元素信息,若第一区块队列已空,则根据第二区块的磁盘索引信息更新队列内容和链表指针。并依据这一思想,提供具体操作的算法流程。
图2为本申请提供的基于哈希表的积点信息溯源***流程图。为实现基于哈希表的溯源方法,需要首先优化积点流水数据的更新与存储方式,将数据批量顺序刷入磁盘,如图2步骤1至步骤5所示。
具体的,在应用模块中,用户使用App消费或申请退款时,被核销或退回的积点通过数据接口,向服务器提交积点流水更新请求。内存指内存储器,用于存放CPU执行运算所需数据和输出结果。在服务器接收到积点数据更新请求后,待写入数据暂存储于内存之中。磁盘指硬磁盘,由多张涂有磁性物质的盘片叠加组成,用于存储二进制表示的积点流水数据,断电后能保持数据不丢失。清理模块是指在执行刷盘操作时,以“用户+时间戳”为次序索引,通过日志结构合并树的方式汇总待写入数据,基于“递延、批量、顺序”的原则写入数据,增加写入速度,并避免文件碎片的产生。同时,清理模块定期维护磁盘数据,合并磁盘中的顺序文件,使区间积点数据依“用户”和“时间”排列于磁盘介质中,降低读取操作的寻道时间,减少后续建立磁盘哈希索引的复杂程度。
积点溯源***的具体流程步骤如图2步骤6至步骤13所示。
具体的,根据消费流水数据表,服务器依时间次序,对不同用户的积点溯源请求进行批量处理。哈希模块用于构建哈希表。以甲用户为例,首先,通过一定方式,如循环移位哈希计算甲用户的哈希码,将用户id映射为一个整数,哈希码集合应尽可能回避冲突。其次,通过压缩函数,如MAD方法将哈希码映射到[0,N-1]的区间上,压缩函数应尽量使哈希码的冲突数量达到最小。构建哈希表的目的是维护一种快速寻址的数据结构,避免溯源时的重复计算或对磁盘的反复读取。溯源模块用于更新某消费记录的积点溯源信息。仍以甲用户为例,键值对的键为甲用户通过哈希函数映射到[0,N-1]的整数,值为若干积点队列构成的一条链表,其中队列1包含完整的积点信息,后续队列仅包含哈希磁盘索引信息,以节约内存空间。在用户消费的核销积点溯源中,从队列1依次取列首元素,依先进先出原则进行溯源;若队列1已空,则依据队列2的磁盘哈希索引更新积点信息,并更新链表指针。
图3为本申请提供的哈希表的构建过程举例示意图。如图3所示,设哈希表的容量N=6,即哈希表包含6个桶,用户数量n=3,分别为用户甲、乙和丙,队列容量M=4,即一个区块存放4个积点信息,或4个积点信息对应的磁盘哈希索引。甲有10条积点获取记录,乙无积点获取记录,丙有2条积点获取记录。需要说明的是,若发生哈希冲突,如编号为0的桶,则通过分离链表的方式处理。
键值对的值是由若干积点队列构成的一条链表,由第一区块和若干非第一区块组成。第一区块中存储积点队列前若干条具体信息和对应的磁盘哈希索引,非第一区块仅存储磁盘哈希索引。积点的具体信息如下表所示:
Figure BDA0004006396670000121
图4为本申请提供的积点溯源算法流程图。算法流程具体如下:
1、开始。
2、读取需要溯源的数据集,初始化i=0,即从首条记录开始溯源。
3、读取第i条记录,包括用户id、用户核销的积点数Use_num。初始化本条记录的溯源信息Dict。
4、通过哈希函数hash(),计算第i条记录用户id的哈希函数值,并从哈希表中读取用户id对应的二级容器中的链表。
5、读取链表中的第一区块。若第一区块的队列已空,则根据第二区块的磁盘哈希索引读取积点具体信息,并生成先进先出队列,同时更新链表指针,将第二区块作为第一区块。
6、从第一区块的先进先出队列中返回队首元素,包含如下信息:积点获取数Get_num、积点获取时间Time、活动编号Campid、获取途径Way。如返回失败(队列已空),则返回第5步操作。
7、比较用户核销积点数Use_num和积点获取数Get_num,若Use_num>Get_num,则更新溯源信息Dict,移除第一区块先进先出队列的队首元素,并返回第6步操作。
8、若Use_num等于Get_num,则更新溯源信息Dict,移除第一区块先进先出队列的队首元素。
9、若Use_num<Get_num,则更新溯源信息Dict,更新第一区块先进先出队列的队首元素,使新数值=Get_num–Use_num。
10、i的数值增加1,表明准备溯源下一条记录。判断是否完成溯源,如否,则返回第3步。
11、结束。
本申请通过一种基于哈希表的商业积分溯源方法,通过优化数据刷盘流程,通过哈希表和先进先出队列等数据结构,以常数级时间开销实现对单笔交易的积分溯源。实现技术效果如下:
1、针对用户的每笔消费交易数据,若涉及核销积点,则对积点进行溯源。核销积点可能由用户在前期领取的多笔积点组成,领取时间和领取方式往往不同。溯源内容包括多笔积点的领取时间、领取方式、活动ID。
2、单笔交易的积点溯源时间开销为常数级,期望值为O(1),最坏为O(n),溯源时间快,对硬件设施要求较低。
3、无需申请额外的磁盘存储空间,且不构成对原有数据集的破坏。
图5为本申请提供的基于哈希表的积点信息溯源装置结构示意图,该装置包括:
存储模块51,用于当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘;
确定模块52,用于当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表;
溯源模块53,用于按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
所述存储模块51,具体用于在应用模块中,接收到消费或申请退款的交易信息时,将所述交易信息对应的积点信息暂存入内存中;所述内存中的清理模块按照交易用户和交易时间作为次序索引将暂存的积点信息顺序写入磁盘中。
所述确定模块52,具体用于通过哈希算法将所述积点溯源请求对应的用户标识映射为对应的哈希码;通过压缩函数将所述哈希码映射到设定范围区间,得到所述用户标识对应的哈希值。
所述确定模块52,还用于配置哈希表桶的数量,并建立每个桶分别与用户的对应关系;针对每个用户,通过键值对的形式建立所述用户与积点信息链表的对应关系;其中,所述积点信息链表中包括第一个区块和非第一个区块;每个区块配置积点信息容量,所述第一个区块中包括所述容量个积点信息,所述非第一个区块中包括磁盘哈希索引。
所述溯源模块53,还用于若所述第一个区块已空,更新所述积点信息链表的链表指针,将与所述第一个区块相邻的非第一个区块更新为第一个区块。
所述溯源模块53,具体用于获取所述积点溯源请求中携带的核销积点数,以及当前溯源的积点信息中的积点获取数;根据所述核销积点数和积点获取数,对积点信息进行溯源。
所述溯源模块53,具体用于若所述核销积点数大于所述积点获取数,更新溯源信息,并移除所述积点信息,根据核销积点数与所述积点获取数的差值,对所述积点信息的下一积点信息进行溯源;若所述核销积点数等于所述积点获取数,更新溯源信息,并移除所述积点信息;若所述核销积点数小于所述积点获取数,更新溯源信息,并将所述积点获取数与所述核销积点数的差值作为所述积点信息中更新后的积点获取数。
本申请还提供了一种电子设备,如图6所示,包括:处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信;
所述存储器303中存储有计算机程序,当所述程序被所述处理器301执行时,使得所述处理器301执行以上任一方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口302用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
本申请还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行时实现以上任一方法步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (16)

1.一种基于哈希表的积点信息溯源方法,其特征在于,所述方法包括:
当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘;
当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表;
按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
2.如权利要求1所述的方法,其特征在于,所述当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘包括:
在应用模块中,接收到消费或申请退款的交易信息时,将所述交易信息对应的积点信息暂存入内存中;
所述内存中的清理模块按照交易用户和交易时间作为次序索引将暂存的积点信息顺序写入磁盘中。
3.如权利要求1所述的方法,其特征在于,所述将所述积点溯源请求对应的用户标识映射为对应的哈希值包括:
通过哈希算法将所述积点溯源请求对应的用户标识映射为对应的哈希码;
通过压缩函数将所述哈希码映射到设定范围区间,得到所述用户标识对应的哈希值。
4.如权利要求1所述的方法,其特征在于,包括:
配置哈希表桶的数量,并建立每个桶分别与用户的对应关系;针对每个用户,通过键值对的形式建立所述用户与积点信息链表的对应关系;
其中,所述积点信息链表中包括第一个区块和非第一个区块;每个区块配置积点信息容量,所述第一个区块中包括所述容量个积点信息,所述非第一个区块中包括磁盘哈希索引。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一个区块已空,更新所述积点信息链表的链表指针,将与所述第一个区块相邻的非第一个区块更新为第一个区块。
6.如权利要求1所述的方法,其特征在于,包括:
获取所述积点溯源请求中携带的核销积点数,以及当前溯源的积点信息中的积点获取数;根据所述核销积点数和积点获取数,对积点信息进行溯源。
7.如权利要求6所述的方法,其特征在于,所述根据所述核销积点数和积点获取数,对积点信息进行溯源包括:
若所述核销积点数大于所述积点获取数,更新溯源信息,并移除所述积点信息,根据核销积点数与所述积点获取数的差值,对所述积点信息的下一积点信息进行溯源;
若所述核销积点数等于所述积点获取数,更新溯源信息,并移除所述积点信息;
若所述核销积点数小于所述积点获取数,更新溯源信息,并将所述积点获取数与所述核销积点数的差值作为所述积点信息中更新后的积点获取数。
8.一种基于哈希表的积点信息溯源装置,其特征在于,所述装置包括:
存储模块,用于当接收到消费或申请退款的交易信息,按照交易用户和交易时间作为次序索引将所述交易信息产生的积点信息存储至磁盘;
确定模块,用于当接收到积点溯源请求时,将所述积点溯源请求对应的用户标识映射为对应的哈希值,根据所述哈希值确定在内存中预先配置的哈希表中所述用户对应的积点信息链表;
溯源模块,用于按照先进先出原则对所述积点信息链表的第一个区块中的积点信息进行溯源,若所述第一个区块已空,根据非第一个区块中的磁盘哈希索引,将所述磁盘中与所述磁盘哈希索引对应的积点信息写入所述非第一个区块,并按照先进先出原则对所述非第一个区块中的积点信息进行溯源。
9.如权利要求8所述的装置,其特征在于,所述存储模块,具体用于在应用模块中,接收到消费或申请退款的交易信息时,将所述交易信息对应的积点信息暂存入内存中;所述内存中的清理模块按照交易用户和交易时间作为次序索引将暂存的积点信息顺序写入磁盘中。
10.如权利要求8所述的装置,其特征在于,所述确定模块,具体用于通过哈希算法将所述积点溯源请求对应的用户标识映射为对应的哈希码;通过压缩函数将所述哈希码映射到设定范围区间,得到所述用户标识对应的哈希值。
11.如权利要求8所述的装置,其特征在于,所述确定模块,还用于配置哈希表桶的数量,并建立每个桶分别与用户的对应关系;针对每个用户,通过键值对的形式建立所述用户与积点信息链表的对应关系;其中,所述积点信息链表中包括第一个区块和非第一个区块;每个区块配置积点信息容量,所述第一个区块中包括所述容量个积点信息,所述非第一个区块中包括磁盘哈希索引。
12.如权利要求8所述的装置,其特征在于,所述溯源模块,还用于若所述第一个区块已空,更新所述积点信息链表的链表指针,将与所述第一个区块相邻的非第一个区块更新为第一个区块。
13.如权利要求8所述的装置,其特征在于,所述溯源模块,具体用于获取所述积点溯源请求中携带的核销积点数,以及当前溯源的积点信息中的积点获取数;根据所述核销积点数和积点获取数,对积点信息进行溯源。
14.如权利要求13所述的装置,其特征在于,所述溯源模块,具体用于若所述核销积点数大于所述积点获取数,更新溯源信息,并移除所述积点信息,根据核销积点数与所述积点获取数的差值,对所述积点信息的下一积点信息进行溯源;若所述核销积点数等于所述积点获取数,更新溯源信息,并移除所述积点信息;若所述核销积点数小于所述积点获取数,更新溯源信息,并将所述积点获取数与所述核销积点数的差值作为所述积点信息中更新后的积点获取数。
15.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一项所述的方法步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法步骤。
CN202211633694.3A 2022-12-19 2022-12-19 一种基于哈希表的积点信息溯源方法、装置、设备及介质 Pending CN115858533A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211633694.3A CN115858533A (zh) 2022-12-19 2022-12-19 一种基于哈希表的积点信息溯源方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211633694.3A CN115858533A (zh) 2022-12-19 2022-12-19 一种基于哈希表的积点信息溯源方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115858533A true CN115858533A (zh) 2023-03-28

Family

ID=85674176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211633694.3A Pending CN115858533A (zh) 2022-12-19 2022-12-19 一种基于哈希表的积点信息溯源方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115858533A (zh)

Similar Documents

Publication Publication Date Title
US11853549B2 (en) Index storage in shingled magnetic recording (SMR) storage system with non-shingled region
CN111159436B (zh) 一种推荐多媒体内容的方法、装置及计算设备
CN111444196B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
US10817383B2 (en) Method, apparatus and computer program product for managing data backup
CN111444192B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
US10169085B2 (en) Distributed computing of a task utilizing a copy of an original file stored on a recovery site and based on file modification times
US11947842B2 (en) Method for writing data in append mode, device and storage medium
CN102479245A (zh) 数据区块的切分方法
CN109918352B (zh) 存储器***和存储数据的方法
CN113946552A (zh) 数据处理方法及电子装置
CN111400056A (zh) 基于消息队列的消息传输方法、装置及设备
CN111506580A (zh) 一种基于中心化块链式账本的交易存储方法
US12045173B2 (en) Stale data recovery using virtual storage metadata
WO2021137768A1 (en) Method, apparatus and device for consuming messages based on message queue
US11341159B2 (en) In-stream data load in a replication environment
CN115858533A (zh) 一种基于哈希表的积点信息溯源方法、装置、设备及介质
CN111694801A (zh) 一种应用于故障恢复的数据去重方法和装置
CN109408496A (zh) 一种减少数据冗余的方法及装置
CN115695587A (zh) 一种业务数据处理***、方法、装置和存储介质
US20220027335A1 (en) Active-active system index management
CN111625500A (zh) 文件快照方法及装置、电子设备和存储介质
CN111090633A (zh) 一种分布式文件***的小文件聚合方法、装置及设备
CN111435342A (zh) 海报的更新方法、更新***以及管理***
US11916807B2 (en) Evaluation framework for cloud resource optimization
US20230089018A1 (en) Method or apparatus to integrate physical file verification and garbage collection (gc) by tracking special segments

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