CN105653609B - 基于内存的数据处理方法及装置 - Google Patents
基于内存的数据处理方法及装置 Download PDFInfo
- Publication number
- CN105653609B CN105653609B CN201510983302.XA CN201510983302A CN105653609B CN 105653609 B CN105653609 B CN 105653609B CN 201510983302 A CN201510983302 A CN 201510983302A CN 105653609 B CN105653609 B CN 105653609B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- chained list
- pointer
- node
- 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
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/2282—Tablespace storage structures; Management thereof
-
- 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/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于内存的数据处理方法及装置,其中,所述方法包括:将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表,每一条链表中的数据域保存用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针;通过所述多条链表查找所述结构化数据中的数据元素,并根据存储于第二内存区域的统计指标和计算方法进行数据处理。采用本发明,能大大降低I/O开销、提高数据处理效率并及时返回统计结果的效果。
Description
技术领域
本发明涉及数据处理领域,更为具体而言,涉及一种基于内存的数据处理方法及装置。
背景技术
随着信息技术的发展,在很多领域可以通过对大量数据进行统计分析来帮助决策。例如在银行的风险监控领域,可以通过分析客户的每一笔交易行为以及与此交易相关的某种上下文关系,来判断客户当笔交易是否存在风险,并以此决策是否对该客户的交易采取控制措施。区别于其他的数据统计分析需求,银行风险监控的特点是要求在很短的时间内(例如10分钟或更短的时间)快速返回客户交易的分析结果,对数据分析的时效性要求较高。
业界在数据统计分析方面,通常使用关系型数据库技术来实现。现有常用的关系型数据库产品有ORACLE、DB2、MYSQL等,借助数据库函数和结构化查询语言(StructuredQuery Language,SQL)实现对大量数据的处理分析。具体而言,在现有的数据处理技术中,首先将数据记录写入数据库;再运用SQL语句从数据库中逐笔读出数据记录并进行运算。但是,当数据记录数增长到一定程度时,频繁的读写数据库会消耗大量的I/O(输入/输出)资源,导致整体分析效率较低。此外,在业务上对时效性有较高的要求时,例如对银行交易进行实时的风险监控时,无法及时返回统计结果。
发明内容
鉴于现有技术的上述缺陷,本发明实施方式提供了一种基于内存的数据处理方法及装置,能够大大降低I/O开销、提高数据处理效率并及时返回统计结果的效果。
具体地,本发明实施方式提供了一种基于内存的数据处理方法,其包括:
将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表,每一条链表中的数据域保存用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针;
通过所述多条链表查找所述结构化数据中的数据元素,并根据存储于第二内存区域的统计指标和计算方法进行数据处理。
相应地,本发明实施方式还提供了一种基于内存的数据处理装置,其包括:
数据存储模块,用于将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表,每一条链表中的数据域保存用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针;
数据处理模块,用于通过所述多条链表查找所述原始数据记录中的数据元素,并根据存储于第二内存区域的统计指标和计算方法进行数据处理。
采用本发明实施方式具有下述有益效果:
通过将结构化数据写入内存并基于内存中加载的统计指标和计算方法进行数据处理,相对于现有的数据库技术而言,能够大大降低I/O开销、提高数据处理效率并及时返回统计结果的效果;
采用双链表存储结构以及采用双链表结合单链表的存储结构,能够在载入数据的同时快速获得多维度的上下文关系,提高数据处理效率,同时有利于进行数据元素的查询、增加和删除等操作;
在链表和索引中均采用保存指针的方式代替保存数据元素,从而在内存中仅需存储一份数据元素,降低内存开销。
附图说明
图1是根据本发明实施例的一种基于内存的数据处理方法的流程示意图;
图2A是根据本发明实施例的一种基于内存的数据处理整体流程示意图及相关存储结构示意图的一例;
图2B是根据本发明实施例的一种基于内存的数据处理整体流程示意图及相关存储结构示意图的另一例;
图3是根据本发明实施例的一种数据处理方法的流程示意图;
图4是根据本发明实施例的一种基于内存的数据处理方法的流程示意图;
图5A是一种用于配置计算方法的可视化图形界面的示意图;
图5B是一种用于配置统计指标的可视化图形界面的示意图;
图6是根据本发明实施例的一种基于内存的数据处理装置的框图;
图7是图6所示数据处理装置的数据存储模块的框图;
图8是图6所示数据处理装置的数据处理模块的框图。
具体实施方式
为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。
首先对根据本发明可能涉及到的名称或术语进行解释。
维度:结构化数据对象的共同属性。例如银行交易数据的维度有客户、交易IP、交易日期等。
上下文关系:结构化数据对象在某两个维度上产生的关系。例如银行交易数据可以按客户维度和时序维度产生关系、按交易IP维度和时序维度产生关系等。
统计指标:用以描述数据对象的基本状况或具体特征的概念,可基于一个或多个维度。
计算方法:为计算统计指标的结果而提供的算法。
图1是根据本发明实施例的一种基于内存的数据处理方法的流程示意图。参照图1,所述方法包括:
12:写入数据并建立多条链表。具体而言,将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表。其中,每一条链表中的数据域保存有用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针。在本发明中,数据元素可以简称为元素。
可选地,在本实施例的一种实现方式中,一个维度对应至少一个链表,换言之,在一个链表中,其各个结点的数据域分别保存有用于访问不同数据记录中的在同一维度下且具有相同值的数据元素的指针。
14:通过所述多条链表查找所述结构化数据中的数据元素。
16:根据存储于第二内存区域的统计指标和计算方法进行数据处理。
采用本实施例提供的数据处理方法,通过将结构化数据写入内存并基于内存中加载的统计指标和计算方法进行数据处理,相对于现有的数据库技术而言,能够大大降低I/O(输入/输出)开销、提高数据处理效率并及时返回统计结果的效果。
图2A是根据本发明实施例的一种基于内存的数据处理整体流程示意图及相关存储结构示意图的一例,其中以箭头的方向示出了数据转换→建立链表和索引的整体顺序,通过建立索引便于对链表进行查找、增加和删除等修改。当然,在本实施例中并不限制建立链表和建立索引的具体顺序。下面参照图2A对图1所示实施例的部分实现方式以及所涉及到的相关存储结构进行说明。
在图1所示实施例的一种实现方式中,在处理12之前,如图2A中所示,可以按照预设的数据结构将原始数据(例如,非结构化的交易流水数据)转换为所述结构化数据。
在图1所示实施例的一种实现方式中,在处理12中通过以下方式将结构化数据写入第一内存区域:在所述第一内存区域为每一条数据记录分配一个首结点和与首结点地址连续的内存地址,将每一条数据记录中的数据元素存储于被分配的连续的内存地址中,以便根据首结点地址的偏移量(偏移量可以预先配置)访问数据元素。进一步地,在处理12中通过以下方式建立多条链表:对应每一条维度建立至少一条链表,并且与第一维度对应的链表包含所述首结点。其中,所述第一维度是指从结构化数据中读取数据以写入所述第一内存区域时首先读取的维度,所述首结点的数据域保存指向自身地址的指针,用于访问首结点所在数据记录的第一维度下的数据元素。
更具体而言,当从结构化数据中读取数据以写入第一内存区域时,可以根据预配置的维度顺序进行数据读取。假设首先读取的维度为第一维度,则在首次读取一条数据记录的数据时,首先读取其第一维度的数据,然后在第一内存区域为该条数据记录分配一个首结点和与首结点地址连续的内存地址,并将该条数据记录的数据元素按照预配置的顺序存储于连续的内存地址中。该首结点同时也是第一维度所对应的链表中的一个结点,用于构成下文描述的双向链表存储结构和单向链表存储结构。在其它维度所对应的链表中,各个结点中的数据域直接指向相应数据记录的首结点地址即可。
可选地,参照图2A中的A部分所示的示例,结构化数据可以包括多条数据记录,一条数据记录对应一条流水(例如,交易、签约、查询、登录等),每一条数据记录存储于连续的内存地址中且对应一个首结点,以便通过首结点地址的偏移量访问具体的数据元素。
进一步可选地,在每一条链表中的数据域中保存有指向所述具有相同值的数据元素所属数据记录的首结点地址的指针。也就是说,就单条链表而言,通过其每个结点的数据域访问到的数据元素属于同一维度且具有相同的值但却属于不同的数据记录,并且在本实现方式中可以通过数据域指向的数据记录的首结点地址以及相应的偏移量访问具体元素。
需要说明的是,数据记录中存储多少个元素、每个元素的存储大小等均可根据需要配置,本发明对此不做具体限制。
在图1所示实施例的一种实现方式中,所述多个链表中的各个链表均包含(或者说具有)双向链表存储结构。可选地,参照图2A中的A部分和B部分所示的示例。假设一共M条数据记录,其中M1条数据记录的元素K具有相同值,另外M2条数据记录的元素K具有相同值,且M条数据记录的元素K+1均具有相同值。则对应元素K所属维度的链表k1具有M1个结点且各结点分别对应所述M1条数据记录中的一条;对应元素K所属维度的链表k2具有M2个结点且各结点分别对应所述M2条数据记录中的一条;对应元素K+1所属维度的链表k+1具有M个结点且各结点分别对应所述M条数据记录中的一条。
以链表k1为例,其中的结点的数据域保存有指向所述M1条数据记录的首结点地址的指针。以结点a为例,其数据域Da保存指向所述M1条数据记录中的一条数据记录的首结点地址的指针,指针域Pa1指向前驱结点a-1,指针域Pa2指向后继结点,各个结点按照这样的结构形成一条双向链表。链表k2和链表k+1也以同样的方式形成双向链表。当然,在本实现方式中对应于各个维度均采用上述方式建立相应的链表。
采用本实现方式,以存储指针的方式代替存储数据记录本身,数据记录在内存中只存储一份,从而减小了内存开销。并且采用双链表存储结构有利于进行查询、增加和删除等操作,提高数据处理效率。
参照图2A,假设元素1为所述第一维度,则元素1这一维度所对应的链表(未图示)由不同数据记录的首结点构成,各个首结点的数据域保存指向自身地址的指针,并且与其它维度所对应的链表的区别之处在于,其它维度所对应的链表的结点之后无需添加具体的数据元素。这样,将首结点直接作为链表的结点,能够有效减少对内存空间的占用。
在图1所示实施例的一种实现方式中,所述多个链表中对应第k维度的链表中的结点还具有指向对应第k+1维度的链表中的同记录结点的指针,其中,所述同记录结点是指数据域保存有用于访问同一条数据记录中属于不同维度的数据元素的指针的结点,所述k为正整数。例如,参照图2A中的虚线框所示的示例,以链表k1为例,其结点a除了具有指针域Pa1和指针域Pa2之外,还具有指针域Pa3,其指向链表k+1中的同记录结点c。换言之,链表k1中的结点a与链表k+1中的结点c指向同一条数据记录,故二者属于同记录结点。与链表k1相同地,链表k+1中的结点也可以指向其它链表中的同记录结点,依此规律形成单向链表结构。也就是说,如图2A中所示,所述多个链表中的各个链表可以同时具有双链表存储结构和单链表存储结构。
采用本实现方式,通过所述单链表存储结构使得在同一数据记录的关键元素上的搜索更加灵活。例如当在同一数据记录索引了一个关键信息后,如果需要搜索另一个关键元素的上下文,可以直接使用该结点的下一个指向就达到了搜索目的。
在图1所示实施例的一种实现方式中,可建立满足如下条件的索引结构以便通过所述多条链表查找所述结构化数据中的数据元素:Key保存第一指针,value保存第二指针,所述第一指针指向所述结构化数据中的数据元素的实际内存地址,而所述第二指针则是相应链表的头指针,所述相应链表是数据域保存有用于访问所述第一指针指向的数据元素的指针的链表。
可选地,一种示例性的索引结构如图2A中的C部分所示。其中,一个维度建立一个索引(采用哈希hash实现),一个索引包含至少一个key-value对。以索引k为例,其对应元素K所属维度,并且v1保存链表k1的头指针,k1指向链表k1的第一个结点的数据域所指向的元素K的实际内存地址;v2保存链表k2的头指针,k2指向链表k2的第一个结点的数据域所指向的元素K的实际内存地址。同样地,在对应元素K+1所属维度的索引k+1中,v1保存链表k+1的头指针,k1指向链表k+1的第一个结点的数据域所指向的元素K的实际内存地址。类似地,关于其它维度的索引不再详述。
在本实现方式中,根据建立的索引以及第二指针指向的链表查找结构化数据中的数据元素,具有多方面的优点。一方面,由于Key保存指针而不是具体的数据元素,因此,在整个方案中仅在内存中保存一份数据元素,索引建立在任何元素上都只需要一个结点的存储空间,不会因为建立多个索引(例如,基于IP地址,收款人,商家等)而产生更多的存储消耗,减小了内存开销。另一方面,由于第二指针指向的链表具有双链表存储结构,因此,可以通过一个链表访问一个Key下的所有记录。再一方面,当第二指针指向的链表具有单链表存储结构时,通过该单链表可以快速访问不同维度的数据元素,使得在同一个记录关键元素上的搜索更加灵活,并且通过与前述双链表存储结构的结合不仅能够快速访问所有的元素,还能更加灵活地进行元素的增删查等操作。
图2B是根据本发明实施例的一种基于内存的数据处理整体流程示意图及相关存储结构示意图的另一例,其中以粗箭头的方向示出了数据转换→建立索引和链表的整体顺序,以细箭头表示具体内容、结构或指针指向。当然,在本发明中并不限制建立链表和建立索引的具体顺序。下面参照图2B对图1所示实施例的部分实现方式以及所涉及到的相关存储结构进行说明。
参照图2B,首先将非结构化的全部数据转换为结构化数据,然后写入内存。由于全部数据可能由多种格式的数据组成,且可能存在格式差别较大的情况,所以可以将全部数据分为不同的数据源进行处理。写入内存的不同数据源分别包含多条数据记录,各结构化数据中的各条记录的结构及其存储方式请参照图2A中所述,此处不再赘述。
参照图2B,根据结构化数据(不同的数据源)中维度的配置建立多个索引。例如,以IP地址、收款人、客户号为维度建立索引,则会建立3个索引,每个索引中都包含了全部的数据。即,假设数据总量为s条数据记录,则以IP地址为维度建立的索引,其对应的双向链表结点的总数也为s,同理收款人、客户号维度建立的索引,其对应的双向链表结点的总数也为s。
更具体而言,每一个索引由多个key-value(键-值)对组成,假设以IP地址为维度建立索引,其总数据量为s条数据记录,每一个数据记录都有一个IP地址,这些IP地址存在相同的和不同的。如果有k个不同的IP地址,则以IP为维度建立的索引由k个key-value对组成,每一个key-value对对应一个IP地址,不同key-value对所对应的IP地址不同。以key-value对中的一对Ki-Vi为例,其中Ki所存储的是一个指针,其指向的内容为IPi,Vi则指向一个双向链表(如图2B中对key-value对细化后所示的结构)。如果数据记录中IP=IPi的数据记录有m条,则Vi指向的双向链表的结点数量也为m个,双向链表中每一个结点的数据域指针分别指向不同数据记录的首结点地址。同理,若IP=IPj的数据记录有n条,则在Kj-Vj中,Vj指向的双向链表的结点数量为n个。其它维度的索引也类似,都是由多个key-value对组成,每个key-value对都会对应一个双向链表,其双向链表的结点数量有多有少,但是同一个维度下的所有key-value对所对应的双向链表的结点数量总和为数据记录的总数。
在本实施例中,不同维度的索引之间存在一个单向链表,将相同数据记录的在不同维度进行统计的链表结点关联起来。假设有一条数据记录,其中的IP地址为IPi,商户号为Mi,则在IP为维度的索引中,某一个双向链表一个结点Ni指向此数据记录的IP地址IPi,而在以商户号为维度的索引中,某一个双向链表一个结点Nj指向此数据记录的商户号Mi,则Ni和Nj之间通过一个单向链表的指针将它们关联在一起。
在本实施例中,虚线箭头指向的结点的存储空间就是一条数据记录的首结点地址存储空间,同时该结点指向下一个索引的指向同一数据记录的结点。即,虚线箭头示出了单向链表的指向关系。关于链表之间的关系、链表中的结点与数据记录中的数据元素之间的关系的详细说明,请参见图2A所示实施例中的说明,此处不再赘述。
概而言之,本发明的不同实施例或是实现方式能够达到的有益效果包括:
灵活的存储配置:数据记录中存储多少个元素、每个元素的存储大小等都可配置化,本发明对此不做具体限制。
最小的索引存储:存储指向元素的地址的指针代替存储元素本身,使得元素在内存中只存储一份,节省内存开销。
便捷的多索引搜索:分析多索引上下文关系时,只需要一个索引搜索。例如,本发明定义了多个维度,当需要在这些维度上各做一个上下文关系统计,只需要进行一个索引定位搜索,后续则可使用同时具有双向链表存储结构和单向链表存储结构的链表遍历达到了搜索全部关联信息的目的。
快捷删除:数据记录的首结点就是第一个索引存储本元素的双向链表的结点存储空间,在删除数据记录时不需要查找第一个索引结点,可以直接定位,并且一条记录的全部索引结点构成了单链表,通用一轮遍历删除该记录所有索引结点。
优化的统计方法:对每个需要的统计量搜索一遍进行计算即可得到现有技术遍历所有的记录去计算所有统计量所得到的结果。
在图2A和图2B的其它示例中,可以参照与在数据库中建立索引类似的方法建立索引,包括全局索引和局部索引,本发明对此不进行详述。
图3是根据本发明实施例的一种数据处理方法的流程示意图,该方法基于本发明图1、图2A或图2B所示实施例提供的链表和索引结构进行数据处理。参照图3,所述方法包括:
30:判断索引是否为空。如果为空,则结束;如果不为空,则执行31。
31:根据当前数据记录得到索引的Key值,根据该Key值得到对应的链表。
32:判断链表结点是否为空。如果为空,则执行36;否则执行33。
33:计算静态变量。静态统计量是指针对静态数据进行统计,也就是数据记录中的数据,比如ip地址或者商户名等数据中原有的元素,这些元素都可以在数据记录中直接获取。
34:计算动态变量。动态统计量是指无法通过原始数据直接获取的统计量,需要经过一些计算,例如,一个商户在0-6点之间所做的特殊类型的交易的数量。
35:获取链表的下一个结点。然后再执行32。
36:获取下一个索引。然后再执行30。
也就是说,在本实施例中,通过两重循环即可完成对所有数据的数据处理,所述两重循环包括遍历不同索引的循环,以及遍历各个链表的结点的循环。
图4是根据本发明实施例的一种基于内存的数据处理方法的流程示意图。参照图4,所述方法除了包括如图1所示实施例中所述的处理12~16外,还可以包括:
40:将所述第二内存区域切换为所述第三内存区域。
42:根据更新的统计指标和计算方法进行数据处理。具体而言,根据存储于所述第三内存区域的更新的统计指标和计算方法代替存储于所述第二内存区域的统计指标和计算方法进行数据处理。
需要说明的是,在本发明中提及的第一内存区域、第二内存区域(或者称作内存主块)和第三内存区域(或者称作内存备块)分别表示内存的不同存储空间,或者表示分别独自存在的内存。
在现有技术中,将统计指标及计算方法固化在SQL语句中,因此难以支持统计指标和计算方法的灵活配置,当业务需求发生变更时,需要更新代码并重启程序方能生效。而采用本实施例提供的方法,可以通过灵活配置更新的统计指标和计算方法并通过第二内存区域与第三内存区域的切换实现统计指标和计算方法的更新,从而能有效解决现有技术的上述缺陷。
可选地,在本实施例的一种实现方式中,可以为业务人员提供一个可视化的图形界面,该图形界面用以调整/配置统计指标及计算方法,同时向采用本实施例提供的方法的系统发出更新内存的请求。初始化的统计指标和计算方法被存放于第二内存区域,当系统接收到更新内存的请求时,将调整后的统计指标及计算方法加载到第三内存区域中,并发起第二内存区域与第三内存区域的无缝切换,从而实现统计指标和计算方法的配置管理。其中,切换后的配置可以在下一轮数据处理时生效。
示例性地,图5A是一种用于配置计算方法的可视化图形界面的示意图,图5B是一种用于配置统计指标的可视化图形界面的示意图。例如,可以通过图5B所示的界面输入配置统计指标为“24小时时间范围内-数据源1的金额元素—取最大),配置的统计指标可以由相关程序计算得到与之对应的用于进行计算的输入参数,然后通过映射将输入参数传递到后续工作流处理。
图6是根据本发明实施例的一种基于内存的数据处理装置的框图,参照图6,所述数据处理装置包括数据存储模块61和数据处理模块62,下面进行具体说明。
在本实施例中,数据存储模块61用于将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表,每一条链表中的数据域保存有用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针。数据处理模块62用于通过所述多条链表查找所述原始数据记录中的数据元素,并根据存储于第二内存区域的统计指标和计算方法进行数据处理。
可选地,在本实施例的一种实现方式中,如图6中虚线框所示,数据处理装置还可以包括数据转换模块63,其用于按照预设的数据结构将接收到的原始数据转换为所述结构化数据。
采用本发明提供的数据处理装置,通过增加所述单链表存储结构使得同一个记录关键元素上的搜索更加灵活。例如当在同一条记录索引了一个关键信息后,如果需要搜索另一个关键元素的上下文,可以直接使用该结点的下一个指向就达到了搜索目的。
可选地,在本实施例的一种实现方式中,如图7所示,所述数据存储模块61包括:地址分配子模块611,用于在所述第一内存区域为每一条数据记录分配一个首结点以及与首结点地址连续的内存地址;数据写入子模块612,用于将每一条数据记录中的数据元素存储于所述地址分配子模块分配的连续的内存地址中,以便根据首结点地址的偏移量访问数据元素。进一步可选地,前文提及的用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针包括指向所述具有相同值的数据元素所属数据记录的首结点地址的指针。
可选地,在本实施例的一种实现方式中,如图7中的虚线框所示,数据存储模块61还包括链表建立子模块613,用于对应每一条维度建立至少一条链表,并且与第一维度对应的链表包含所述首结点;其中,所述首结点的数据域保存指向自身地址的指针,所述第一维度是指从结构化数据中读取数据以写入所述第一内存区域时首先读取的维度。
可选地,在本实施例的一种实现方式中,所述多个链表中的各个链表均包含双向链表存储结构。
可选地,在本实施例的一种实现方式中,所述链表中的对应第k维度的链表中的结点还具有指向对应第k+1维度的链表中的同记录结点的指针,其中,所述同记录结点是指数据源保存有用于访问同一条数据记录中属于不同维度的数据元素的指针的结点,所述k为正整数。
可选地,在本实施例的一种实现方式中,如图8所示,数据处理模块62包括:索引建立子模块621,用于建立满足如下条件的索引结构:Key保存第一指针,value保存第二指针,所述第一指针指向所述结构化数据中的数据元素的实际内存地址,所述第二指针是相应链表的头指针,所述相应链表是数据域保存有用于访问所述第一指针指向的数据元素的指针的链表;数据查找子模块622,用于根据所述索引结构以及所述第二指针指向的链表查找所述结构化数据中的数据元素。
可选地,在本实施例的一种实现方式中,如图6中的虚线框所示,所述数据处理装置还包括切换模块64,其用于将第二内存区域切换为第三内存区域,其中,所述第三内存区域存储有更新的统计指标和计算方法。此时,所述数据处理模块62还用于根据存储于所述第三内存区域的更新的统计指标和计算方法代替存储于所述第二内存区域的统计指标和计算方法进行数据统计。
可选地,在本实施例的一种实现方式中,如图6中的虚线框所示,数据处理装置还可以包括:配置管理模块65,其用于提供用以配置所述更新的统计指标和计算方法的可视化的图形界面;配置写入模块66,其用于将所述更新的统计指标和计算方法写入所述第三内存区域。
当然,在本发明的其它实施例中,第一内存区域、第二内存区域和第三内存区域也可以是本发明提供的数据处理装置的一部分。
本领域技术人员应当理解,本发明提供的数据处理装置可以通过执行本发明提供的数据处理方法实现本发明的目的,因此,在装置实施例中,关于相关名称、术语的解释,关于各个模块/子模块所执行处理或可执行处理的详细说明,以及关于各种不同实现方式所能达到的技术效果的描述,请参见方法实施例中的相应描述,此处不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本领域技术人员应当理解,以上所公开的仅为本发明的实施方式而已,当然不能以此来限定本发明之权利范围,依本发明实施方式所作的等同变化,仍属本发明权利要求所涵盖的范围。
Claims (16)
1.一种基于内存的数据处理方法,其特征在于,所述方法包括:
将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表,每一条链表中的数据域保存用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针;
通过所述多条链表查找所述结构化数据中的数据元素,并根据存储于第二内存区域的统计指标和计算方法进行数据处理;
其中,根据所述结构化数据的维度建立多条链表包括:对应每一条维度建立至少一条链表,并且与第一维度对应的链表包含首结点;其中,所述首结点的数据域保存指向自身地址的指针;其中,所述第一维度是指从结构化数据中读取数据以写入所述第一内存区域时首先读取的维度;
其中,通过所述多条链表查找所述结构化数据中的数据元素包括:建立满足如下条件的索引结构:Key保存第一指针,value保存第二指针,所述第一指针指向所述结构化数据中的数据元素的实际内存地址,所述第二指针是相应链表的头指针,所述相应链表是数据域保存有用于访问所述第一指针指向的数据元素的指针的链表;根据所述索引结构以及所述第二指针指向的链表查找所述结构化数据中的数据元素。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
按照预设的数据结构将接收到的原始数据转换为所述结构化数据。
3.如权利要求1所述的方法,其特征在于,所述将包括多条数据记录的结构化数据写入第一内存区域包括:
在所述第一内存区域为每一条数据记录分配一个首结点和与首结点地址连续的内存地址,将每一条数据记录中的数据元素存储于被分配的连续的内存地址中,以便根据首结点地址的偏移量访问数据元素。
4.如权利要求3所述的方法,其特征在于,用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针包括:
指向所述具有相同值的数据元素所属数据记录的首结点地址的指针。
5.如权利要求1~4中任一项所述的方法,其特征在于,所述多条链表中的各个链表均包含双向链表存储结构。
6.如权利要求5所 述的方法,其特征在于,
所述多条链表中的对应第k维度的链表中的结点还具有指向对应第k+1维度的链表中的同记录结点的指针,其中,所述同记录结点是指数据域保存有用于访问同一条数据记录中属于不同维度的数据元素的指针的结点,所述k为正整数。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第二内存区域切换为第三内存区域;
根据存储于所述第三内存区域的更新的统计指标和计算方法代替存储于所述第二内存区域的统计指标和计算方法进行数据处理。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
通过可视化的图形界面配置所述更新的统计指标和计算方法;
将所述更新的统计指标和计算方法写入所述第三内存区域。
9.一种基于内存的数据处理装置,其特征在于,所述装置包括:
数据存储模块,用于将包括多条数据记录的结构化数据写入第一内存区域,并根据所述结构化数据的维度建立多条链表,每一条链表中的数据域保存有用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针;
数据处理模块,用于通过所述多条链表查找所述结构化数据记录中的数据元素,并根据存储于第二内存区域的统计指标和计算方法进行数据处理;
其中,所述数据存储模块包括:链表建立子模块,用于对应每一条维度建立至少一条链表,并且与第一维度对应的链表包含首结点;其中,所述首结点的数据域保存指向自身地址的指针;其中,所述第一维度是指从结构化数据中读取数据以写入所述第一内存区域时首先读取的维度;
其中,所述数据处理模块包括:索引建立子模块,用于建立满足如下条件的索引结构:Key保存第一指针,value保存第二指针,所述第一指针指向所述结构化数据中的数据元素的实际内存地址,所述第二指针是相应链表的头指针,所述相应链表是数据域保存有用于访问所述第一指针指向的数据元素的指针的链表;数据查找子模块,用于根据所述索引结构以及所述第二指针指向的链表查找所述结构化数据中的数据元素。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
数据转换模块,用于按照预设的数据结构将接收到的原始数据转换为所述结构化数据。
11.如权利要求9所述的装置,其特征在于,所述数据存储模块包括:
地址分配子模块,用于在所述第一内存区域为每一条数据记录分配一个首结点和与首结点地址连续的内存地址;
数据写入子模块,用于将每一条数据记录中的数据元素存储于所述地址分配子模块分配的连续的内存地址中,以便根据首结点地址的偏移量访问数据元素。
12.如权利要求11所述的装置,其特征在于,用于访问属于不同数据记录但属于同一维度且具有相同值的数据元素的指针包括:
指向所述具有相同值的数据元素所属数据记录的首结点地址的指针。
13.如权利要求9~12中任一项所述的装置,其特征在于,所述多条链表中的各个链表均包含双向链表存储结构。
14.如权利要求13所述的装置,其特征在于,
所述链表中的对应第k维度的链表中的结点还具有指向对应第k+1维度的链表中的同记录结点的指针,其中,所述同记录结点是指数据域保存有用于访问同一条数据记录中属于不同维度的数据元素的指针的结点,所述k为正整数。
15.如权利要求9所述的装置,其特征在于,
所述装置还包括切换模块,用于将所述第二内存区域切换为第三内存区域;
所述数据处理模块还用于根据存储于所述第三内存区域的更新的统计指标和计算方法代替存储于所述第二内存区域的统计指标和计算方法进行数据统计。
16.如权利要求15所述的装置,其特征在于,所述装置还包括:
配置管理模块,用于提供用以配置所述更新的统计指标和计算方法的可视化的图形界面;
配置写入模块,用于将所述更新的统计指标和计算方法写入所述第三内存区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510983302.XA CN105653609B (zh) | 2015-12-24 | 2015-12-24 | 基于内存的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510983302.XA CN105653609B (zh) | 2015-12-24 | 2015-12-24 | 基于内存的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105653609A CN105653609A (zh) | 2016-06-08 |
CN105653609B true CN105653609B (zh) | 2019-08-09 |
Family
ID=56476811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510983302.XA Active CN105653609B (zh) | 2015-12-24 | 2015-12-24 | 基于内存的数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653609B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853364B2 (en) * | 2016-09-28 | 2020-12-01 | Microsoft Technology Licensing, Llc | Direct table association in in-memory databases |
CN108920367B (zh) * | 2018-06-28 | 2022-02-15 | 广东工业大学 | 一种数据结构可视化调试方法 |
CN110673952B (zh) * | 2019-09-04 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种面向高并发读应用的数据处理方法及装置 |
CN110580253B (zh) * | 2019-09-10 | 2022-05-31 | 网易(杭州)网络有限公司 | 时序数据组的加载方法、装置、存储介质及电子设备 |
CN112860684A (zh) * | 2019-11-12 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 数据访问方法、装置、设备及存储介质 |
CN111191082B (zh) * | 2019-12-23 | 2023-09-05 | 宁波港信息通信有限公司 | 数据管理方法、装置、计算机设备和存储介质 |
TWI761992B (zh) * | 2020-10-16 | 2022-04-21 | 創鑫智慧股份有限公司 | 資料計算裝置及其操作方法 |
US11972150B2 (en) | 2021-09-29 | 2024-04-30 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware |
CN115878020A (zh) | 2021-09-29 | 2023-03-31 | 慧荣科技股份有限公司 | 编码历程信息的存取方法和计算机可读取存储介质和装置 |
US11860775B2 (en) | 2021-09-29 | 2024-01-02 | Silicon Motion, Inc. | Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware |
CN115933994B (zh) * | 2023-01-09 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
CN101187901A (zh) * | 2007-12-20 | 2008-05-28 | 康佳集团股份有限公司 | 一种实现文件访问的高速缓存系统和方法 |
CN101324846A (zh) * | 2008-07-08 | 2008-12-17 | 国电南瑞科技股份有限公司 | 根据asn.1信息动态创建数据模型的方法 |
CN104899156A (zh) * | 2015-05-07 | 2015-09-09 | 中国科学院信息工程研究所 | 一种面向大规模社交网络的图数据存储及查询方法 |
-
2015
- 2015-12-24 CN CN201510983302.XA patent/CN105653609B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
CN101187901A (zh) * | 2007-12-20 | 2008-05-28 | 康佳集团股份有限公司 | 一种实现文件访问的高速缓存系统和方法 |
CN101324846A (zh) * | 2008-07-08 | 2008-12-17 | 国电南瑞科技股份有限公司 | 根据asn.1信息动态创建数据模型的方法 |
CN104899156A (zh) * | 2015-05-07 | 2015-09-09 | 中国科学院信息工程研究所 | 一种面向大规模社交网络的图数据存储及查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105653609A (zh) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653609B (zh) | 基于内存的数据处理方法及装置 | |
Venkatraman et al. | SQL versus NoSQL movement with big data analytics | |
CN104915450B (zh) | 一种基于HBase的大数据存储与检索方法及系统 | |
Junghanns et al. | Management and analysis of big graph data: current systems and open challenges | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
Aboutorabiª et al. | Performance evaluation of SQL and MongoDB databases for big e-commerce data | |
Gupta et al. | Cloud computing and big data analytics: what is new from databases perspective? | |
CN104767813B (zh) | 基于openstack的公众行大数据服务平台 | |
US20180210934A1 (en) | Systems and methods for interest-driven business intelligence systems including event-oriented data | |
CN104205039B (zh) | 使用兴趣驱动数据管线进行数据分析的兴趣驱动商业智能系统和方法 | |
CN102214176B (zh) | 超大维表的切分与表连接方法 | |
CN106708993A (zh) | 基于大数据技术的空间数据存储处理中间件框架实现方法 | |
CN106462578A (zh) | 数据库条目查询和更新的方法 | |
Liang et al. | Express supervision system based on NodeJS and MongoDB | |
CN105989129A (zh) | 实时数据统计方法和装置 | |
US20150081353A1 (en) | Systems and Methods for Interest-Driven Business Intelligence Systems Including Segment Data | |
CN104572809B (zh) | 一种分布式关系数据库自由扩展方法 | |
Gupta et al. | Faster as well as early measurements from big data predictive analytics model | |
Caldarola et al. | Big data: A survey-the new paradigms, methodologies and tools | |
Matei et al. | Column-oriented databases, an alternative for analytical environment | |
Ranawade et al. | Online analytical processing on hadoop using apache kylin | |
CN110134511A (zh) | 一种OpenTSDB共享存储优化方法 | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
Delchev et al. | Big Data Analysis Architecture | |
CN111062603B (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 |