CN105069084A - 一种面向海量数据高效取差集的方法 - Google Patents
一种面向海量数据高效取差集的方法 Download PDFInfo
- Publication number
- CN105069084A CN105069084A CN201510464150.2A CN201510464150A CN105069084A CN 105069084 A CN105069084 A CN 105069084A CN 201510464150 A CN201510464150 A CN 201510464150A CN 105069084 A CN105069084 A CN 105069084A
- Authority
- CN
- China
- Prior art keywords
- data
- array
- bit
- source
- target data
- 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.)
- Granted
Links
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/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明一种面向海量数据高效取差集实现方法,将存储机制与索引机制相结合,实现高效取差集;在进行数据存储时就已经对存储位置进行分核分片规范,减少了获取的数据执行时间,提高了执行效率,同时在数据量不断增大的情况下,可通过增加分核数与分片数进行水平扩展,不会因为数据量增大而在取数据时耗费太多查询时间;而在取差集时,源数据集合与目标数据集合采用位数组的存储模式,存储的都是去重后数据的关键匹配元素,避免了全元素存储,减少了存储空间,避免因数据量过大而导致内存溢出,在取差集匹配时,采用的是基于哈希表的位索引模式,提高了匹配效率,在取差集数据量越大情况下,越能体现性能方面的优势。
Description
技术背景
本发明涉及一种面向海量数据高效取差集的方法。
背景技术
许多应用场景需要对两个数据集进行对比,去除数据重合部分,取其差集。目前很多做法都是直接循环对比两个数据集,判断其差集是否存在。但在大数据应用环境下,面对海量数据,采用该传统方法有可能出现内存溢出、执行时间长、效率低等问题,无法满足业务需求。
发明内容
本发明的目的在于提供一种面向海量数据高效取差集的方法,在海量数据环境下,能高效获取差集结果,缩短执行时间,及时响应用户操作。
本发明一种面向海量数据高效取差集实现方法,包括如下步骤:
步骤1、数据存储及历史数据形成阶段
包括若干个数据存储区,每个数据存储区下根据时间轴分类或共性条件设置多个分核,每个分核下根据时间轴分类或共性条件设置多个分片,分核数量及分片数量可根据数据量进行水平扩展,将海量数据根据时间轴分类或共性条件进行分核及分片存储形成历史数据;
步骤2、形成源数据位数组集合与目标数据位数组集合阶段
根据源数据和目标数据查询条件分别到历史数据相应的分片获取数据组成源数据集合和目标数据集合;
对获取的源数据集合与目标数据集合分别进行去重处理,去重后数据的匹配字段采用哈希函数映射到位阵列进行存储,分别提取后续会用于匹配的关键字段进行存储形成位数组集合,其中,源数据位数组集合用来存储源数据集合的关键字段元素,目标数据位数组集合用来存储目标数据集合的关键字段;
步骤3、源数据位数组集合与目标数据位数组集合进行位索引匹配取差集阶段
循环源数据位数组集合中的元素,通过L个哈希映射函数得到L个值,匹配到目标数据位数组集合中,判断目标数据位数组是否都为1,若全为1,则说明源数据位数组集合中的该元素在目标数据位数组集合中,否则说明源数据位数组集合中的该元素不在目标数据位数组集合中,将目标数据位数组集合中的该元素放到另外一个差集集合中,循环匹配源数据位数组集合所有元素后,得到的差集集合就是源数据集合与目标数据集合的差集,从而实现数据快速匹配取差集。
本发明将存储机制与索引机制相结合,实现高效取差集;在进行数据存储时就已经对存储位置进行分核分片规范,减少了获取的数据执行时间,提高了执行效率,同时在数据量不断增大的情况下,可通过增加分核数与分片数进行水平扩展,不会因为数据量增大而在取数据时耗费太多查询时间;而在取差集时,源数据集合与目标数据集合采用位数组的存储模式,存储的都是去重后数据的关键匹配元素,避免了全元素存储,减少了存储空间,避免因数据量过大而导致内存溢出,在取差集匹配时,采用的是基于哈希表的位索引模式,提高了匹配效率,在取差集数据量越大情况下,越能体现性能方面的优势。
附图说明
图1为本发明中历史数据存储的流程图;
图2为本发明中取差集的流程图。
以下结合附图和具体实施例对本发明作进一步详述。
具体实施方式
本发明一种面向海量数据高效取差集实现方法,包括如下步骤:
步骤1、数据存储及历史数据形成阶段
如图1所示,本发明包括若干个数据存储区,每个数据存储区下根据时间轴分类或共性条件设置多个分核,每个分核下根据时间轴分类或共性条件设置多个分片,分核数量及分片数量可根据数据量进行水平扩展,将海量数据根据时间轴分类或共性条件进行分核及分片存储形成历史数据,能减少每个数据存储区的数据量,方便快速获取相应的数据,避免获取大量数据时出现查询瓶颈;
步骤2、形成源数据位数组集合与目标数据位数组集合阶段
如图2所示,根据源数据查询条件到历史数据相应的分片获取数据组成源数据集合,根据目标数据查询条件到历史数据相应的分片获取数据组成目标数据集合;
获取源数据集合与目标数据集合后,对获取的数据进行去重处理,分别提取关键字段进行存储,采用位数组存储的方式形成两个位数组集合,一个用来存储源数据集合的关键字段元素,另外一个用来存储目标数据集合的关键字段;所述去重后数据的匹配字段采用哈希函数映射到位阵列进行存储,形成位数组集合,在初始状态下,数组中所有位都被置为0,在载入元素时,将对应位置为1,例如,数据的元素集合为N={n1,n2,…,nn},则通过L个哈希映射函数{f1,f2,…,fL},将数据的元素集合N中的每个元素nj(1≤j≤n)映射为L个值{g1,g2,…,gL},然后再将位数组array中相对应的array[g1],array[g2],…,array[gL]置为1;在组装位数组集合时,采用哈希表数据结构存储方式,只存储后续会用于匹配的元素字段,源数据的组装方式与目标数据一致;
步骤3、源数据位数组集合与目标数据位数组集合进行位索引匹配取差集阶段
源数据位数组集合中的元素,通过L个哈希映射函数{f1,f2,…,fl}得到L个值{g1,g2,…,gL},匹配到目标数据位数组集合中,判断目标数据位数组array[g1],array[g2],…,array[gL]是否都为1,若全为1,则说明源数据位数组集合中的该元素在目标数据位数组集合中,否则说明源数据位数组集合中的该元素不在目标数据位数组集合中,将目标数据位数组集合中的该元素放到另外一个差集集合中,循环匹配源数据位数组集合所有元素后,得到的差集集合就是源数据集合与目标数据集合的差集,从而实现数据快速匹配取差集。
本发明的重点在于:将存储机制与索引机制相结合,实现高效取差集;在进行数据存储时就已经对存储位置进行分核分片规范,减少了获取的数据执行时间,提高了执行效率;而在取差集时,源数据集合与目标数据集合采用位数组的存储模式,存储的都是去重后数据的关键匹配元素,避免了全元素存储,减少了存储空间,避免因数据量过大而导致内存溢出,在取差集匹配时,采用的是基于哈希表的位索引模式,提高了匹配效率。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (1)
1.一种面向海量数据高效取差集实现方法,其特征在于包括如下步骤:
步骤1、数据存储及历史数据形成阶段
包括若干个数据存储区,每个数据存储区下根据时间轴分类或共性条件设置多个分核,每个分核下根据时间轴分类或共性条件设置多个分片,分核数量及分片数量可根据数据量进行水平扩展,将海量数据根据时间轴分类或共性条件进行分核及分片存储形成历史数据;
步骤2、形成源数据位数组集合与目标数据位数组集合阶段
根据源数据和目标数据查询条件分别到历史数据相应的分片获取数据组成源数据集合和目标数据集合;
对获取的源数据集合与目标数据集合分别进行去重处理,去重后数据的匹配字段采用哈希函数映射到位阵列进行存储,分别提取后续会用于匹配的关键字段进行存储形成位数组集合,其中,源数据位数组集合用来存储源数据集合的关键字段元素,目标数据位数组集合用来存储目标数据集合的关键字段;
步骤3、源数据位数组集合与目标数据位数组集合进行位索引匹配取差集阶段
循环源数据位数组集合中的元素,通过L个哈希映射函数得到L个值,匹配到目标数据位数组集合中,判断目标数据位数组是否都为1,若全为1,则说明源数据位数组集合中的该元素在目标数据位数组集合中,否则说明源数据位数组集合中的该元素不在目标数据位数组集合中,将目标数据位数组集合中的该元素放到另外一个差集集合中,循环匹配源数据位数组集合所有元素后,得到的差集集合就是源数据集合与目标数据集合的差集,从而实现数据快速匹配取差集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510464150.2A CN105069084B (zh) | 2015-07-31 | 2015-07-31 | 一种面向海量数据高效取差集的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510464150.2A CN105069084B (zh) | 2015-07-31 | 2015-07-31 | 一种面向海量数据高效取差集的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105069084A true CN105069084A (zh) | 2015-11-18 |
CN105069084B CN105069084B (zh) | 2018-07-31 |
Family
ID=54498454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510464150.2A Active CN105069084B (zh) | 2015-07-31 | 2015-07-31 | 一种面向海量数据高效取差集的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105069084B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845843A (zh) * | 2018-05-25 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 一种函数处理方法、装置以及相关设备 |
CN109446226A (zh) * | 2018-09-30 | 2019-03-08 | 上海恺英网络科技有限公司 | 一种数据集合确定的方法及设备 |
CN109522310A (zh) * | 2018-11-16 | 2019-03-26 | 北京锐安科技有限公司 | 数据存储、检索方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090954A (zh) * | 2014-07-04 | 2014-10-08 | 用友软件股份有限公司 | 只读表的连接方法和只读表的连接系统 |
CN104112011A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种海量数据提取的方法及装置 |
CN104731969A (zh) * | 2015-04-10 | 2015-06-24 | 北京大学深圳研究生院 | 分布式环境下海量数据连接聚集查询方法、装置和系统 |
-
2015
- 2015-07-31 CN CN201510464150.2A patent/CN105069084B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090954A (zh) * | 2014-07-04 | 2014-10-08 | 用友软件股份有限公司 | 只读表的连接方法和只读表的连接系统 |
CN104112011A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种海量数据提取的方法及装置 |
CN104731969A (zh) * | 2015-04-10 | 2015-06-24 | 北京大学深圳研究生院 | 分布式环境下海量数据连接聚集查询方法、装置和系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845843A (zh) * | 2018-05-25 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 一种函数处理方法、装置以及相关设备 |
CN108845843B (zh) * | 2018-05-25 | 2022-04-29 | 腾讯科技(深圳)有限公司 | 一种函数处理方法、装置以及相关设备 |
CN109446226A (zh) * | 2018-09-30 | 2019-03-08 | 上海恺英网络科技有限公司 | 一种数据集合确定的方法及设备 |
CN109446226B (zh) * | 2018-09-30 | 2020-01-17 | 上海恺英网络科技有限公司 | 一种数据集合确定的方法及设备 |
CN109522310A (zh) * | 2018-11-16 | 2019-03-26 | 北京锐安科技有限公司 | 数据存储、检索方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105069084B (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321344B (zh) | 关联数据的信息查询方法、装置、计算机设备及存储介质 | |
US9594524B2 (en) | System and method for distributed computing in non-volatile memory | |
JP6639420B2 (ja) | フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム | |
WO2021091489A1 (en) | Method and apparatus for storing time series data, and server and storage medium thereof | |
CN103176916B (zh) | 闪存及闪存的地址转换方法 | |
US20160098209A1 (en) | Multidimensional contiguous memory allocation | |
CN104361113B (zh) | 一种内存‑闪存混合存储模式下的olap查询优化方法 | |
CN106156331A (zh) | 冷热温数据服务器系统及其处理方法 | |
CN102682108B (zh) | 一种行列混合的数据库存储方法 | |
WO2017041570A1 (zh) | 向缓存写入数据的方法及装置 | |
US10482087B2 (en) | Storage system and method of operating the same | |
WO2016134628A1 (en) | Hybrid data distribution in a massively parallel processing architecture | |
Fukuda et al. | Caching memcached at reconfigurable network interface | |
CN105069084A (zh) | 一种面向海量数据高效取差集的方法 | |
US10394459B2 (en) | Data storage device for filtering page in two steps, system including the same, and method of operating the same | |
US20230128085A1 (en) | Data aggregation processing apparatus and method, and storage medium | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
US20180253449A1 (en) | Optimized data storage for fast retrieval | |
CN112799972B (zh) | Ssd映射表的实现方法、装置、可读存储介质及电子设备 | |
CN102156759A (zh) | 二叉树并行查找方法和设备 | |
CN107451154B (zh) | 一种数据表的处理方法、装置及系统 | |
US10915470B2 (en) | Memory system | |
CN104750846A (zh) | 一种子串查找方法及装置 | |
CN102147771A (zh) | 查找闪存设备中固件程序存放位置的方法 | |
CN104216984A (zh) | 数据查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |