CN112214521A - 规则查询方法、装置、设备及计算机存储介质 - Google Patents
规则查询方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112214521A CN112214521A CN202011313647.1A CN202011313647A CN112214521A CN 112214521 A CN112214521 A CN 112214521A CN 202011313647 A CN202011313647 A CN 202011313647A CN 112214521 A CN112214521 A CN 112214521A
- Authority
- CN
- China
- Prior art keywords
- rule
- rule table
- version number
- preset
- dimension
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000003860 storage Methods 0.000 title claims description 23
- 238000010200 validation analysis Methods 0.000 claims description 60
- 238000012986 modification Methods 0.000 claims description 52
- 230000004048 modification Effects 0.000 claims description 52
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- 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/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Computational Linguistics (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及金融科技(Fintech)技术领域,公开了一种规则查询方法,该方法包括:接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。本发明无需逐行遍历规则表,减少了查询规则时所需要的时间,从而提升了规则查询的效率。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及规则查询方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
目前,由于互联网业务和数据的快速发展,各个商家针对不同业务场景不同维度推出了不同的处理规则,导致处理规则的数量巨大,当某一用户在商家进行消费时,商家需要在海量的处理规则表数据中查找到与该用户对应的处理规则,往往需要逐行遍历处理规则表,以确定用户的条件是否与处理规则表中的某一规则的享受条件相符合,这种方式需要耗费大量的时间,查询效率较低,在数据量过大的时候常常会导致查询超时。
发明内容
本发明的主要目的在于提出一种规则查询方法、装置、设备及计算机存储介质,旨在解决规则查询效率低的技术问题。
为实现上述目的,本发明提供一种规则查询方法,所述规则查询方法包括如下步骤:
接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;
获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;
确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
可选地,所述获取预设规则表对应的位图索引的步骤包括:
获取所述预设规则表中所有规则的条数,根据所述所有规则的条数确定位图向量串长度;
根据所述位图向量串长度为所述预设规则表中每个维度的每一种维度值建立对应的位图向量串,所述位图向量串中一比特位的取值为第一预设值或者第二预设值;
将各个所述维度的每一种维度值的位图向量串,与对应的维度和维度值,关联组成所述预设规则表对应的位图索引。
可选地,所述获取预设规则表对应的位图索引的步骤之前,还包括:
获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号;
若所述第一版本号与第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
将所述本地缓存中的第一版本号对应的第一生效规则表作为所述预设规则表。
可选地,所述获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号的步骤之后,还包括:
若所述第一版本号与第二版本号不同,确定所述第一版本号是否为预设修改版本号;
若所述第一版本号不为预设修改版本号,则执行步骤:将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
若所述第一版本号为预设修改版本号,执行对所述预设规则数据库中的第一生效规则表的修改指令,在对所述第一生效规则表修改完成得到第三生效规则表时,将所述预设规则数据库中的生效规则表的版本号更新为第三版本号;
若第三版本号与所述第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第三效规则表,并对应将本地缓存中的生效规则表的版本号更新为第三版本号。
可选地,所述执行对所述预设规则数据库中的第一生效规则表的修改指令的步骤包括:
将所述预设规则数据库中的第一生效规则表及对应的第一版本号存储至归档表中,并根据修改指令将所述预设规则数据库中的第一生效规则表修改为第三生效规则表。
可选地,所述将所述预设规则数据库中的第一生效规则表及对应的第一版本号存储至归档表中,并根据修改指令将所述预设规则数据库中的第一生效规则表修改为第三生效规则表的步骤之后,还包括:
在接收到对预设规则数据库中的第三生效规则表进行版本回滚的回滚指令时,从所述归档表中获取所述第一生效规则表及对应的第一版本号;
将所述预设规则数据库中的第三生效规则表替换为所述第一生效规则表,并将所述预设规则数据库中的生效规则表的版本号置为所述第一版本号。
可选地,所述规则查询方法,还包括:
在根据所述修改指令控制修改线程对所述预设规则数据库中的第一生效规则表进行修改时,若接收到读取所述预设规则数据库中的第一生效规则表的读取指令,则通过读取线程确定所述第一生效规则表是否被易变型变量volatile修饰;
若是,则控制所述读取线程在所述修改线程对所述第一生效规则表的修改完成后,读取所述第一生效规则表。
此外,为实现上述目的,本发明还提供一种规则查询装置,所述规则查询装置包括:
指令接收模块,用于接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;
向量确定模块,用于获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;
结果确定模块,用于确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
此外,为实现上述目的,本发明还提供一种规则查询设备,所述规则查询设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的规则查询程序,所述规则查询程序被所述处理器执行时实现如上所述的规则查询方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有规则查询程序,所述规则查询程序被处理器执行时实现如上所述的规则查询方法的步骤。
本发明通过接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
通过将预设规则表整体转换为对应的位图索引,并根据位图索引中与待查询维度和待查询维度值对应的位图向量串中的第一预设值的位置,将该位置在预设规则表中对应的目标规则确定为查询到的规则,无需逐行遍历规则表,减少了查询规则时所需要的时间,从而提升了规则查询的效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的规则查询设备结构示意图;
图2为本发明规则查询方法第一实施例的流程示意图;
图3为本发明规则查询方法中预设规则表的示意图;
图4为本发明规则查询方法中预设规则表的行存储模式示意图;
图5为本发明规则查询装置的装置模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的规则查询设备结构示意图。
本发明实施例规则查询设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该规则查询设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的规则查询设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及规则查询程序。
在图1所示的规则查询设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的规则查询程序,并执行下述规则查询方法中的操作。
基于上述硬件结构,提出本发明规则查询方法实施例。
参照图2,图2为本发明规则查询方法第一实施例的流程示意图,所述方法包括:
步骤S10,接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;
本实施例数据传输方法运用于规则查询设备中,规则查询设备可以是终端、机器人或者PC设备。
在现有技术中,由于互联网业务和数据的快速发展,各个商家针对不同业务场景不同维度推出了不同的处理规则,导致处理规则的数量巨大,当某一用户在商家进行消费时,商家需要在海量的处理规则表数据中查找到与该用户对应的处理规则,往往需要逐行遍历处理规则表,以确定用户的条件是否与处理规则表中的某一规则的享受条件相符合,这种方式需要耗费大量的时间,查询效率较低,在数据量过大的时候常常会导致查询超时。
在此背景下,本实施例通过将预设规则表整体转换为对应的位图索引,并根据位图索引中与待查询维度和待查询维度值对应的位图向量串中的第一预设值的位置,确定在预设规则表中对应的目标规则确定为查询到的规则,无需逐行遍历规则表,减少了查询规则时所需要的时间,从而提升了规则查询的效率。
在本实施例中,规则查询指令指的是根据查询条件,查询其在预设规则表中所命中的规则的指令。其中,查询条件指的是包含在规则查询指令中的待查询维度和各个待查询维度对应的维度值。在交易优惠场景下,前述规则可以是优惠规则,对应的,预设规则表可以为优惠规则表,优惠规则表中的维度可以为商户ID、渠道ID、门店ID、客户等级、商品品类等,查询条件一般是根据用户的交易情况确定的,故而根据查询条件所获取到的优惠规则是与用户的交易情况相符合的,进而可根据获取到的优惠规则对用户的交易进行相应的优惠。当然,在其他应用场景下,也可以设置对应的规则。
步骤S20,获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;
预设规则表是管理人员根据需要预先设置的,参照图3,图3为预设规则表的示意图,在预设规则表中存储了大量的规则,以及与每一规则对应的维度和维度值,每一条规则的使用条件是规则查询指令中的待查询维度和对应的待查询维度值,与该条规则对应的维度及对应的维度值一致。
需要说明的是,决定规则的维度可能包括多个,而且随着业务需求不断的变化,维度也可能在不断的新增,若以传统的行存储(Row-based storage)方式来存储预设规则表,会导致在预设规则表中新增规则和维度时需要调整开发底层数据结构,如果每次新增一个维度都需要重新开发,则很难快速响应个性化的业务需求。
针对这种情况,本实施例中的预设规则表是以列存储(Column-based Storage)模式存储的,列存储模式下,同列的数据不仅具有相同的数据结构,而且数据的重复性机率也将更大,因此这一存储结构适合于对数据进行压缩,从而减少中央处理器(CentralProcessing Unit,CPU)的消耗和存储空间。同时,在进行查询时,只需读取与查询相关的列即可,而不需要把数据库的整条记录的数据都加载到内存中,从而大大减少了磁盘和网络输入/输出(Input/Output,I/O)端口的负载。另外,列存储模式能够支持管理人员根据业务需求在预设规则表中无限新增维度,而无需调整底层数据结构。
在本实施例中,在获取到待查询维度和对应的待查询维度值之后,获取与预设规则表对应的位图索引,该位图索引是基于预设规则表生成的,其实际为各个维度的每一种维度值的位图向量串与与对应的维度和维度值的关联关系。因此在获取到位图索引后,即可根据待查询维度和对应的待查询维度值,从该位图索引中获取对应的目标位图向量串。
上述步骤S20中,所述获取预设规则表对应的位图索引的步骤,具体包括:
步骤a1,获取所述预设规则表中所有规则的条数,根据所述所有规则的条数确定位图向量串长度;
在本实施例中,需要说明的是,由于预设规则表是以如图3所示的列存储模式存储的,该模式虽然有利于维度的新增,但是在转换为位图索引时,若仍然使用以列模式存储的规则表,将会使得位图索引的转换过程变得极为复杂,直观性也不够高,因此,在生成预设规则表对应的位图索引时,需要先将列存储模式的规则表转换为行存储模式的规则表,可参照图4,图4为将图3所示的列模式存储的规则表进行转换之后得到的行模式存储的规则表,在该模式下,可以直观的看到每一个(列)维度下,各条规则在该维度下的维度值。
再根据预设规则表中所有规则的条数确定位图向量串长度,其中,预设规则表中所有规则的条数等于位图向量串长度,参见图3或4,预设规则表中所有规则的条数为4条,则位图向量串长度也为4个比特位(bit)。
步骤a2,根据所述位图向量串长度为所述预设规则表中每个维度的每一种维度值建立对应的位图向量串,所述位图向量串中一比特位的取值为第一预设值或者第二预设值;
步骤a3,将各个所述维度的每一种维度值的位图向量串,与对应的维度和维度值,关联组成所述预设规则表对应的位图索引。
进而确定行存储模式的预设规则表中的每一个维度的维度值各有多少种,例如,参见图4,其中“*”指的是对于图3中未进行维度值设置的维度所设置的默认值,例如,在图3中规则1并未对02维度和03维度进行设置,因此在转换为行模式时,可将规则1在02维度和03维度的取值设置为“*”。在01维度这一列中,可取的维度值只有“2”一种,在02维度这一列中,可取的维度值有“02”和“*”两种,在03维度这一列中,可取的维度值有“*”、“5”和“6”三种。
在确定每个维度的可取的维度值后,即可生成每个维度的可取的维度值对应的位图向量串,位图向量串的每个比特位上的数值表示该位图向量串对应的维度的维度值在对应规则中的有无,若有,则该比特位取第一预设值,若无,则该比特位取第二预设值,第一预设值可为1,第二预设值可为0。例如,参见图4,在01维度这一列中,维度值“2”对应的位图向量串为1111;在02维度这一列中,维度值“*”对应的位图向量串为1001,维度值“02”对应的位图向量串为0110;在03维度这一列中,维度值“*”对应的位图向量串为1100,维度值“5”对应的位图向量串为0010,维度值“6”对应的位图向量串为0001。
在生成各个维度的每一种维度值的位图向量串后,将其与对应的维度和维度值相关联,即可得到预设规则表对应的位图索引。
进一步地,上述步骤S20中,所述根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串的步骤,还包括:
若待查询维度大于或者等于2,则获取各个待查询维度和对应的待查询维度值对应的第一位图向量串;将各个第一位图向量串求交集,得到目标位图向量串。
在本实施例中,考虑到查询条件通常并不仅限于一个维度,可能存在查询条件为多个维度的情况,此时根据查询指令查询得到的位图向量串也对应有多个,将根据查询指令查询得到的位图向量串取交集,得到目标位图向量串。例如,参见图4,若一待查询维度为02维度,对应的维度值为02,查的位图向量串为0110,另一待查询维度为03维度,对应的维度值为6,查的位图向量串为0010,将两个位图向量串取交集0110∩0010=0010,即目标位图向量串为0010。
步骤S30,确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
在得到目标位图向量串之后,确定第一预设值在目标位图向量串中的位置,再根据该位置将预设规则表中的对应条数的规则确定为目标规则,并将该目标规则作为查询结果输出。例如,参照图4,若待查询维度为03维度,对应的待查询维度值为“6”,则根据待查询维度和待查询维度值查询得到的目标位图向量串为0001,第一预设值1在目标位图向量串中的位置为4,则对应的,将预设规则表中的第4条规则,即规则ID为4的规则确定为目标规则。
在本实施例中,通过接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
通过将预设规则表整体转换为对应的位图索引,并根据位图索引中与待查询维度和待查询维度值对应的位图向量串中的第一预设值的位置,将该位置在预设规则表中对应的目标规则确定为查询到的规则,无需逐行遍历规则表,减少了查询规则时所需要的时间,从而提升了规则查询的效率。
进一步地,基于本发明规则查询方法第一实施例,提出本发明规则查询方法第二实施例。
在本发明第一实施例的步骤S20中,所述获取预设规则表对应的位图索引的步骤之前,还包括:
步骤b1,获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号;
步骤b2,若所述第一版本号与第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
步骤b3,将所述本地缓存中的第一版本号对应的第一生效规则表作为所述预设规则表。
在本实施例中,在规则查询设备的本地缓存中和预设规则数据库中各存储有一份当前正在生效的规则表,管理人员能够根据业务需求修改数据库中的规则表,并在修改后对应更新数据库中的规则表的版本号,再根据数据库中规则表的更新情况对应更新本地缓存中的规则表和版本号。
其中,在预设规则数据库中存储有第一生效规则表,对应的版本号为第一版本号,在规则查询设备的本地缓存中存储有第二生效规则表,对应的版本号为第二版本号。
规则查询设备在获取预设规则表对应的位图索引之前,首先要在本地缓存中获取正在生效的规则表,为避免本地缓存中正在生效的规则表与数据库中正在生效的规则表不一致的情况,本实施例会对二者的一致性进行确认,具体为,获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号。将第一版本号与第二版本号进行比较,确认二者是否相同;若二者相同,说明本地缓存中正在生效的规则表已经是最新修改后的规则表了,因此,可以将本地缓存中的第二生效规则表作为所述预设规则表;但若二者不相同,说明预设规则数据库中的规则表可能发生了更新,但本地缓存中的规则表尚未同步进行更新,因此,需要将本地缓存中的第二生效规则表更新为预设规则数据库中的第一生效规则表,并对应更新版本号,再将本地缓存中的第一生效规则表作为所述预设规则表。
进一步地,考虑到在管理人员对数据库中的规则表进行修改是需要一段过程的,在这个修改过程中,数据库中的规则表尚未修改完成,则可将该过程中的规则的版本号置为预设修改版本号,以使本地缓存在需要确认本地缓存中正在生效的规则表与数据库中正在生效的规则表的一致性的时候,若获取到的据库中的第一生效规则表的版本号为预设修改版本号,提示本地缓存,数据库中的规则表正在修改中,并使本地缓存执行相应的操作。
具体的,在上述步骤b1,所述获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号的步骤之后,还包括:
步骤c1,若所述第一版本号与第二版本号不同,确定所述第一版本号是否为预设修改版本号;
若所述第一版本号不为预设修改版本号,则执行步骤:将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
在本实施例中,若第一版本号与第二版本号不同,则规则查询设备进一步确定第一版本号是否为预设修改版本号,若不是,说明数据库中的规则表发生了修改,且修改已完成,则可将本地缓存中的第二生效规则表更新为预设规则数据库中的第一生效规则表,并对应更新版本号,再将本地缓存中的第一生效规则表作为所述预设规则表。
步骤c2,若所述第一版本号为预设修改版本号,执行对所述预设规则数据库中的第一生效规则表的修改指令,在对所述第一生效规则表修改完成得到第三生效规则表时,将所述预设规则数据库中的生效规则表的版本号更新为第三版本号;
步骤c3,若第三版本号与所述第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第三效规则表,并对应将本地缓存中的生效规则表的版本号更新为第三版本号。
在本实施例中,若确定第一版本号为预设修改版本号,说明数据库中的规则表正在修改中,规则查询设备根据修改指令对预设规则数据库中的第一生效规则表进行修改,并在修改完成得到第三生效规则表和第三版本号后,将第三版本号与第二版本号进行比较,确认二者是否相同;若不同,则将本地缓存中的第二生效规则表更新为预设规则数据库中的第三效规则表,并对应将本地缓存中的生效规则表的版本号更新为第三版本号;若二者相同,则不对本地缓存中的生效规则表和版本号进行更新。
进一步地,上述步骤b1之后还可以包括,若第一版本号不为预设修改版本号,且第一版本号为预设修改版本号,可以直接将本地缓存中的第二生效规则表作为所述预设规则表,以避免等待数据库中规则表的修改完成再进行规则表更新,可能造成的长时间等待的问题。
进一步地,本地缓存可以在后台按照预设频率自动确定本地缓存中的生效规则的版本号与数据库中的规则表的版本号是否一致,若不一致则自动更新本地缓存中的生效规则及版本号。其中,预设频率可选为50~150ms中的任意值。
在本实施例中,通过在获取预设规则表时,将本地缓存中的版本号与数据库中的版本号进行比较,根据二者是否一致,执行相应的规则表更新操作,以保证获取到的预设规则表是最新更新的,且能够保证在本地缓存中正在生效的规则表与数据库中正在生效的规则表的一致性。
进一步地,上述步骤c2中,所述执行对所述预设规则数据库中的第一生效规则表的修改指令的步骤,具体包括:
步骤d1,将所述预设规则数据库中的第一生效规则表及对应的第一版本号存储至归档表中,并根据修改指令将所述预设规则数据库中的第一生效规则表修改为第三生效规则表。
在本实施例中,每次在根据修改指令对预设规则数据库中的生效规则表进行修改时,都会将预设规则数据库中当前正在生效的规则表及其版本号保存至归档表中,该归档表用于存储预设规则数据库中更新过的各个历史版本的规则表,以便管理人员查询历史版本的规则表或者进行版本回滚操作。
进一步地,在上述步骤d1之后,还可以包括:
步骤f1,在接收到对预设规则数据库中的第三生效规则表进行版本回滚的回滚指令时,从所述归档表中获取所述第一生效规则表及对应的第一版本号;
步骤f2,将所述预设规则数据库中的生效规则表设置为所述第一生效规则表,并将所述预设规则数据库中的生效规则表的版本号置为所述第一版本号。
在本实施例中,在接收到对预设规则数据库中的当前生效规则表,即第三生效规则表,进行版本回滚的回滚指令时,从归档表中获取第三生效规则表的上一历史版本的规则表,即第一生效规则表以及版本号,将预设规则数据库中的当前生效规则表替换为第一生效规则表,并对应替换版本号。
进一步地,上述规则查询方法还包括:
在根据所述修改指令控制修改线程对所述预设规则数据库中的第一生效规则表进行修改时,若接收到读取所述预设规则数据库中的第一生效规则表的读取指令,则通过读取线程确定所述第一生效规则表是否被易变型变量volatile修饰;
若是,则控制所述读取线程在所述修改线程对所述第一生效规则表的修改完成后,读取所述第一生效规则表。
在本实施例中,在对预设规则数据库中的第一生效规则表进行修改是通过修改线程来实现,在修改线程执行修改指令时,可以通过易变型变量(volatile)对修改线程的修改对象,即第一生效规则表进行修饰,以使其他需要对读取该修改对象的读取线程等待,直至该修改线程完成对第一生效规则表的修改,读取线程才能读取该第一生效规则表。其中,volatile是一个特征修饰符(type specifier),其作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
在本实施例中,通过将修改中的第一生效规则表用volatile进行修饰,能够保证线程读取的安全性,避免高并发引起的性能问题。
本发明还提供一种规则查询装置,参照图5,所述规则查询装置包括:
指令接收模块10,用于接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;
向量确定模块20,用于获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;
结果确定模块30,用于确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
可选地,所述向量确定模块,还用于:
获取所述预设规则表中所有规则的条数,根据所述所有规则的条数确定位图向量串长度;
根据所述位图向量串长度为所述预设规则表中每个维度的每一种维度值建立对应的位图向量串,所述位图向量串中一比特位的取值为第一预设值或者第二预设值;
将各个所述维度的每一种维度值的位图向量串,与对应的维度和维度值,关联组成所述预设规则表对应的位图索引。
可选地,所述向量确定模块,还用于:
获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号;
若所述第一版本号与第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
将所述本地缓存中的第一版本号对应的第一生效规则表作为所述预设规则表。
可选地,所述向量确定模块,还用于:
若所述第一版本号与第二版本号不同,确定所述第一版本号是否为预设修改版本号;
若所述第一版本号不为预设修改版本号,则执行步骤:将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
若所述第一版本号为预设修改版本号,执行对所述预设规则数据库中的第一生效规则表的修改指令,在对所述第一生效规则表修改完成得到第三生效规则表时,将所述预设规则数据库中的生效规则表的版本号更新为第三版本号;
若第三版本号与所述第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第三效规则表,并对应将本地缓存中的生效规则表的版本号更新为第三版本号。
可选地,所述向量确定模块,还用于:
将所述预设规则数据库中的第一生效规则表及对应的第一版本号存储至归档表中,并根据修改指令将所述预设规则数据库中的第一生效规则表修改为第三生效规则表。
可选地,所述向量确定模块,还用于:
在接收到对预设规则数据库中的第三生效规则表进行版本回滚的回滚指令时,从所述归档表中获取所述第一生效规则表及对应的第一版本号;
将所述预设规则数据库中的第三生效规则表替换为所述第一生效规则表,并将所述预设规则数据库中的生效规则表的版本号置为所述第一版本号。
可选地,所述规则查询装置,还包括:
修饰确定模块,用于在根据所述修改指令控制修改线程对所述预设规则数据库中的第一生效规则表进行修改时,若接收到读取所述预设规则数据库中的第一生效规则表的读取指令,则通过读取线程确定所述第一生效规则表是否被易变型变量volatile修饰;
读取模块,用于若是,则控制所述读取线程在所述修改线程对所述第一生效规则表的修改完成后,读取所述第一生效规则表。
上述各程序单元所执行的方法可参照本发明规则查询方法各个实施例,此处不再赘述。
本发明还提供一种规则查询设备,规则查询设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的规则查询程序,规则查询程序被处理器执行时所实现的方法可参照本发明规则查询方法各个实施例,此处不再赘述。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有规则查询程序,所述规则查询程序被处理器执行时实现如上所述的规则查询方法的步骤。
其中,在所述处理器上运行的规则查询程序被执行时所实现的方法可参照本发明规则查询方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种规则查询方法,其特征在于,所述规则查询方法包括如下步骤:
接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;
获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;
确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
2.如权利要求1所述的规则查询方法,其特征在于,所述获取预设规则表对应的位图索引的步骤包括:
获取所述预设规则表中所有规则的条数,根据所述所有规则的条数确定位图向量串长度;
根据所述位图向量串长度为所述预设规则表中每个维度的每一种维度值建立对应的位图向量串,所述位图向量串中一比特位的取值为第一预设值或者第二预设值;
将各个所述维度的每一种维度值的位图向量串,与对应的维度和维度值,关联组成所述预设规则表对应的位图索引。
3.如权利要求1所述的规则查询方法,其特征在于,所述获取预设规则表对应的位图索引的步骤之前,还包括:
获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号;
若所述第一版本号与第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
将所述本地缓存中的第一版本号对应的第一生效规则表作为所述预设规则表。
4.如权利要求3所述的规则查询方法,其特征在于,所述获取预设规则数据库中的第一生效规则表的第一版本号,以及本地缓存中的第二生效规则表的第二版本号的步骤之后,还包括:
若所述第一版本号与第二版本号不同,确定所述第一版本号是否为预设修改版本号;
若所述第一版本号不为预设修改版本号,则执行步骤:将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第一生效规则表,并对应将本地缓存中的当第一生效规则表的版本号更新为第一版本号;
若所述第一版本号为预设修改版本号,执行对所述预设规则数据库中的第一生效规则表的修改指令,在对所述第一生效规则表修改完成得到第三生效规则表时,将所述预设规则数据库中的生效规则表的版本号更新为第三版本号;
若第三版本号与所述第二版本号不同,则将所述本地缓存中的第二生效规则表更新为所述预设规则数据库中的第三效规则表,并对应将本地缓存中的生效规则表的版本号更新为第三版本号。
5.如权利要求4所述的规则查询方法,其特征在于,所述执行对所述预设规则数据库中的第一生效规则表的修改指令的步骤包括:
将所述预设规则数据库中的第一生效规则表及对应的第一版本号存储至归档表中,并根据修改指令将所述预设规则数据库中的第一生效规则表修改为第三生效规则表。
6.如权利要求5所述的规则查询方法,其特征在于,所述将所述预设规则数据库中的第一生效规则表及对应的第一版本号存储至归档表中,并根据修改指令将所述预设规则数据库中的第一生效规则表修改为第三生效规则表的步骤之后,还包括:
在接收到对预设规则数据库中的第三生效规则表进行版本回滚的回滚指令时,从所述归档表中获取所述第一生效规则表及对应的第一版本号;
将所述预设规则数据库中的第三生效规则表替换为所述第一生效规则表,并将所述预设规则数据库中的生效规则表的版本号置为所述第一版本号。
7.如权利要求4所述的规则查询方法,其特征在于,所述规则查询方法,还包括:
在根据所述修改指令控制修改线程对所述预设规则数据库中的第一生效规则表进行修改时,若接收到读取所述预设规则数据库中的第一生效规则表的读取指令,则通过读取线程确定所述第一生效规则表是否被易变型变量volatile修饰;
若是,则控制所述读取线程在所述修改线程对所述第一生效规则表的修改完成后,读取所述第一生效规则表。
8.一种规则查询装置,其特征在于,所述规则查询装置包括:
指令接收模块,用于接收规则查询指令,获取所述规则查询指令包含的待查询维度和对应的待查询维度值;
向量确定模块,用于获取预设规则表对应的位图索引,并根据所述待查询维度和对应的待查询维度值,从所述位图索引中确定目标位图向量串;
结果确定模块,用于确定第一预设值在所述目标位图向量串中的位置,将所述位置在所述预设规则表中对应的目标规则确定为查询结果。
9.一种规则查询设备,其特征在于,所述规则查询设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的规则查询程序,所述规则查询程序被所述处理器执行时实现如权利要求1至7中任一项所述的规则查询方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有规则查询程序,所述规则查询程序被处理器执行时实现如权利要求1至7中任一项所述的规则查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011313647.1A CN112214521A (zh) | 2020-11-20 | 2020-11-20 | 规则查询方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011313647.1A CN112214521A (zh) | 2020-11-20 | 2020-11-20 | 规则查询方法、装置、设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112214521A true CN112214521A (zh) | 2021-01-12 |
Family
ID=74067945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011313647.1A Pending CN112214521A (zh) | 2020-11-20 | 2020-11-20 | 规则查询方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214521A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113781089A (zh) * | 2021-02-10 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种订单信息处理方法和装置 |
CN113923002A (zh) * | 2021-09-29 | 2022-01-11 | 山石网科通信技术股份有限公司 | 计算机网络入侵防御方法、装置、存储介质及处理器 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246664A (zh) * | 2012-02-07 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 网页检索方法和装置 |
WO2015081780A1 (zh) * | 2013-12-06 | 2015-06-11 | 华为技术有限公司 | 列式数据库处理的方法和处理设备 |
WO2016174171A1 (en) * | 2015-04-30 | 2016-11-03 | Parstream Gmbh | Method and database computer system for performing a database query using a bitmap index |
CN106250523A (zh) * | 2016-08-04 | 2016-12-21 | 北京国电通网络技术有限公司 | 一种分布式列存储系统索引的方法 |
CN106682042A (zh) * | 2015-11-11 | 2017-05-17 | 杭州海康威视数字技术股份有限公司 | 一种关系数据缓存及查询方法及装置 |
CN107844313A (zh) * | 2017-11-24 | 2018-03-27 | 武汉斗鱼网络科技有限公司 | 一种Android中SDK版本升级方法及装置 |
CN108182209A (zh) * | 2017-12-18 | 2018-06-19 | 中国移动通信集团广东有限公司 | 一种数据索引方法、及设备 |
CN109086456A (zh) * | 2018-08-31 | 2018-12-25 | 中国联合网络通信集团有限公司 | 数据索引方法及装置 |
CN111400334A (zh) * | 2020-06-04 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及电子装置 |
CN111737264A (zh) * | 2020-07-20 | 2020-10-02 | 智者四海(北京)技术有限公司 | 信息处理方法及系统 |
-
2020
- 2020-11-20 CN CN202011313647.1A patent/CN112214521A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246664A (zh) * | 2012-02-07 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 网页检索方法和装置 |
WO2015081780A1 (zh) * | 2013-12-06 | 2015-06-11 | 华为技术有限公司 | 列式数据库处理的方法和处理设备 |
WO2016174171A1 (en) * | 2015-04-30 | 2016-11-03 | Parstream Gmbh | Method and database computer system for performing a database query using a bitmap index |
CN106682042A (zh) * | 2015-11-11 | 2017-05-17 | 杭州海康威视数字技术股份有限公司 | 一种关系数据缓存及查询方法及装置 |
CN106250523A (zh) * | 2016-08-04 | 2016-12-21 | 北京国电通网络技术有限公司 | 一种分布式列存储系统索引的方法 |
CN107844313A (zh) * | 2017-11-24 | 2018-03-27 | 武汉斗鱼网络科技有限公司 | 一种Android中SDK版本升级方法及装置 |
CN108182209A (zh) * | 2017-12-18 | 2018-06-19 | 中国移动通信集团广东有限公司 | 一种数据索引方法、及设备 |
CN109086456A (zh) * | 2018-08-31 | 2018-12-25 | 中国联合网络通信集团有限公司 | 数据索引方法及装置 |
CN111400334A (zh) * | 2020-06-04 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及电子装置 |
CN111737264A (zh) * | 2020-07-20 | 2020-10-02 | 智者四海(北京)技术有限公司 | 信息处理方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113781089A (zh) * | 2021-02-10 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种订单信息处理方法和装置 |
CN113923002A (zh) * | 2021-09-29 | 2022-01-11 | 山石网科通信技术股份有限公司 | 计算机网络入侵防御方法、装置、存储介质及处理器 |
CN113923002B (zh) * | 2021-09-29 | 2024-04-19 | 山石网科通信技术股份有限公司 | 计算机网络入侵防御方法、装置、存储介质及处理器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6832227B2 (en) | Database management program, a database managing method and an apparatus therefor | |
US9928113B2 (en) | Intelligent compiler for parallel graph processing | |
EP2924594B1 (en) | Data encoding and corresponding data structure in a column-store database | |
US7676453B2 (en) | Partial query caching | |
US7739269B2 (en) | Incremental repair of query plans | |
US9298774B2 (en) | Changing the compression level of query plans | |
CN112131218B (zh) | 一种基因对比的哈希查表方法、装置、设备及存储介质 | |
US11645281B1 (en) | Caching query plans in database systems | |
US20170371922A1 (en) | Database Management for Mobile Devices | |
CN112214521A (zh) | 规则查询方法、装置、设备及计算机存储介质 | |
EP2453368B1 (en) | Custom web services data link layer | |
US11537613B1 (en) | Merge small file consolidation | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN112860736A (zh) | 大数据查询优化方法、设备及可读存储介质 | |
CN111858366A (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN110413679B (zh) | 数据库信息处理方法、装置、设备及可读存储介质 | |
CN110858199A (zh) | 一种单据数据分布式计算的方法和装置 | |
CN110333883B (zh) | 一种更新持久化数据的方法及装置 | |
US9916373B2 (en) | Dynamic data partitioning extension | |
CN110222105B (zh) | 数据汇总处理方法及装置 | |
US11995080B1 (en) | Runtime join pruning to improve join performance for database tables | |
TWI699658B (zh) | 共享資料系統及共享資料方法 | |
CN106687999B (zh) | 产生实现被设计为更新根据应用数据模型指定的对象的规则的指令集 | |
CN117369774A (zh) | 流程编排方法、装置及电子设备 | |
CN117010358A (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 |