CN111930313B - 主机中数据关联访问的方法和装置 - Google Patents
主机中数据关联访问的方法和装置 Download PDFInfo
- Publication number
- CN111930313B CN111930313B CN202010808677.3A CN202010808677A CN111930313B CN 111930313 B CN111930313 B CN 111930313B CN 202010808677 A CN202010808677 A CN 202010808677A CN 111930313 B CN111930313 B CN 111930313B
- Authority
- CN
- China
- Prior art keywords
- data table
- data
- access
- array
- array index
- 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 53
- 238000013507 mapping Methods 0.000 claims abstract description 69
- 238000004590 computer program Methods 0.000 claims description 17
- 238000012216 screening Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 6
- 230000000977 initiatory effect Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 3
- IUVCFHHAEHNCFT-INIZCTEOSA-N 2-[(1s)-1-[4-amino-3-(3-fluoro-4-propan-2-yloxyphenyl)pyrazolo[3,4-d]pyrimidin-1-yl]ethyl]-6-fluoro-3-(3-fluorophenyl)chromen-4-one Chemical compound C1=C(F)C(OC(C)C)=CC=C1C(C1=C(N)N=CN=C11)=NN1[C@@H](C)C1=C(C=2C=C(F)C=CC=2)C(=O)C2=CC(F)=CC=C2O1 IUVCFHHAEHNCFT-INIZCTEOSA-N 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种主机中数据关联访问的方法和装置,该方法包括:获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;将第二数据表主键映射为数组下标,放入内存;发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。本发明升数据访问效率。
Description
技术领域
本发明涉及计算机数据处理技术领域,尤其涉及一种主机中数据关联访问的方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在主机中经常会碰到一个非常大的数据(亿级数据量)去批量关联一个小数据量的表(10万级以下),尽管是是根据小表的主键在磁盘中进行访问访问,但是访问的次数过多(亿级),造成I/O(Input/Output)访问过于频繁,除了增大主机资源的负荷之外,整个实现过程会持续比较长的时间。
现有的方法每查询一条大表的记录就要通过磁盘访问访问数据一次,尤其是批量程序,则要访问N次(假设大表的数据量是N条),这种方法的主要缺点是:效率不高,尤其是批量程序,需要耗费很长的时间(访问次数N×单次数据访问的I/O耗时);频繁的访问数据库,造成主机数据库的资源负担增加。
因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。
发明内容
本发明实施例提供一种主机中数据关联访问的方法,能够降低主机的I/O访问操作频率,升数据访问效率,该方法包括:
获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;
将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;
将第二数据表主键映射为数组下标,放入内存;
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段;
其中,将第二数据表主键映射为数组下标,放入内存,包括:
将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;
将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;
将第一数组下标和第二数组下标放入内存;
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段,包括:
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;
从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;
从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;
将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
本发明实施例还提供一种主机中数据关联访问的装置,包括:
数据表获取模块,用于获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;
关联模块,用于将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;
映射模块,用于将第二数据表主键映射为数组下标,放入内存;
数据访问模块,用于发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段;
其中,映射模块,具体用于:
将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;
将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;
将第一数组下标和第二数组下标放入内存;
数据访问模块,具体用于:
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;
从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;
从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;
将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种主机中数据关联访问的方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述一种主机中数据关联访问的方法的计算机程序。
本发明实施例提供的一种主机中数据关联访问的方法和装置,首先获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;然后,将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;接着,将第二数据表主键映射为数组下标,放入内存;最后,在发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。本发明实施将数据量小的第二数据表的主键映射为数组下标,并放在内存中,在发起数据访问时直接从内存中将数组下标作为访问地址,把访问磁盘提升到访问内存,运行效率能提升一个数据量级(微秒级别提升到纳秒级别),能够降低主机的I/O访问操作频率,升数据访问效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例一种主机中数据关联访问的方法示意图。
图2为本发明实施例一种主机中数据关联访问的方法的第一数据表示例图。
图3为本发明实施例一种主机中数据关联访问的方法的第二数据表示例图。
图4为本发明实施例一种主机中数据关联访问的方法的第一数据表与第二数据表关联示例图。
图5为本发明实施例一种主机中数据关联访问的方法的一种简单映射示例。
图6为本发明实施例一种主机中数据关联访问的方法的一个实例中借记卡的主表CARD和分区表PART示意图。
图7为本发明实施例一种主机中数据关联访问的方法的第二数据表前部主键映射示意图。
图8为本发明实施例一种主机中数据关联访问的方法的第二数据表后部主键映射示意图。
图9为本发明实施例一种主机中数据关联访问的方法的完整映射示意图。
图10为运行本发明实施的一种主机中数据关联访问的方法的计算机装置示意图。
图11为本发明实施例一种主机中数据关联访问的装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
图1为本发明实施例一种主机中数据关联访问的方法示意图,如图1所示,本发明实施例提供一种主机中数据关联访问的方法,能够降低主机的I/O访问操作频率,升数据访问效率,该方法包括:
步骤101:获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;
步骤102:将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;
步骤103:将第二数据表主键映射为数组下标,放入内存;
步骤104:发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。
本发明实施例提供的一种主机中数据关联访问的方法,首先获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;然后,将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;接着,将第二数据表主键映射为数组下标,放入内存;最后,在发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。本发明实施将数据量小的第二数据表的主键映射为数组下标,并放在内存中,在发起数据访问时直接从内存中将数组下标作为访问地址,把访问磁盘提升到访问内存,运行效率能提升一个数据量级(微秒级别提升到纳秒级别),能够降低主机的I/O访问操作频率,升数据访问效率。
现有技术中,在主机中一个大数据量表关联一个中小表(一般10万数据以下)时,一般都是在COBOL语言中嵌入SQL语句通过2个表之间的主键进行关联。
例如A是大表,B是小表。他们之间的关联主键是KEY-1;
一般是执行类似这种SQL语句:
SELECT B.VALUE FROM B WHERE A.KEY-1=B.KEY1;
而直接通过现有技术中的这种关联方式进行数据访问时,每查询一条A表的记录就要访问数据一次,尤其是批量程序,假设A表的数据量是N条则要访问N次;这样造成耗时很长,主机数据访问的效率会非常低下。
为解决上述问题,本发明实施例提供一种主机中数据关联访问的方法,具体实施时可以包括:
获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;将第二数据表主键映射为数组下标,放入内存;发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。
在实施本发明实施之前,需要分析数据访问的表之间的关联是否符合本发明的模型。大表和小表之间的关联的数据规模是否满足;分析小表的主键的数据组成,将该表的主键映射成下标为1~M(M<=小表的记录数)的数组,不同的主键映射成不同的数组下标,然后进行对比测试,在本发明实施例中,第一数据表也可写作大表,第二数据表也可写作小表。
如图2本发明实施例一种主机中数据关联访问的方法的第一数据表示例图和图3本发明实施例一种主机中数据关联访问的方法的第二数据表示例图所示,获取第一数据表和第二数据表;第一数据表的数据量大于第二数据表的数据量;
第一数据表记录数据量非常大(千万级别以上,一般为亿级至千亿级),但是第一数据表字段A的不重复的值较小(万级或十万级);在第一数据表中,第一数据表主键包括:X1、X2、X3、X4、X5、X6、……;与第一数据表主键对应的第一数据表字段A包括:A1、A2、A3、A4、A5、A6、……;在第二数据表中,第二数据表主键包括:A1、A2、A3、A4、A5、A6、……;与第二数据表主键对应的第二数据表字段Y包括:Y1、Y2、Y3、Y4、Y5、Y6……;结合图1与图2,第一数据表与第二数据表之间存在关联关系。
为明确上述关联关系,具体实施本发明实施例提供的一种主机中数据关联访问的方法时,在一个实施例中,前述的第一数据表字段的值与第二数据表主键的值相等;
前述的将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联,包括:
在第一数据表中对第一数据表字段的值进行筛选,确定多组具有相同值的第一数据表字段;
在第二数据表中最第二数据表主键的值进行筛选,确定多组具有相同值的第二数据表主键;
将多组具有相同值的第一数据表字段与多组具有相同值的第二数据表主键进行匹配,将第一数据表通过具有相同值的第一数据表字段和第二数据表主键与第二数据表进行关联。
图4为本发明实施例一种主机中数据关联访问的方法的第一数据表与第二数据表关联示例图,结合图2的第一数据表和图3的第二数据表,前述的第一数据表字段的值与第二数据表主键的值相等;在实施例中,前述的将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联,包括:
在第一数据表中对第一数据表字段的值进行筛选,确定多组具有相同值的第一数据表字段;例如X1、X2、X3、X4、X5、X6、……;
在第二数据表中最第二数据表主键的值进行筛选,确定多组具有相同值的第二数据表主键;例如A1、A2、A3、A4、A5、A6、……;
将多组具有相同值的第一数据表字段与多组具有相同值的第二数据表主键进行匹配,将第一数据表通过具有相同值的第一数据表字段和第二数据表主键与第二数据表进行关联;例如X1->A1=Y1,X2->A2=Y2,X3->A3=Y3,X4->A4=Y4,X5->A5=Y5,X6->A6=Y6,……,Xn->An=Yn。
具体实施本发明实施例提供的一种主机中数据关联访问的方法时,在一个实施例中,前述的将第二数据表主键映射为数组下标,放入内存,包括:
将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;
将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;
将第一数组下标和第二数组下标放入内存。
实施例中,如图5本发明实施例一种主机中数据关联访问的方法的一种简单映射示例所示,数组下标为不重复的自然数;可以通过映射函数f(x)实现映射,将第二数据表主键映射为不重复的自然数;表示为:第二数据表主键->f(X)->N(N为不重复的自然数,N一般建议小于第二数据表的记录数)。
图6为本发明实施例一种主机中数据关联访问的方法的一个实例中借记卡的主表CARD和分区表PART示意图,其中主表CARD属于第一数据表的一种,分区表PART属于第二数据表的一种,如图6所示,很多情况第二数据表主键的值并不是连续的整数,而是非常离散。例如有借记卡的主表CARD和分区表PART。
其中CARD表数据量达亿级,每次根据19位的卡号访问CARD表时,需要提前根据CARD表卡号的前11位来访问PART表获取CARD的主键之一(PART-ID);因此不能直接将CARD_PREFIX的值作为数组下标,因为11位的数字的下标会使数组达到千亿级别的大小。另外,PART表的数据规模是5万左右。
为了解决数据量过大的问题,本发明实施例,具体可以通过:将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;将第一数组下标和第二数组下标放入内存。
结合图6,将分区表PART中的CARD_PREFIX进行划分,划分为如图7所示的第二数据表前部主键(BIN码)和如图8所示的第二数据表后部主键(HB码);将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;如图9所示,将第一数组下标和第二数组下标并排组合,放入内存。
在本发明实施例的一个实例中,11位卡号的前6位是发卡行标志(BIN码),其离散度很大,其BIN码一共只有50个,但是占了6位数字。
将BIN码映射为第一数组下标,完成第一级映射;再将PART表的11位的CARD_PREFIX值(HB码)映射为值域为0000001~4999999的第二数组下标;其中前位为第一数组下标,完成第二级映射。通过第一级映射和第二级映射,将PART就由原来的百亿级别的数据变成十万级别的数组。
具体实施本发明实施例提供的一种主机中数据关联访问的方法时,在一个实施例中,前述的发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段,包括:
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;
从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;
从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;
将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
实施例中,在发起数据访问时,本发明实施例已经将数组下标置于内存中,因此整个数据访问过程发生在内存中,可以将原来磁盘访问的微秒级别提升到内存访问的纳秒级别,运行效率能提升一个数据量级;首先根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;然后从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;接着,从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;最后,将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
在优化后的关联访问中,第一数据表字段A的A1值去如果要知道在第二数据表表中的关联字段Y的值的话,直接可以在内存中作如下操作:A1×f(X):即A1的值先与M数组先匹配,得到数组映射的YY的值。例如在借记卡例中,是通过卡号的前6位访问M数组获得2位的数值YY;然后将YY与卡号的第7~11列组合成YY99999,通过该下标直接访问数组N,得到最终想要得到的PART-ID值。
图10为运行本发明实施的一种主机中数据关联访问的方法的计算机装置示意图,如图10所示,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种主机中数据关联访问的方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行实现上述一种主机中数据关联访问的方法的计算机程序。
本发明实施例中还提供了一种主机中数据关联访问的装置,如下面的实施例所述。由于该装置解决问题的原理与一种主机中数据关联访问的方法相似,因此该装置的实施可以参见一种主机中数据关联访问的方法的实施,重复之处不再赘述。
图11为本发明实施例一种主机中数据关联访问的装置示意图,如图11所示,本发明实施例还提供一种主机中数据关联访问的装置,可以包括:
数据表获取模块1101,用于获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;
关联模块1102,用于将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;
映射模块1103,用于将第二数据表主键映射为数组下标,放入内存;
数据访问模块1104,用于发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。
具体实施本发明实施例提供的一种主机中数据关联访问的装置时,在一个实施例中,前述的第一数据表字段的值与第二数据表主键的值相等;
前述的关联模块,具体用于:
在第一数据表中对第一数据表字段的值进行筛选,确定多组具有相同值的第一数据表字段;
在第二数据表中最第二数据表主键的值进行筛选,确定多组具有相同值的第二数据表主键;
将多组具有相同值的第一数据表字段与多组具有相同值的第二数据表主键进行匹配,将第一数据表通过具有相同值的第一数据表字段和第二数据表主键与第二数据表进行关联。
具体实施本发明实施例提供的一种主机中数据关联访问的装置时,在一个实施例中,前述的映射模块,具体用于:
将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;
将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;
将第一数组下标和第二数组下标放入内存。
具体实施本发明实施例提供的一种主机中数据关联访问的装置时,在一个实施例中,前述的数据访问模块,具体用于:
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;
从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;
从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;
将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
综上,本发明实施例提供的一种主机中数据关联访问的方法和装置,首先获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;然后,将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;接着,将第二数据表主键映射为数组下标,放入内存;最后,在发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段。本发明实施将数据量小的第二数据表的主键映射为数组下标,并放在内存中,在发起数据访问时直接从内存中将数组下标作为访问地址,把访问磁盘提升到访问内存,运行效率能提升一个数据量级(微秒级别提升到纳秒级别),能够降低主机的I/O访问操作频率,升数据访问效率。
本发明将小数据量表的主键经过分析,将主键值通过映射函数映射成1~10万(或者更大)的整数(充当哈希表的地址);将映射后的数组下标直接放在内存,后续在访问的时候,直接访问映射后的地址。通过该方法把访问磁盘提升到访问内存,运行效率能提升一个数据量级(微秒级别提升到纳秒级别)。通过将被关联的小表的主键映射成数组下标,大表来直接访问该数组提高访问效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种主机中数据关联访问的方法,其特征在于,包括:
获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;
将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;
将第二数据表主键映射为数组下标,放入内存;
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段;
其中,将第二数据表主键映射为数组下标,放入内存,包括:
将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;
将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;
将第一数组下标和第二数组下标放入内存;
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段,包括:
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;
从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;
从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;
将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
2.如权利要求1所述的方法,其特征在于,所述第一数据表字段的值与第二数据表主键的值相等;
将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联,包括:
在第一数据表中对第一数据表字段的值进行筛选,确定多组具有相同值的第一数据表字段;
在第二数据表中最第二数据表主键的值进行筛选,确定多组具有相同值的第二数据表主键;
将多组具有相同值的第一数据表字段与多组具有相同值的第二数据表主键进行匹配,将第一数据表通过具有相同值的第一数据表字段和第二数据表主键与第二数据表进行关联。
3.一种主机中数据关联访问的装置,其特征在于,包括:
数据表获取模块,用于获取第一数据表和第二数据表;其中,第一数据表的数据量大于第二数据表的数据量;第一数据表,包括:第一数据表主键和与其对应的第一数据表字段;第二数据表包括:第二数据表主键和与其对应的第二数据表字段;
关联模块,用于将第一数据表通过第一数据表字段和第二数据表主键与第二数据表进行关联;其中,第一数据表字段的值与第二数据表主键的值相等;
映射模块,用于将第二数据表主键映射为数组下标,放入内存;
数据访问模块,用于发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段,从内存中读取数组下标,将数组下标作为访问地址,根据第一数据表字段,确定第二数据表字段;
其中,映射模块,具体用于:
将第二数据表主键划分为第二数据表前部主键和第二数据表后部主键;
将第二数据表前部主键映射为第一数组下标,将第二数据表后部主键映射为第二数组下标;
将第一数组下标和第二数组下标放入内存;
数据访问模块,具体用于:
发起数据访问时,根据第一数据表主键在第一数据表中查找与其对应的第一数据表字段;
从内存中读取第一数组下标,与第一数据表字段进行匹配,确定第一数组下标映射值;
从内存中读取第二数组下标,将第一数组下标映射值与第二数组下标组成访问数组下标;
将访问数组下标作为访问地址进行数据访问,确定第二数据表字段。
4.如权利要求3所述的装置,其特征在于,所述第一数据表字段的值与第二数据表主键的值相等;
关联模块,具体用于:
在第一数据表中对第一数据表字段的值进行筛选,确定多组具有相同值的第一数据表字段;
在第二数据表中最第二数据表主键的值进行筛选,确定多组具有相同值的第二数据表主键;
将多组具有相同值的第一数据表字段与多组具有相同值的第二数据表主键进行匹配,将第一数据表通过具有相同值的第一数据表字段和第二数据表主键与第二数据表进行关联。
5.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至2任一项所述方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至2任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010808677.3A CN111930313B (zh) | 2020-08-12 | 2020-08-12 | 主机中数据关联访问的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010808677.3A CN111930313B (zh) | 2020-08-12 | 2020-08-12 | 主机中数据关联访问的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930313A CN111930313A (zh) | 2020-11-13 |
CN111930313B true CN111930313B (zh) | 2023-12-22 |
Family
ID=73310798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010808677.3A Active CN111930313B (zh) | 2020-08-12 | 2020-08-12 | 主机中数据关联访问的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930313B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937993A (zh) * | 2012-11-09 | 2013-02-20 | 北京小米科技有限责任公司 | 一种用于访问关键字的方法及装置 |
CN103631911A (zh) * | 2013-11-27 | 2014-03-12 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN107045534A (zh) * | 2017-01-20 | 2017-08-15 | 中国航天系统科学与工程研究院 | 大数据环境下基于HBase的异构数据库在线交换与共享系统 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
CN109766341A (zh) * | 2018-12-27 | 2019-05-17 | 厦门市美亚柏科信息股份有限公司 | 一种建立哈希映射的方法、装置、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10868674B2 (en) * | 2016-08-12 | 2020-12-15 | ALTR Solutions, Inc. | Decentralized database optimizations |
US20200050785A1 (en) * | 2018-08-10 | 2020-02-13 | Ca, Inc. | Database record access through use of a multi-value alternate primary key |
-
2020
- 2020-08-12 CN CN202010808677.3A patent/CN111930313B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937993A (zh) * | 2012-11-09 | 2013-02-20 | 北京小米科技有限责任公司 | 一种用于访问关键字的方法及装置 |
CN103631911A (zh) * | 2013-11-27 | 2014-03-12 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
CN107045534A (zh) * | 2017-01-20 | 2017-08-15 | 中国航天系统科学与工程研究院 | 大数据环境下基于HBase的异构数据库在线交换与共享系统 |
CN109766341A (zh) * | 2018-12-27 | 2019-05-17 | 厦门市美亚柏科信息股份有限公司 | 一种建立哈希映射的方法、装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111930313A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107807982B (zh) | 一种异构数据库的一致性校验方法及装置 | |
CN103902698B (zh) | 一种数据存储系统和存储方法 | |
CN104182484B (zh) | 一种实现HBase数据与Java域对象映射的方法和装置 | |
CN103902702A (zh) | 一种数据存储系统和存储方法 | |
CN110569629A (zh) | 二进制代码文件溯源方法 | |
CN109885614B (zh) | 一种数据同步的方法和装置 | |
CN111930615B (zh) | 代码质量评估方法及装置 | |
CN109753517A (zh) | 一种信息查询的方法、装置、计算机存储介质及终端 | |
CN110569243B (zh) | 一种数据查询方法、数据查询插件和数据查询服务器 | |
CN109614411B (zh) | 数据存储方法、设备和存储介质 | |
CN115617773A (zh) | 数据迁移的方法、装置和系统 | |
CN111125216B (zh) | 数据导入Phoenix的方法及装置 | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
CN111930313B (zh) | 主机中数据关联访问的方法和装置 | |
CN117539925A (zh) | 一种数据处理方法、装置、介质和设备 | |
CN116955341A (zh) | 数据库完整性评价方法、系统及其应用 | |
CN112162982A (zh) | 数据查询方法、装置、设备及介质 | |
CN111221690A (zh) | 针对集成电路设计的模型确定方法、装置及终端 | |
CN110765100A (zh) | 标签的生成方法、装置、计算机可读存储介质及服务器 | |
US20070239794A1 (en) | Method and system for updating logical information in databases | |
CN112860712B (zh) | 一种基于区块链的交易数据库构建方法、系统及电子设备 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN109992687B (zh) | 人脸数据的搜索方法、装置、电子设备及可读存储介质 | |
CN113157671A (zh) | 一种数据监控方法及装置 | |
CN113407657A (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 |