CN105117403A - 日志数据分片与查询方法及装置 - Google Patents
日志数据分片与查询方法及装置 Download PDFInfo
- Publication number
- CN105117403A CN105117403A CN201510420190.7A CN201510420190A CN105117403A CN 105117403 A CN105117403 A CN 105117403A CN 201510420190 A CN201510420190 A CN 201510420190A CN 105117403 A CN105117403 A CN 105117403A
- Authority
- CN
- China
- Prior art keywords
- log information
- entity
- coding
- daily record
- data fragmentation
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种日志数据分片与查询方法及装置。该方法包括:获取日志数据中各个实体的编码,并对每个实体编码进行哈希操作,获取一个数据分片,然后对每个数据分片中的日志信息按照日志信息的实体的编码进行顺序排序,获取数据分组列表,根据实体的编码完成日志数据的查询,本发明的方法,数据查询效率高,加快了对日志数据的分析,从而获得更加科学的决策。
Description
技术领域
本发明涉及计算机领域的数据处理技术,尤其涉及一种日志数据分片与查询方法及装置。
背景技术
近几年来,计算机系统中日志数据的应用十分普遍,任何程序都会产生大量的日志数据,如果对这些日志数据进行深入分析,可以了解到日志数据中各类实体的特征,以便做出更加科学的决策。其中,上述数据的实体为人、物体、机器人等需要进行研究分析其行为记录的对象。
目前,传统方法主要采用的是基于时间戳字段范围的划分方法,把日志数据按照时间进行分片,然后按照时间戳对日志数据进行查询。
但是,传统的基于时间戳字段的范围划分方法查询,查询实体对应的日志数据速度较慢,无法满足高实时性分析处理的要求。
发明内容
本发明提供一种日志数据分片与查询方法及装置,可以快速查询实体对应的日志数据,从而满足了高实时性分析处理的要求。
本发明第一方面提供一种日志数据分片与查询方法,该日志数据包括至少一个实体;所述方法包括:
获取日志数据中的各个实体的编码;其中,每个所述实体对应至少一条日志信息;
对每个所述实体的编码进行哈希操作,获取至少一个数据分片;所述数据分片中包括所述实体对应的日志信息;
对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;其中,所述数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息;
根据所述数据分组列表查询所述日志数据。
本发明第二方面提供一种日志数据分片与查询装置,包括:编码获取模块、数据分片获取模块、数据分组列表获取模块和数据查找模块;
所述编码获取模块,用于获取日志数据中的各个实体的编码;其中,每个所述实体对应至少一条日志信息;
所述数据分片获取模块,用于对每个所述实体的编码进行哈希操作,获取至少一个数据分片;所述数据分片中包括所述实体对应的日志信息;
所述数据分组列表获取模块,用于对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;其中,所述数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息;
所述数据查找模块,用于根据所述数据分组列表查询所述日志数据。
本发明提供的日志数据分片与查询方法及装置,通过获取日志数据中各个实体的编码,并对每个实体编码进行哈希操作,获取至少一个数据分片,然后对每个数据分片中的日志信息按照日志信息中实体的编码进行顺序排序,获取数据分片对应的数据分组列表,根据数据分组列表中实体的编码完成日志数据的查询。本发明的方法,基于实体的编码对日志信息进行排序和数据分片,从而使得计算机处理器可以根据数据分组列表中实体的编码查询该实体对应的日志数据,由于数据分片中的日志信息是顺序排序的,因此数据查询效率高,加快了对日志数据的分析。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的日志数据分片与查询方法实施例一的流程图;
图2为本发明提供的哈希操作示意图一;
图3为本发明提供的日志数据分片与查询方法实施例二的流程图;
图4为本发明提供的哈希操作示意图二;
图5为本发明提供的哈希操作示意图三;
图6为本发明提供的日志数据分片与查询装置实施例一的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明涉及的执行主体可以为计算机处理器,该计算机处理器可以是集成电路、智能控制器、电脑等,但并不限于此。
本发明涉及的方法,旨在解决现有技术中传统的基于时间戳字段的范围划分方法,查询实体对应的日志数据速度较慢的技术问题,无法满足高实时性分析处理的要求。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明提供的日志数据分片与查询方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
步骤101、获取日志数据中的各个实体的编码;其中,每个所述实体对应至少一条日志信息。
具体的,日志数据往往是用于记录计算机或者用户采用计算机执行了什么过程的数据,其可以包括至少一条日志信息,但实际应用中,日志数据中包括大量的日志信息。例如,用户A在2015年1月22日购买了一件商品A,这就是日志数据中的某一条日志信息,该条日志信息包括了两个实体,分别是用户A和商品A。故,上述日志数据可以包括至少一个实体。其中,该日志数据也可以记录同一类型实体或者不同类型实体之间的交互历史信息,例如:用户对商品的浏览购买行为、用户和好友之间的交互行为等,在此,用户、商品等都属于实体,但是他们属于不同类型的实体,而用户和好友则是同一类型的实体,但是角色不同。
相应的,由计算机处理器获取日志数据中各个实体的编码,其中该日志数据中包括的所有实体,不管是同一类型还是不同类型的实体,均可以按照一定的规则进行编码,其中,可以采用前缀编码的方式,还可以采用编码列表分配的方式,但并不以此为限。可选的,这里的编码可以理解为号码映射,即对每一个实体进行一次号码映射,让每一个实体具有自己的编码,且该编码计算机易读取。
上述日志信息可以记录实体的两元关系,比如用户对商品的一次购买记录,也可以记录实体的三元关系,比如用户和好友的互动,可能会涉及介绍人,但并不以此为限。上述所说的每个实体对应至少一条日志信息,即同一个实体在至少一条日志信息中出现,例如:用户A购买了商品B,用户A购买了商品C,用户M购买了商品B,其中用户A对应有两条日志信息,用户M对应有一条日志信息,而商品B对应有两条日志信息,商品C对应有一条日志信息。
步骤102、对每个所述实体的编码进行哈希操作,获取至少一个数据分片;所述数据分片中包括所述实体对应的日志信息;
具体的,计算机处理器对每个实体的编码进行哈希操作,即通过采用哈希函数对每个实体的编码进行划分并将该实体对应的日志信息放入至少一个哈希桶中,直至该实体对应的日志信息存满哈希桶为止,从而获取到至少一个数据分片,即每个哈希桶对应一个数据分片。其中,数据分片中包括该实体对应的日志信息,由于哈希桶的数量有限,所以针对不同的实体的日志信息,可能会被划分到同一个哈希桶。
为了更好的说明步骤102中的获取数据分片的过程,下述举一个简单的例子来进行说明:假设日志数据中包括5条日志信息,分别为:用户A购买了商品A,用户A购买了商品B,用户A购买了商品C,用户B购买了商品D,用户C购买了商品E。则上述日志数据中的实体包括:用户A、用户B、用户C、商品A、商品B、商品C、商品D和商品E,上述实体为两种不同类型的实体。
对上述各个实体进行编码,在该例子中,对不同类型的实体分别进行编码,可以为:用户A的编码为000,用户B的编码为001,用户C的编码为002,商品A的编码为300,商品B的编码为301,商品C的编码为302,商品D的编码为303,商品E的编码为304。
则上述日志数据包括的日志信息如下:
日志信息1:用户000,商品300;
日志信息2:用户000,商品301;
日志信息3:用户000,商品302;
日志信息4:用户001,商品303;
日志信息5:用户002,商品304。
假设采用对3进行取模的哈希函数,即任何自然数对3进行取模(除以3的余数)的结果是0、1、2,由计算机处理器根据各个实体的编码完成哈希操作。具体为:将用户的编码和商品的编码分别除以3余0的日志信息放入哈希桶0内,将用户的编码和商品的编码分别除以3余1的日志信息放入哈希桶1内,将用户的编码和商品的编码分别除以3余2的日志信息放入哈希桶2内。图2为本发明提供的哈希操作示意图一,具体的划分可以参见图2所示,哈希桶0内包括日志信息1、日志信息2、日志信息3和日志信息4,哈希桶1内包括日志信息2、日志信息4和日志信息5,哈希桶2内包括日志信息3和日志信息5。哈希桶0对应的数据分片包括对用户的编码取模余0的用户A购买商品的日志信息和对商品的编码取模余0的商品D被用户购买的日志信息,哈希桶1对应的数据分片包括对用户的编码取模余1的用户B购买商品的日志信息和对商品的编码取模余1的商品B和商品D被用户购买的日志信息,哈希桶2对应的数据分片包括对用户的编码取模余2的用户C购买商品的日志信息和对商品的编码取模余2的商品B被用户购买的的日志信息。
其中,对于用户的编码和商品的编码都进行哈希操作时,其对应的相同的日志信息会被划分在不同的哈希桶里,这样就会出现日志信息的冗余,如上述哈希桶1和哈希桶2中都有日志信息5。一般复制参数设定为2,对于两元关系来讲,数据的冗余将是2*2=4份。但是可以将日志数据进行压缩存放,从而进一步缩小空间占用,因此,日志数据对于冗余的存储开销是可以接受的。
步骤103、对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;其中,所述数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息。
具体的,计算机处理器可以将隶属于某个用户对商品的所有购买行为(即该用户对应的多条日志信息)将被划分到同一个数据分片,也可以将不同用户对商品的所有购买行为(即不同用户对应的多条日志信息)将被划分到同一个数据分片;然后对每个数据分片中的日志信息按照日志信息对应的实体的编码进行顺序排列,如果实体的编码为数字,可以按照数字的大小顺序来进行排序,如果实体的编码为字母,可以按照字母的前后顺序来进行排序,但并不以此限;最后获取到数据分片对应的数据分组列表,其中,该数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息。
继续参见上述步骤102中的例子,对每个数据分片进行排序,假设对上述哈希桶0对应的数据分片中的日志信息按照用户的编码的大小顺序进行排序,则其获得的哈希桶0对应的数据分片包括的数据分组列表为:
用户000,商品300;
用户000,商品301;
用户000,商品302;
用户001,商品303。
其中,哈希桶0中的数据分组列表中包括用户的编码为000对应的数据分组和用户的编码为001对应的数据分组,即用户A的数据分组包括用户A购买商品A、商品B、商品C的日志信息,用户B的数据分组包括用户B购买商品D的日志信息。
步骤104、根据所述数据分组列表查询所述日志数据。
具体的,如果需要查询某个实体对应的所有日志数据,例如是查询某个用户干了什么事情,可以直接根据其用户的编码,即可以完成查询该实体的日志数据的提取。继续参见上述步骤103中的例子,假设要查询用户A是否购买了商品A,则只需要根据数据分组列表中用户A的编码查询即可。
本发明提供的日志数据分片与查询方法,通过获取日志数据中各个实体的编码,并对每个实体编码进行哈希操作,获取至少一个数据分片,然后对每个数据分片中的日志信息按照日志信息的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表,根据所述数据分组列表完成日志数据的查询,本发明的方法,基于实体的编码对日志信息进行排序和数据分片,从而使得计算机处理器可以根据数据分组列表中实体的编码查询该实体对应的日志数据,由于数据分组列表中的日志信息是顺序排序的,因此数据查询效率高,加快了对日志数据的分析。
图3为本发明提供的日志数据分片与查询方法实施例二的流程图。本实施例涉及的是获取日志数据中各个实体编码的具体过程。在上述实施例的基础上,如图3所示,上述步骤101具体包括:
步骤301、根据日志数据中各个实体之间的关系,将该日志数据中的所有实体划分为主实体和从实体。
具体的,根据上述日志数据中各个实体之间的关系,如果上述日志数据中的实体在二元关系中,例如:实体包括用户和商品,通过他们之间的购买关系,可以将用户划分为主实体,商品划分为从实体;如果上述日志数据中的实体在三元关系中,例如:实体包括用户、好友、介绍人,通过他们之间的互动关系,可以将用户划分为主实体,好友、介绍人可以划分为从实体,但并不以此为限。
步骤302、对主实体进行编码。
步骤303、对从实体进行编码;其中,主实体的编码与从实体的编码不重复。
具体的,计算机处理器对上述实体进行编码,不管主实体和从实体是同一类型还是不同类型,均可以按照一定的规则进行的编码,但是主实体和从实体的编码是不重复的,并在统一的地址空间进行编码。在实际应用中,采用前缀编码的方式,例如:主实体为用户时,该用户编码可以采用U0到Un,从实体为商品时,该商品编码可以采用P0到Pn;采用编码列表分配的方式,例如:可以将00001-01000分配给主实体为用户的作为用户编码,将01001-10000分配给从实体为好友的作为好友编码,将02001-20000分配给从实体为好友的作为介绍人编码,但并不以此为限。
在上述实施例的基础上,作为本发明的第一种可能的实施方式,本实施例涉及的是对数据分片按照主实体的编码进行排序,获取该数据分片对应的数据分组列表的具体过程。则上述步骤103具体包括:对每个数据分片中的日志信息按照日志信息对应的主实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;上述步骤104具体包括:根据所述数据分组列表中的主实体的编码查询所述日志数据。
具体的,为了更好的说明步骤103中的获取所述数据分片对应的数据分组列表的过程,下述举一个简单的例子来进行说明:假设日志数据中包括7条日志信息,用户A购买了商品A和商品B,用户B购买了商品B,用户C购买了商品C,用户D购买了商品A和商品B,用户E购买了商品B。则上述日志数据中的实体包括:用户A、用户B、用户C、用户D、用户E、商品A、商品B、商品C,假设用户为主实体,商品为从实体,其中,上述实体的编码可以为:用户A的编码为000,用户B的编码为001,用户C的编码为002,用户D的编码为003,用户E的编码为004,商品A的编码为300,商品B的编码为301,商品C的编码为302,则日志数据包括的日志信息如下:
日志信息1:用户000,商品300;
日志信息2:用户000,商品301;
日志信息3:用户001,商品301;
日志信息4:用户002,商品302;
日志信息5:用户003,商品300;
日志信息6:用户003,商品301;
日志信息7:用户004,商品301。
假设采用对3进行取模的哈希函数,由计算机处理器根据主实体的编码完成哈希操作,即将用户的编码和商品的编码分别除以3余0的日志信息放入哈希桶0内,将用户的编码和商品的编码分别除以3余1的日志信息放入哈希桶1内,将用户的编码和商品的编码分别除以3余2的日志信息放入哈希桶2内。图4为本发明提供的哈希操作示意图二,具体的划分可以参见图4所示,哈希桶0内包括日志信息1、日志信息2、日志信息5和日志信息6,哈希桶1内包括日志信息2、日志信息3、日志信息6和日志信息7,哈希桶2内包括日志信息4,由此可见:哈希桶0对应的数据分片包括对用户的编码取模余0的用户A和用户D购买商品的日志信息,同时还包括对商品的编码取模余0的商品A被用户购买的日志信息;哈希桶1对应的数据分片包括对用户的编码取模余1的用户B和用户E购买商品的日志信息,同时还包括对商品的编码取模余1的商品B被用户购买的日志信息;哈希桶2对应的数据分片包括对用户的编码取模余2的用户C购买商品的日志信息,同时还包括对商品的编码取模余2的商品C被用户购买的日志信息。
在数据分片划分完成之后,对每个数据分片进行排序。以对哈希桶0对应的数据分片进行排序为例,即根据主实体的编码从小到大进行排序,其最后获得的哈希桶0对应的数据分片包括的数据分组列表为:
用户000,商品301;
用户000,商品300;
用户003,商品301;
用户003,商品300。
其中,哈希桶0中的数据分组列表中包括用户的编码为000和用户的编码为003对应的数据分组,即用户A的数据分组包括用户A购买商品A、商品B的日志信息,用户D的数据分组包括用户D购买商品A、商品B的日志信息。
如果需要查询某个用户的购买行为,就只需要根据数据分组列表中该用户的编码(即主实体的编码)查询日志数据即可。
作为本发明的第二种可能的实施方式,本实施例涉及的是计算机处理器对数据分片按照主实体的编码进行排序后,继续按照从实体的编码进行排序,获取该数据分片对应的数据分组列表的具体过程。则上述步骤103具体包括:对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序后,对排序后的数据分片中的日志信息按照所述日志信息对应的从实体的编码再次进行顺序排序,获取所述数据分片对应的数据分组列表;上述步骤104具体包括:根据所述数据分组列表中的主实体的编码或者从实体的编码查询所述日志数据。
继续参见上述第一种可能的实施方式中的所举的例子(针对图4所示的哈希桶0对应的数据分片),计算机处理器在获取根据主实体编码排序的数据分组列表之后,继续按照从实体的编码进行排序,则在该例子中,首先对按照主实体的编码进行排序后的隶属于用户A的日志信息,再次按照从实体的编码进行排序,然后再对隶属于用户D的日志信息再次按照从实体的编码进行排序。最终的排序结果为:
用户000商品300;
用户000商品301;
用户003商品300;
用户003商品301。
由上述排序可知,计算机处理器对数据分片按照主实体的编码进行排序后,继续按照从实体的编码进行排序,实际上将数据分片中的所有日志信息按照主实体的编码进行排序后,然后针对隶属于同一个主实体的日志信息再次按照从实体的编码进行排序。如果需要查询某个用户的购买行为,就只需要按照数据分组列表中该用户的编码查询即可;如果需要查询某个商品被哪个用户所购买,就只需要按照数据分组列表中该商品的编码查询即可。
作为本发明的第三种可能的实施方式,本实施例涉及的是计算机处理器在获取日志数据中的各个实体的编码之前,还包括:获取日志数据中每一条日志信息的时间戳字段,在对数据分片按照主实体的编码进行排序后,继续按照从实体的编码进行排序,然后按照日志信息的时间戳字段进行排序,获取所述数据分片对应的数据分组列表的具体过程。则上述步骤103具体包括:对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序,对排序后的数据分片中的日志信息按照所述日志信息对应的从实体的编码再次进行顺序排序,对排序后的数据分片中的日志信息按照所述日志信息的时间戳字段再次进行顺序排序,获取所述数据分片对应的数据分组列表;上述步骤104具体包括:根据所述数据分组列表中的主实体的编码或者从实体的编码或者日志信息的时间戳字段查询所述日志数据。
具体的,日志数据中每一条日志信息都记录了时间戳字段,即最小时间戳和最大时间戳,计算机处理器会在获取实体编码的同时,获取日志数据中每一条日志信息的时间戳字段,该时间戳字段用于表征该日志信息所发生的时刻,这样可以方便快速过滤数据分片。
继续参见上述第二种可能实施的方式的步骤103中的例子(针对图4所示的哈希桶0对应的数据分片),计算机处理器在获取日志数据中的各个实体的编码之前,还获取日志数据中每一条日志信息的时间戳字段,则日志数据包括的日志信息如下:
日志信息1:用户000,商品300,2015-01-01;
日志信息2:用户000,商品301,2015-01-02;
日志信息3:用户001,商品301,2015-01-01;
日志信息4:用户002,商品302,2015-01-01;
日志信息5:用户003,商品300,2015-01-02;
日志信息6:用户003,商品301,2015-01-03;
日志信息7:用户004,商品301,2015-01-03。
相应地,计算机处理器在获取根据主实体编码排序的数据分片之后,继续按照从实体的编码进行排序,最后按照日志信息的时间戳字段进行排序,则在上述例子中,即在根据上述第二种可能的实施方式中的技术方案获取所述数据分片对应的数据分组列表之后,再次根据日志信息的时间戳字段再次进行顺序排序,即在首先对按照主实体的编码进行排序后的隶属于用户A的日志信息的数据分组,再次按照从实体的编码进行排序,然后再对隶属于用户D的日志信息的数据分组再次按照从实体的编码进行排序,最后将上述排序好的日志信息按照时间戳进行排序,最终的数据分组列表排序结果为:
用户000,商品300,2015-01-01;
用户000,商品301,2015-01-02;
用户003,商品300,2015-01-02;
用户003,商品301,2015-01-03。
如果需要查询某个用户的购买行为,就只需要按照数据分组列表中该用户的编码查询即可;如果需要查询某个商品给哪个用户所购买,就只需要按照数据分组列表中该商品的编码查询即可;如果需要查询哪个时间段哪些用户购买了哪些商品,则只需要按照数据分组列表中该时间戳字段查询即可。
本发明提供的日志数据分片与查询方法,通过获取日志数据中各个实体的编码,并对每个实体编码进行哈希操作,获取至少一个数据分片,然后对每个数据分片中的日志信息按照日志信息的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表,根据数据分组列表中实体的编码完成日志数据的查询,本发明的方法,基于实体的编码对日志信息进行排序和数据分片,从而使得计算机处理器可以根据数据分组列表中实体的编码查询该实体对应的日志数据,由于数据分片中的日志信息是顺序排序的,因此数据查询效率高,加快了对日志数据的分析,从而获得更加科学的决策。
作为本发明的第四种可能的实施方式,本实施例涉及的是对数据分片按照从实体的编码进行排序,获取数据分片对应的数据分组列表的具体过程。则上述步骤103具体包括:对每个数据分片中的日志信息按照日志信息对应的从实体的编码进行顺序排序,获取数据分片对应的数据分组列表;上述步骤104具体包括:根据数据分组列表中的从实体的编码查询日志数据。
具体的,为了更好的说明步骤103中的获取数据分片对应的数据分组列表的过程,下述举一个简单的例子来进行说明:假设日志数据中包括7条日志信息,用户A购买了商品A和商品B,用户B购买了商品B,用户C购买了商品C,用户D购买了商品D和商品E,用户E购买了商品E。则上述日志数据中的实体包括:用户A、用户B、用户C、用户D、用户E、商品A、商品B、商品C、商品D、商品E,假设用户为主实体,商品为从实体,其中,上述实体的编码可以为:用户A的编码为000,用户B的编码为001,用户C的编码为002,用户D的编码为003,用户E的编码为004,商品A的编码为300,商品B的编码为301,商品C的编码为302,商品D的编码为303,商品E的编码为304,则日志数据包括的日志信息如下:
日志信息1:用户000,商品300;
日志信息2:用户000,商品301;
日志信息3:用户001,商品301;
日志信息4:用户002,商品302;
日志信息5:用户003,商品303;
日志信息6:用户003,商品304;
日志信息7:用户004,商品304。
假设采用对3进行取模的哈希函数,由计算机处理器根据从实体的编码完成哈希操作,即将商品的编码和用户的编码分别除以3余0的日志信息放入哈希桶0内,将商品的编码和用户的编码分别除以3余1的日志信息放入哈希桶1内,将商品的编码和用户的编码分别除以3余2的日志信息放入哈希桶2内。图5为本发明提供的哈希操作示意图三,具体的划分可以参见图5所示,哈希桶0内包括日志信息1、日志信息2、日志信息5和日志信息6,哈希桶1内包括日志信息2、日志信息3、日志信息6和日志信息7,哈希桶2内包括日志信息4,由此可见:哈希桶0对应的数据分片包括对商品编码取模余0的商品A和商品D被用户购买的日志信息,同时还包括对用户的编码取模余0的用户A和用户D购买商品的日志信息;哈希桶1对应的数据分片包括对商品编码取模余1的商品B和商品E被用户购买的日志信息,同时还包括对用户的编码取模余1的用户B和用户E购买商品的日志信息;哈希桶2对应的数据分片包括对商品编码取模余2的商品C被用户购买的日志信息,同时还包括对用户的编码取模余2的用户C购买商品的日志信息。
在数据分片划分完成之后,对每个数据分片进行排序。以对哈希桶1对应的数据分片进行排序为例,即根据从实体的编码从小到大进行排序,其获得的哈希桶1对应的数据分片包括的数据分组列表为:
用户001,商品301;
用户000,商品301;
用户004,商品304;
用户003,商品304。
其中,哈希桶1中的数据分组列表中包括商品编码为301和商品编码为304对应的数据分组,商品B的数据分组包括商品B被用户A和用户B购买的日志信息,商品E的数据分组包括商品E被用户D和用户E购买的日志信息。
如果需要查询某个商品的被购买行为,就只需要根据数据分组列表中该商品的编码(即从实体的编码)查询即可。
作为本发明的第五种可能的实施方式,本实施例涉及的是计算机处理器对数据分片按照从实体的编码进行排序后,继续按照主实体的编码进行排序,获取数据分片对应的数据分组列表的具体过程。则上述步骤103具体包括:对每个所述数据分片中的日志信息按照所述日志信息对应的从实体的编码进行顺序排序后,对排序后的数据分片中的日志信息按照所述日志信息对应的主实体的编码再次进行顺序排序,获取所述数据分片对应的数据分组列表;上述步骤104具体包括:根据所述数据分组列表中的从实体的编码或者主实体的编码查询所述日志数据。
继续参见上述第四种可能的实施方式中的所举的例子(针对图5所示的哈希桶1对应的数据分片),计算机处理器在获取根据从实体编码排序的数据分组列表之后,继续按照主实体的编码进行排序,则在该例子中,对按照从实体的编码进行排序后的隶属于商品B的日志信息,再次按照主实体的编码进行排序,然后再对隶属于商品E的日志信息再次按照主实体的编码进行排序。最终的排序结果为:
用户000,商品301;
用户001,商品301;
用户003,商品304;
用户004,商品304。
由上述排序可知,计算机处理器对数据分片按照从实体的编码进行排序后,继续按照主实体的编码进行排序,实际上将数据分片中的所有日志信息按照从实体的编码进行排序后,然后针对隶属于同一个从实体的日志信息再次按照主实体的编码进行排序。如果需要查询某个商品的被购买行为,就只需要按照数据分组列表中该商品的编码查询即可;如果需要查询某个商品被某个用户购买了,就只需要按照数据分组列表中该用户的编码查询即可。
作为本发明的第六种可能的实施方式,本实施例涉及的是计算机处理器在获取日志数据中的各个实体的编码之前,还包括:获取日志数据中每一条日志信息的时间戳字段,在对数据分片按照从实体的编码进行排序后,继续按照主实体的编码进行排序,然后按照日志信息的时间戳字段进行排序,获取数据分片对应的数据分组列表的具体过程。则上述步骤103具体包括:对每个所述数据分片中的日志信息按照所述日志信息对应的从实体的编码进行顺序排序,对排序后的数据分片中的日志信息按照所述日志信息对应的主实体的编码再次进行顺序排序,对排序后的数据分片中的日志信息按照所述日志信息的时间戳字段再次进行顺序排序,获取所述数据分片对应的数据分组列表;上述步骤104具体包括:根据所述数据分组列表中的从实体的编码或者从实体的编码或者日志信息的时间戳字段查询所述日志数据。
具体的,日志数据中每一条日志信息都记录了时间戳字段,即最小时间戳和最大时间戳,计算机处理器会在获取实体编码的同时,获取日志数据中每一条日志信息的时间戳字段,该时间戳字段用于表征该日志信息所发生的时刻,这样可以方便快速过滤数据分片。
继续参见上述第五种可能实施的方式的步骤103中的例子,计算机处理器在获取日志数据中的各个实体的编码之前,还获取日志数据中每一条日志信息的时间戳字段,则日志数据包括的日志信息如下:
日志信息1:用户000,商品300,2015-01-01;
日志信息2:用户000,商品301,2015-01-02;
日志信息3:用户001,商品301,2015-01-03;
日志信息4:用户002,商品302,2015-01-01;
日志信息5:用户003,商品303,2015-01-01;
日志信息6:用户003,商品304,2015-01-02;
日志信息7:用户004,商品304,2015-01-03。
相应地,计算机处理器在获取根据主实体编码排序的数据分片之后,继续按照从实体的编码进行排序,最后按照日志信息的时间戳字段进行排序,则在上述例子中(针对图5所示的哈希桶1对应的数据分片),即在根据上述第五种可能的实施方式中的技术方案获取数据分片对应的数据分组列表之后,再次根据日志信息的时间戳字段再次进行顺序排序,即在对按照从实体的编码进行排序后的隶属于商品B的日志信息,再次按照主实体的编码进行排序,然后再对隶属于商品E的日志信息再次按照主实体的编码进行排序,最后将上述排序好的日志信息按照时间戳进行排序,最终的排序结果为:
用户000,商品301,2015-01-01;
用户001,商品301,2015-01-02;
用户003,商品304,2015-01-02;
用户004,商品304,2015-01-03。
如果需要查询某个商品被购买的行为,就只需要按照数据分组列表中该商品的编码查询即可;如果需要查询某个商品被哪个用户所购买,就只需要按照数据分组列表中该用户的编码查询即可;如果需要查询哪些商品在哪个时间段被用户购买,则只需要按照数据分组列表中的该时间戳字段查询即可。
本发明提供的日志数据分片与查询方法,通过获取日志数据中各个实体的编码,并对每个实体编码进行哈希操作,获取至少一个数据分片,然后对每个数据分片中的日志信息按照日志信息的实体的编码进行顺序排序,获取数据分片对应的数据分组列表,根据数据分组列表中实体的编码完成日志数据的查询,本发明的方法,基于实体的编码对日志信息进行排序和数据分片,从而使得计算机处理器可以根据数据分组列表中实体的编码查询该实体对应的日志数据,由于数据分片中的日志信息是顺序排序的,因此数据查询效率高,加快了对日志数据的分析,从而获得更加科学的决策。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图6为本发明提供的日志数据分片与查询装置实施例一的结构示意图,如图6所示,该装置包括:编码获取模块601、数据分片获取模块602、数据分组列表获取模块603和数据查找模块604。
其中,所述编码获取模块601,用于获取日志数据中的各个实体的编码;其中,每个所述实体对应至少一条日志信息。
所述数据分片获取模块602,用于对每个所述实体的编码进行哈希操作,获取至少一个数据分片;所述数据分片中包括所述实体对应的日志信息。
所述数据分组列表获取模块603,用于对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;其中,所述数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息。
所述数据查找模块604,用于根据数据分组列表查询所述日志数据。
本发明提供的日志数据分片与查询装置,可以执行图1方法实施例,其实现原理和技术效果类似,在此不再赘述。
进一步地,上述编码获取模块601具体用于根据所述日志数据中各个实体之间的关系,将所述日志数据中的所有实体划分为主实体和从实体;并对所述主实体进行编码以及对所述从实体进行编码;其中,所述主实体的编码与所述从实体的编码不重复。
本发明提供的日志数据分片与查询装置,可以执行图3方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种日志数据分片与查询方法,其特征在于,所述日志数据包括至少一个实体;所述方法包括:
获取日志数据中的各个实体的编码;其中,每个所述实体对应至少一条日志信息;
对每个所述实体的编码进行哈希操作,获取至少一个数据分片;所述数据分片中包括所述实体对应的日志信息;
对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;其中,所述数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息;
根据所述数据分组列表查询所述日志数据。
2.根据权利要求1所述的方法,其特征在于,所述获取日志数据中的每个实体的编码,具体包括:
根据所述日志数据中各个实体之间的关系,将所述日志数据中的所有实体划分为主实体和从实体;
对所述主实体进行编码;
对所述从实体进行编码;其中,所述主实体的编码与所述从实体的编码不重复。
3.根据权利要求2所述的方法,其特征在于,所述对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表,具体包括:
对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序,获取所述数据分片对应的所述数据分组列表;
则根据所述数据分组列表查询所述日志数据,包括:
根据所述数据分组列表中的主实体的编码查询所述日志数据。
4.根据权利要求3所述的方法,其特征在于,所述对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序,获取所述数据分片对应的所述数据分组列表,具体包括:
对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序后,对排序后的数据分片中的日志信息按照所述日志信息对应的从实体的编码再次进行顺序排序,获取所述数据分片对应的所述数据分组列表;
则根据所述数据分组列表查询所述日志数据,包括:
根据所述数据分组列表中的主实体的编码或者从实体的编码查询所述日志数据。
5.根据权利要求4所述的方法,其特征在于,所述获取日志数据中的各个实体的编码之前,所述方法还包括:获取所述日志数据中每一条日志信息的时间戳字段;
所述对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序后,对排序后的数据分片中的日志信息按照所述日志信息对应的从实体的编码再次进行顺序排序,获取所述数据分片对应的所述数据分组列表,包括:
对每个所述数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序;
对排序后的数据分片中的日志信息按照所述日志信息对应的从实体的编码再次进行顺序排序;
对排序后的数据分片中的日志信息按照所述日志信息的时间戳字段再次进行顺序排序,获取所述数据分片对应的所述数据分组列表;
则根据所述数据分组列表查询所述日志数据,包括:
根据所述数据分组列表中的主实体的编码或者从实体的编码或者日志信息的时间戳字段查询所述日志数据。
6.根据权利要求2所述的方法,其特征在于,对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码顺序排序,获取所述数据分片对应的所述数据分组列表,具体包括:
对每个所述数据分片中的日志信息按照所述日志信息对应的从实体的编码进行顺序排序,获取所述数据分片对应的所述数据分组列表;
则根据所述数据分组列表查询所述日志数据,包括:
根据所述数据分组列表中的从实体的编码查询所述日志数据。
7.根据权利要求6所述的方法,其特征在于,所述对每个所述数据分片中的日志信息按照所述日志信息对应的从实体的编码进行顺序排序,获取所述数据分片对应的所述数据分组列表,具体包括:
对每个所述数据分片中的日志信息按照所述日志信息对应的从实体的编码进行顺序排序后,对排序后的数据分片中的日志信息按照所述日志信息对应的主实体的编码进行顺序排序,获取所述数据分片对应的所述数据分组列表;
则根据所述数据分组列表查询所述日志数据,包括:
根据所述数据分组列表中的主实体的编码或者从实体的编码查询所述日志数据。
8.根据权利要求7所述的方法,其特征在于,所述获取日志数据中的各个实体的编码之前,所述方法还包括:获取所述日志数据中每一条日志信息的时间戳字段;
所述对每个所述数据分片中的日志信息按照所述日志信息对应的主从实体的编码进行顺序排序后,对排序后的数据分片中的日志信息按照所述日志信息对应的主实体的编码再次进行顺序排序,获取所述数据分片对应的所述数据分组列表,包括:
对每个所述数据分片中的日志信息按照所述日志信息对应的从实体的编码进行顺序排序;
对排序后的数据分片中的日志信息按照所述日志信息对应的主实体的编码再次进行顺序排序;
对排序后的数据分片中的日志信息按照所述日志信息的时间戳字段再次进行顺序排序,获取所述数据分片对应的所述数据分组列表;
则根据所述数据分组列表查询所述日志数据,包括:
根据所述数据分组列表中的主实体的编码或者从实体的编码或者日志信息的时间戳字段查询所述日志数据。
9.一种日志数据分片与查询装置,其特征在于,包括:编码获取模块、数据分片获取模块、数据分组列表获取模块和数据查找模块;
所述编码获取模块,用于获取日志数据中的各个实体的编码;其中,每个所述实体对应至少一条日志信息;
所述数据分片获取模块,用于对每个所述实体的编码进行哈希操作,获取至少一个数据分片;所述数据分片中包括所述实体对应的日志信息;
所述数据分组列表获取模块,用于对每个所述数据分片中的日志信息按照所述日志信息对应的实体的编码进行顺序排序,获取所述数据分片对应的数据分组列表;其中,所述数据分组列表包括多个数据分组,一个数据分组包括所有同一编码的实体对应的日志信息;
所述数据查找模块,用于根据所述数据分组列表查询所述日志数据。
10.根据权利要求9所述的装置,其特征在于,所述编码获取模块,具体用于根据所述日志数据中各个实体之间的关系,将所述日志数据中的所有实体划分为主实体和从实体,并对所述主实体进行编码以及对所述从实体进行编码;其中,所述主实体的编码与所述从实体的编码不重复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510420190.7A CN105117403B (zh) | 2015-07-16 | 2015-07-16 | 日志数据分片与查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510420190.7A CN105117403B (zh) | 2015-07-16 | 2015-07-16 | 日志数据分片与查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117403A true CN105117403A (zh) | 2015-12-02 |
CN105117403B CN105117403B (zh) | 2019-10-11 |
Family
ID=54665395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510420190.7A Active CN105117403B (zh) | 2015-07-16 | 2015-07-16 | 日志数据分片与查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117403B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608143A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 多副本数据一致性的检测方法及装置 |
CN105930256A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN106354434A (zh) * | 2016-08-31 | 2017-01-25 | 中国人民大学 | 日志数据的存储方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090192983A1 (en) * | 2008-01-28 | 2009-07-30 | Yahoo! Inc. | Method and system for mining, ranking and visualizing lexically similar search queries for advertisers |
CN103580919A (zh) * | 2013-11-04 | 2014-02-12 | 复旦大学 | 一种利用邮件服务器日志进行邮件用户标记的方法与系统 |
US20140067761A1 (en) * | 2012-08-28 | 2014-03-06 | Dhruva Chakrabarti | Logging modifications to a variable in persistent memory |
CN104281684A (zh) * | 2014-09-30 | 2015-01-14 | 东软集团股份有限公司 | 海量日志存储和查询方法及系统 |
CN104408100A (zh) * | 2014-11-19 | 2015-03-11 | 北京融海恒信咨询有限公司 | 结构化网站日志的压缩方法 |
-
2015
- 2015-07-16 CN CN201510420190.7A patent/CN105117403B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090192983A1 (en) * | 2008-01-28 | 2009-07-30 | Yahoo! Inc. | Method and system for mining, ranking and visualizing lexically similar search queries for advertisers |
US20140067761A1 (en) * | 2012-08-28 | 2014-03-06 | Dhruva Chakrabarti | Logging modifications to a variable in persistent memory |
CN103580919A (zh) * | 2013-11-04 | 2014-02-12 | 复旦大学 | 一种利用邮件服务器日志进行邮件用户标记的方法与系统 |
CN104281684A (zh) * | 2014-09-30 | 2015-01-14 | 东软集团股份有限公司 | 海量日志存储和查询方法及系统 |
CN104408100A (zh) * | 2014-11-19 | 2015-03-11 | 北京融海恒信咨询有限公司 | 结构化网站日志的压缩方法 |
Non-Patent Citations (2)
Title |
---|
王兆永: "面向大规模批量日志数据存储方法的研究", 《中国优秀硕士学位论文全文数据库》 * |
蒋慧斐等: "海量NAT日志检索优化索引算法的研究与应用", 《计算机科学》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608143A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 多副本数据一致性的检测方法及装置 |
CN105930256A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN105930256B (zh) * | 2016-04-14 | 2018-07-17 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN106354434A (zh) * | 2016-08-31 | 2017-01-25 | 中国人民大学 | 日志数据的存储方法及系统 |
CN106354434B (zh) * | 2016-08-31 | 2019-07-23 | 中国人民大学 | 日志数据的存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105117403B (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103632250A (zh) | 一种销售订单快速排序分组筛选方法 | |
CN104715039A (zh) | 基于硬盘和内存的列式存储和查询方法及设备 | |
WO2018132414A1 (en) | Data deduplication using multi-chunk predictive encoding | |
CN107229420A (zh) | 数据存储方法、读取方法、删除方法和数据操作系统 | |
CN103997346B (zh) | 一种基于流水线的数据匹配方法和装置 | |
CN107111623A (zh) | 用于基于词典的压缩的并行历史搜索和编码 | |
CN102968498A (zh) | 数据处理方法及装置 | |
CN103189867A (zh) | 重复数据检索方法及设备 | |
CN102970043A (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
CN102609462A (zh) | 一种通过提取sql模板对海量sql压缩存储的方法 | |
CN103500224B (zh) | 一种数据写入方法及装置、数据读取方法及装置 | |
CN105243027A (zh) | 在存储设备中存储数据的方法和存储控制器 | |
CN105117403A (zh) | 日志数据分片与查询方法及装置 | |
CN112463784A (zh) | 数据去重方法、装置、设备及计算机可读存储介质 | |
CN111008183B (zh) | 一种用于业务风控日志数据的存储方法及系统 | |
CN105302915A (zh) | 基于内存计算的高性能数据处理系统 | |
CN103746851A (zh) | 一种实现独立用户数统计的方法及装置 | |
CN113468571B (zh) | 基于区块链的溯源方法 | |
CN111274454A (zh) | 时空数据的处理方法、装置、电子设备和存储介质 | |
CN104537012A (zh) | 数据处理方法和装置 | |
CN103049561A (zh) | 一种数据压缩方法、存储引擎及存储系统 | |
CN104063374A (zh) | 一种对数据进行去重的方法和设备 | |
CN102930004A (zh) | 哈希值存储方法、装置及芯片 | |
CN106375490A (zh) | Ip信息匹配与扩展方法 | |
CN104133883A (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 |