CN110647512A - 一种数据存储和分析方法、装置、设备和可读介质 - Google Patents
一种数据存储和分析方法、装置、设备和可读介质 Download PDFInfo
- Publication number
- CN110647512A CN110647512A CN201910930287.0A CN201910930287A CN110647512A CN 110647512 A CN110647512 A CN 110647512A CN 201910930287 A CN201910930287 A CN 201910930287A CN 110647512 A CN110647512 A CN 110647512A
- Authority
- CN
- China
- Prior art keywords
- buried point
- data
- column
- buried
- storage table
- 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
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书实施例公开了数据存储和分析方法、装置、设备和可读介质。一种数据存储方法包括:取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据存储和分析方法、装置、设备和可读介质。
背景技术
在大数据领域,一种对数据仓库中的数据进行查询的方式称为“即席查询(AdHoc)”,即席查询是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。即席查询通常的实现方式是,将数据仓库中的维度表和事实表映射到语义层,用户可以通过语义层选择表,建立表间的关联,最终生成SQL语句。即席查询不同于通常的查询。通常的查询在系统设计和实施时是已知的,所以可以在系统实施时通过建立索引、分区等技术来优化这些查询,从而提高这些查询的效率。而即席查询是用户在使用时临时生成的,系统无法预先优化这些查询。
客户端上报的用户行为日志数据多为文本化的JSON(JavaScript ObjectNotation)字符串,其中包括该埋点相关的参数信息,上层的分析系统需要基于这些数据进行筛选、聚合等操作,最终输出查询结果。对于客户端上报的日志数据,较常见的方式是将文本化的JSON数据直接存储为一列,在查询过程中通过数据仓库计算引擎提供的getJSONObject的方式进行字段的抽取和筛选。这种数据查询方法的问题在于需要多次解析JSON操作,会消耗大量的计算资源,花费大量的计算时间,无法满足即席查询时秒级的数据聚合和筛选需求。
发明内容
有鉴于此,本申请实施例提供了一种数据存储和分析方法、装置、设备及可读介质,用于提高即时用户行为查询和分析的效率。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种数据存储方法,包括:获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同。
本说明书实施例提供的一种数据分析方法,包括:获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;基于筛选的所述埋点日志信息,计算数据分析结果。
本说明书实施例提供的一种数据存储装置,包括:获取模块,用于获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;存储表结构确定模块,用于基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;数据存储模块,用于从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息。
本说明书实施例提供的一种数据分析装置,包括:配置信息获取模块,用于获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;埋点日志信息获取模块,用于根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;计算模块,用于基于筛选的所述埋点日志信息,计算数据分析结果。
本说明书实施例提供的一种数据存储和分析设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:执行上述数据存储方法或上述数据分方法。
本说明书实施例提供的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述任一实施例所述的数据存储方法或数据分析方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过将埋点日志数据转存到列式存储表中,使得进行用户行为分析时,避免进行多次解析JSON的操作,对用户行为数据的筛选、聚合更加高效,可以消耗较少的计算资源、花费较短的时间,从而满足即席查询时秒级呈现查询结果的需求。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例中数据存储和数据分析方法的应用场景的示意图;
图2为本说明书实施例提供的一种数据存储方法的流程示意图;
图3示出了本申请实施例的数据存储方法的流程图;
图4为本说明书实施例提供的一种数据分析方法的流程示意图;
图5为本说明书实施例提供的对应于图2的一种数据存储装置的结构示意图;
图6为本说明书实施例提供的对应于图4的一种数据分析装置的结构示意图;
图7为本说明书实施例提供的一种数据存储和分析设备的结构示意图。
具体实施方式
为了解决数据查询过程中存在的需要多次解析JSON操作,消耗大量的计算资源,花费大量的计算时间,无法满足即席查询时达到秒级的数据聚合和筛选需求的问题,本申请提出了一种面向即席查询场景的非结构化文本数据转化为列式存储的数据存储方法。本申请的实施例通过将非结构化文本数据拆解为非重复的多列存储,合理利用列式存储在筛选和聚合操作上的高压缩比、高读取速率的优势,可以方便上层的查询引擎进行快速查询引用,使得在数据查询时无需进行多次解析JSON操作,消耗的计算资源少,花费的计算时间短,可以满足即席查询时的秒级数据聚合和筛选需求。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书实施例中数据存储和数据分析方法的应用场景的示意图。
如图1所示,在本申请的实施例中,服务端包括用于设置埋点配置信息的埋点管理系统和行为分析系统。其中,埋点管理系统和行为分析系统可以设置在相同或不同的服务器上。
埋点管理系统可以用于设置埋点配置信息和/或用于同步更新埋点配置信息。埋点管理系统可以提供一键同步的功能,可以将埋点配置信息的改变同步到行为分析系统。埋点管理系统将埋点配置文件下发到各个客户端,客户端通过埋点配置文件中已定义的埋点参数字段来上报用户行为日志数据。
行为分析系统包括数据存储模块和数据分析模块。
行为分析系统的数据存储模块,可以基于埋点配置信息,确定对客户端上报的文本化的用户行为日志数据的拆解方式,即确定用于进行用户行为分析时使用的行为分析表的结构,完成用户行为数据的从非结构化文本数据至列式存储格式的转化。当更新埋点配置信息时,例如新增、删除或改变埋点时,列式存储的行为分析表可以相应地增减列。
行为分析系统中的数据分析模块,可以基于数据存储模块中列式存储的行为分析表(即,列式存储表),分析与各个埋点相关的数据分析指标(例如,页面访问量、独立访客数等),也可以构建漏斗模型并分析漏斗模型中各步骤的转化率等。
图2为本说明书实施例提供的一种数据存储方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于服务器的用于执行数据存储的程序。
如图2所示,该流程可以包括以下步骤:
S110:获取埋点配置信息,所述埋点配置信息中定义了埋点参数字段,其中,所述埋点参数字段包括埋点标识字段。
埋点是为了满足快捷、高效、丰富的数据应用而做的用户行为过程及结果的记录。埋点的类型可以是与页面元素绑定型,以收集该页面元素的被点击情况,例如,播放按钮上绑定的埋点,当播放按钮被点击时则上报一条埋点日志信息;例如,支付按钮上绑定的埋点,当支付按钮被点击时,则上报一条埋点日志信息。埋点的类型也可以是页面曝光型,用于收集页面的曝光情况,例如,与弹窗绑定的埋点,当弹窗展现时,会上报一条埋点日志信息。埋点的类型不限于此。
埋点参数字段可以包括埋点标识字段(即,埋点id字段)、埋点名称字段、用户标识字段(即,用户id字段)、设备标识字段、时间戳字段、前向页面字段、停留时长字段等等。
另外,所述埋点配置信息还可以包括埋点所在页面、埋点上报逻辑、埋点优先级、埋点方式等信息。
另外,所述埋点配置信息还可以包括埋点参数类型(例如,文本、数值、数组等)、埋点参数分组等信息。
另外,埋点配置信息还可以包括用于表示埋点配置文件的版本、创建时间、最后修改时间等的描述信息。
为了更清楚地进行说明,举例如下。可以先定义埋点标识为“ev1”的埋点;并且可以进一步定义与该埋点“ev1”相关的其他埋点参数字段,例如,“用户id”、“设备id”、“商品id”等字段。
在实际应用中,以购买行为来举例,购买过程可以包含多个埋点,例如:a)课程详情页面点击购买,与购买按钮绑定的埋点会上报一条日志信息,该埋点的参数可以包括用户id、设备id、商品id等;b)点击购买后会跳转结算台,与结算台页面绑定的埋点会上报一条日志信息,该埋点的参数可以包括用户id、设备id、购买的商品类型、商品id、商品名称、购买数量等;c)点击确认购买按钮,与确认购买按钮绑定的埋点可以上报一条日志信息,该埋点的参数可以包括用户id、设备id、购买的商品类型、商品id、商品名称、购买数量、支付方式等;d)购买成功,会上报一个购买成功的埋点日志信息,该埋点的参数可以包括:用户id、设备id、购买的商品类型、商品id、商品名称、购买数量、支付方式等。该示例仅为了说明的目的,本申请实施例的应用场景、埋点的设置方式、配置的埋点参数均不限于此。
S120:基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同。
具体地,S120包括:将所述埋点参数字段存储到第一MySQL数据表中;对所述第一MySQL数据表中的埋点参数字段进行去重,得到第二MySQL数据表;基于所述第二MySQL数据表中的埋点参数字段,确定列式存储表的列结构,其中,所述列式存储表中的列一一对应于所述第二MySQL数据表中的埋点参数字段。
根据实施例,第一MySQL数据表中存储所有埋点的所有埋点参数字段,由于不同的埋点可以具有相同的参数,即,包含相同的埋点参数字段,因此,当设置有多个埋点时,第一MySQL数据表中的埋点参数字段可能有重复。第二MySQL数据表中存储的埋点参数字段是由第一MySQL数据表中存储的所有埋点的所有埋点参数字段去重得到的,每个字段对应于最终存储用户行为数据的列式存储表中的一列。
根据实施例,当设置有一个埋点时,将该埋点相关的所有埋点参数字段各作为一列,来确定列式存储表的列结构,此时列式存储表的各列的列名不重复。例如,埋点配置文件中设置了一个埋点,该埋点对应的埋点参数字段包括“ev”(即,“埋点标识”)、“用户id”、“设备id”和“商品id”,则可以确定列式存储表的结构包括以“ev”、“用户id”、“设备id”和“商品id”分别为列名的四个列。
根据实施例,当设置有两个或更多个埋点时,将各个埋点的埋点参数字段进行统计、去重,以得到非重复的埋点参数字段,来作为列式存储表的列名,此时列式存储表的各列的列名不重复。例如,埋点配置文件中设置了埋点标识为两个埋点,其中,一个埋点对应的埋点参数字段包括“ev”、“用户id”、“设备id”和“商品id”,另一埋点对应的埋点参数字段包括“ev”、“用户id”、“设备id”、“商品id”和“支付方式”,则可以确定列式存储表的结构包括以“ev”、“用户id”、“设备id”、“商品id”和“支付方式”分别为列名的五个列。
S130:从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息。
其中,所述埋点日志信息可以是非结构化文本格式,例如,可以是JSON格式的。所述埋点日志信息可以包括用户端根据埋点配置信息上报的用户行为数据。埋点日志信息中包括埋点参数字段的值。
其中,所述列式存储表是用于进行用户行为分析时使用的数据表,所述列式存储表中的各列可以分别对应于一个埋点参数字段,所述列式存储表中的每行可以对应一条埋点日志信息。
在S120中,已经基于所述埋点参数字段构建了列式存储表。在S130中,可以从埋点日志信息中获取埋点参数字段的值,作为示例,可以通过例如getJSONObject从JSON格式的埋点日志信息中读取埋点标识和各个埋点参数字段的值,存储到由S120所确定的列式存储表中。
为了更清楚地进行说明上述实施例,现举例如下:
根据埋点配置信息,假设设置有两个埋点,第一个埋点“ev1”的埋点参数字段还包括“uid”和“P1”,第二个埋点“ev”的埋点参数字段还包括“uid”、“P1”和“P2”。
可以获取埋点参数字段并确定列式存储表的列结构。具体地,先基于埋点配置信息得到第一MySQL数据表,在本示例中,第一MySQL数据表中包括的字段包括:与“ev1”对应的“uid”和“P1”以及与“ev2”对应的“uid”、“P1”和“P2”,埋点参数字段存在重复。对第一MySQL数据表中的字段进行去重,得到第二MySQL数据表,在本示例中,第二MySQL数据表中包括的字段包括:“ev”、“uid”、“P1”和“P2”。第二MySQL数据表中存储的字段对应于列式存储表的列名,如下:
ev | uid | P1 | P2 |
然后读取基于埋点配置信息上报的埋点日志信息,假设每个埋点上报一条埋点日志信息。
埋点“ev1”上报的埋点日志信息如下,该埋点日志信息中包括如下埋点参数字段“ev”、“uid”和“P1”的值:
埋点“ev2”上报的埋点日志信息如下,该埋点日志信息中包括如下埋点参数字段“ev”、“uid”、“P1”和“P2”的值:
将各个埋点参数字段的值按照如下方式存储到列式存储表中:
ev | uid | P1 | P2 |
ev1 | 1234 | param1 | |
ev2 | 1234 | param1 | param2 |
… | … | … | … |
根据可选的实施例,S130具体可以包括:以预定周期,获取新的埋点日志信息;将所述新的埋点日志信息中的埋点参数字段的值存储到所述列式存储表中的所述相应列中。
具体地,沿用上例,假设按照预定周期获取得到埋点“ev1”上报的一条新的埋点日志信息,如下:
则将该新获取的埋点日志信息中的与所述列式存储表的字段对应的值存储到列式存储表中,得到更新的列式存储表如下:
ev | uid | P1 | P2 |
ev1 | 1234 | param1 | |
ev2 | 1234 | param1 | param2 |
ev1 | 5678 | param1 | |
… | … | … | … |
根据可选的实施例,由埋点配置信息设置的埋点的参数可以是多层参数。在这种情况下,将所述多层参数摊平后设置为列式存储表的各列。具体地,可以先获取埋点配置信息中的所有埋点参数,存储在第一MySQL数据表中;然后将所述埋点参数中的多层参数摊平,得到第二MySQL数据表。
为了更清楚地进行说明上述实施例,现举例如下:
假设一个结算页面的埋点“ev3”,一次性结算多个商品,该埋点的上报信息如下:
在第一MySQL数据表中存储的内容如下:
在第二MySQL数据表中存储如下。具体地,第一MySQL表中的参数goods/num代表参数goods是一个Object,其下有一个num字段,则将该num字段作为埋点参数字段存储在第二MySQL表中;第一MySQL数据表中参数goods/list的参数类型为数组类型(即“List”),则将该数组中的Object所包含的字段(即,“id”和“name”)作为埋点参数字段存储到第二张MySQL数据表中。
ev |
uid |
num |
goods id |
goods name |
基于第二MySQL数据表中的字段确定列式存储表的列结构,并填入获取的埋点日志信息中的数据,由此,得到的列式存储表如下:
ev | uid | num | goods_id | good_name |
ev3 | 1234 | 1 | 333 | sunny |
本申请的上述实施例,提供了一种数据存储方法,基于埋点配置信息中定义的埋点参数字段,确定列式存储表的列结构,然后从埋点日志信息中获取所述埋点参数字段的值,存储到所述列式存储表中,实现了基于埋点配置文件将埋点信息中的非结构化文本数据转为非重复的列式存储格式,该方案规范了基于埋点获取的用户行为数据的存储格式,使得当基于该存储的数据进行用户行为分析时,无需进行多次解析JSON的操作,基于列式存储的在筛选和聚合上的优势,可以耗费更少的计算资源、花费更短的时间,可以实现即时查询场景下数据的秒级筛选和聚合。
本申请的实施例还包括可选的实施方案,下面进行详细说明。
本申请的实施例所述的数据存储方法,还包括:获取更新的埋点配置信息,所述埋点配置信息中定义了更新的埋点参数字段;基于所述更新的埋点参数字段,得到更新的第一MySQL数据表;基于所述更新的第一MySQL数据表,与所述第二MySQL数据表中的字段进行对比;若所述更新的第一MySQL数据表与所述第二MySQL数据表中具有不同的埋点参数字段,则基于所述更新的第一MySQL数据表,更新所述第二MySQL数据表,得到更新的第二MySQL数据表;基于所述更新的第二MySQL数据表中的埋点参数字段,更新所述列式存储表,得到更新的列式存储表,其中,所述更新的列式存储表中的列一一对应于所述更新的第二MySQL数据表中的一个埋点参数字段;从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述更新的列式存储表的相应列中,其中,所述埋点日志信息是基于所述更新的埋点配置信息上报的。
其中,埋点配置信息的更新包括埋点的增加和删除、针对某一个或多个埋点的埋点参数字段的增加、删除、修改等等。下面以针对新增一个埋点参数字段为例进行说明。
沿用上文中的例子,假设更新的埋点配置信息中包括埋点标识为“ev1”的埋点及其相关字段“uid”、“P1”和“P3”,并包括埋点标识为“ev2”的埋点及其相关字段“uid”、“P1”和“P2”。与上文中的例子相比,新增了埋点“ev1”的埋点参数字段“P3”。
根据该修改的埋点配置信息,生成更新的第一MySQL数据表,表中包括所有埋点的所有相关字段,即包括:与埋点“ev1”相关的“uid”、“P1”和“P3”以及与埋点“ev2”相关的“uid”、“P1”和“P2”,由此得到更新的第一MySQL数据表,其中包含字段:与埋点“ev1”相关的“uid”、“P1”和“P3”以及“与埋点“ev2”相关的“uid”、“P1”和“P2”。
由于第二MySQL数据表中存储的字段对应于当前列式存储表的列名,可以通过将所述更新的第一MySQL数据表中的字段与第二MySQL数据表中的字段进行对比,得知是否需要对列式存储表的列进行更新。具体地,在上例中,经对比更新的第一MySQL数据表中的字段与第二MySQL数据表中的字段,得知新增了埋点参数字段“P3”,则将该埋点参数字段新增为列式存储表中的列。进而,可以从基于所述更新的埋点配置信息上报的埋点日志信息中获取埋点参数字段的值,存储到更新的列式存储表中。
例如,基于更新的埋点配置信息上报的埋点日志信息为:
更新的列式存储表中存储的内容如下:
ev | uid | P1 | P2 | P3 |
ev1 | 1234 | param1 | ||
ev2 | 1234 | param1 | param2 | |
ev1 | 1234 | param1 | param3 | |
… | … | … | … | … |
本申请的实施例的实施不限于上述示例,在另一可选的实施例中,当埋点和/或埋点参数更新后,也可以构建新的列式存储表,并将根据更新后的埋点和/或埋单参数上报的用户日志数据存储到新的列式存储表中。
本申请的上述实施例提供了在将埋点日志信息中的用户行为数据进行列式存储的情况下,基于埋点配置信息来确定列式存储表动态增减列的时机的方法。在实际应用中,当产品人员在上游的埋点管理系统中新增埋点或者更改埋点参数时会提交同步任务,当该任务提交时,行为分析系统会相应地在列式存储的行为分析表中根据当前列的对比触发动态增减列的操作。本申请提供的上述实施例解决了行为分析系统底层数据构造上动态增减列的问题。
根据可选的实施例,在S130之前,还可以包括:将用户端根据埋点配置信息上报的非结构化文本格式的用户行为日志数据存储到消息中间件中;使用第一数据处理引擎,从所述消息中间件中读取所述用户行为日志数据;将所述用户行为日志数据存储到hive底层表中,得到埋点日志信息。
根据可选的实施例,所述将用户端根据埋点配置信息上报的非结构化文本格式的用户行为日志数据存储到消息中间件中之后,还包括:使用第二数据处理引擎,从所述消息中间件中读取所述用户行为日志数据;将所述用户行为日志数据存储到缓存中,所述缓存中的数据格式为键-值形式,其中,键为埋点标识-埋点参数字段,值为埋点参数字段的值。显然,值中的“埋点参数字段的值”是与键“埋点标识-埋点参数字段”对应的值。根据可选的实施例,所述缓存可以是Redis缓存。
为了更清楚地说明上述实施例,现举例如下:对于埋点标识为“ev1”的埋点对应的参数字段“uid”,可以从消息中间件中获取该“uid”字段的具体值,例如,为user1、user2、user3、user4。那么,在缓存中以(ev1-uid)为键,对应的值为user1、user2、user3、user4。
存储缓存的意义在于:当在行为分析系统的前端配置分析参数时,可以通过调用缓存中的数据来快速展示埋点参数字段的候选值列表,从而避免每次查询造成的时间和资源消耗。当在行为分析系统的前端显示用于供分析人员选择的配置信息时,后端无需进行复杂的关联表的操作,也无需从列式存储表中获取数据,而是可以直接从上述缓存中获取候选值列表,可以提高数据查询、分析的效率。在本申请的实施例中,列式存储表中的数据进行具体的数据筛选、聚合的分析时使用,而缓存中的数据用于当在前端配置分析条件时获取以用于及时展示。
图3示出了本申请实施例的数据存储方法的流程图,以作为具体的示例来说明本申请的实施例。参照图3,具体说明如下:
根据实施例,在数据定义阶段,在上游的埋点管理系统中定义了用户行为相关埋点及埋点参数,并通过一键同步,将埋点及埋点参数的改变同步到行为分析系统。
根据实施例,在数据生成阶段,根据埋点管理系统下发的埋点配置信息,各用户端根据埋点配置信息中的埋点及参数列表来上报行为数据。作为示例,Android/iOS SDK上报的用户行为日志的文件格式可以如下所示:
根据实施例,在数据接入阶段,埋点网关收集客户端上报的用户行为日志数据,取出其中埋点相关的部分(例如,上面示例中的“request_body”部分),转为JSON格式,传入诸如Kafka的消息中间件。Kafka是一种流数据处理平台,将数据放入不同的topic下,以供下游的数据消费工具订阅使用。作为示例,JSON格式的数据可以如下所示:
根据实施例,在数据消费阶段,使用流数据处理引擎来消费消息中间件中的数据,根据实施例,可以是通过Flink和Spark来消费Kafka中数据。根据实施例,可以使用例如Spark来消费kafka中的数据,然后写入hive表中,hive表的每行存储一条JSON格式的日志。根据实施例,可以使用例如Flink来消费kafka中数据,计算出每个埋点下每个埋点参数的参数值列表,用于存入诸如Redis的缓存,redis缓存中的数据为键-值(key-value)形式,其中,key为“埋点标识+埋点参数字段名”,value为埋点参数的参数值列表。Flink和Spark消费的数据内容是一样的,但是二者最终得到的数据格式不同,以适用于后续不同的使用目的。
根据实施例,在数据存储阶段,可以将行为分析系统中数据处理分为两方面:当进行用户行为分析时调用的用户行为日志数据存储在列式存储表中;当配置数据分析参数时调用的候选值列表存储在缓存中。
一方面,关于列式存储表,通过列式存储表的表结构变化和数据写入两部分来描述。
其一,列式存储表的表结构变化:当上游设置埋点配置信息后,可以将埋点参数字段存储到MySQL数据表中,并基于MySQL数据表中非重复的字段,确定列式存储表的列结构,实现基于埋点配置信息构建行为分析系统的列式存储表的列结构;当上游埋点配置信息发生变化时,通过更新MySQL数据表,并对比MySQL表中埋点参数字段,实现行为分析系统的列式存储表动态地增减列。
其二,列式存储表的数据写入:通过Spark消费Kafka中的数据,生成hive的底层表,可以通过根据诸如Azkaban的调度系统来定期将数据从hive的底层表同步到列式存储表中,在同步过程中,根据列式存储表的列结构,将hive底层表中的非结构化的文本数据(例如,JSON格式的数据)转化为诸如Parquet格式的列式存储形式存储在Hadoop分布式文件系统(HDFS)上。其中,定期调度的周期可以包括每天执行、每小时执行等,具体的调度周期可以根据需要设定。
另一方面,关于缓存,从以下两部分来说明,分别对应于两项缓存数据。
其一,基于第三MySQL数据表来获取埋点参数字段,并将埋点参数字段加入Redis缓存,其中,所述第三MySQL数据表是埋点列表,其中,Redis缓存中存储有与所述第三MySQL数据表对应的第一缓存内容,使得当在数据分析系统前端配置待分析埋点时,分析系统调用该第一缓存内容来向分析人员显示可供选择的候选埋点列表。
其二,Flink程序消费Kafka中的数据,然后根据Redis缓存中的埋点参数字段对数据进行清洗,生成每个埋点参数字段的值候选列表,作为第二缓存内容。第二缓存内容以key-value的形式存储,其中key是埋点标识-埋点参数字段,value是埋点参数字段的值。其中,key-value的更新基于Flink程序从Kafka中消费的数据。具体地,Flink程序中一旦检测到从Kafka中读取的埋点数据多了一个埋点参数字段,就会在Redis中新建一个相应的Key。Redis缓存中存储的第二缓存内容使得,当在数据分析系统前端配置待分析埋点时,分析系统调用该第二缓存内容来向分析人员显示可供选择的埋点参数的候选值列表。
上述缓存的设置,使得当分析人员设置分析配置信息时,可以快速获取埋点的筛选条件以及埋点参数的筛选条件,从而提高数据查询、分析的效率。
基于同样的思路,本说明书实施例还提供了与上述数据存储方法对应的数据分析方法。
图4为本说明书实施例提供的一种数据分析方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于服务器的用于执行数据分析的程序。
如图4所示,该流程可以包括以下步骤:
S310:获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识。
其中,所述数据分析配置信息是指当需要进行数据分析时,分析人员在行为分析系统的前端配置的信息。
其中,所述待分析埋点标识,可以包括例如需要分析的埋点的待分析埋点标识,所述待分析的埋点可以是单独的一个埋点,也可以是多个并列埋点构成的一个虚拟埋点。例如,针对电子书呈览页面,可以在“试听”按钮上绑定埋点“ev1”,在“试读”按钮上绑定埋点“ev2”,那么,可以针对埋点“ev1”和埋点“ev2”上报的用户行为数据分别进行分析,分别得到用户试听情况相关信息以及用户试看情况相关信息;也可以将二者作为一个虚拟埋点来分析,整体得到用户的试用情况信息。这里给出的仅是虚拟埋点的一个示例,可以根据实际需要将多个埋点设置为一个虚拟埋点。
其中,所述时间粒度包括例如天粒度、小时粒度、分钟粒度等。
其中,所述时间粒度和所述待分析日期是对应设置的。
根据实施例,当时间粒度为天粒度时,所述待分析日期可以是一个日期范围,所述日期范围不包括当前日期。相应地,天粒度的分析结果可以包含与日期范围中的每天对应的数据分析结果。例如,在2019-09-16,可以进行例如2019-09-11至2019-09-15的天粒度分析,得到的分析结果中包含与2019-09-11、2019-09-12、2019-09-13、2019-09-14和2019-09-15每天对应的数据点。
根据实施例,当时间粒度为小时粒度时,所述待分析日期可以是一个日期,所述日期可以包括当前日期或当前日期之前的日期。相应地,小时粒度的分析结果可以包含与待分析日期中的每个小时对应的数据分析结果。
其中,当待分析日期为当前日期时,查询是准实时的。例如,若在2019-09-11查询2019-09-11的数据,得到的分析结果中可以包括已经存储的各个小时的对应的数据,例如,当前时刻为10:20,对应的分析结果中包含2019-09-11这一天中00:00-00:59、01:00-01:59、……、09:00-09:59这10个小时各自对应的数据点。
若在2019-09-11查询2019-09-09的数据,得到的分析结果中可以包括2019-09-09所有各个小时的对应的数据,具体地,对应的分析结果中包含2019-09-09这一天中00:00-00:59、01:00-01:59、……、23:00-23:59这24个小时各自对应的数据点。
根据实施例,当时间粒度为分钟粒度时,所述待分析日期可以是一个日期,所述日期可以不包括当前日期。相应地,天粒度的分析结果可以包含与待分析日期中的每分钟对应的数据分析结果。例如,在2019-09-16,可以进行例如2019-09-15的分钟粒度分析,得到的分析结果中包含2019-09-15一天中每分钟对应的数据点。
可选地,数据分析配置信息还可以包括用户属性信息,例如,用户设备操作系统信息、应用软件版本信息、用户是否为注册用户、用户是否为付费用户等。这些用户属性信息,一方面,可以影响埋点日志数据的查询范围,使得可以基于用户属性信息仅获取满足预设的用户属性的用户日志信息,以得到满足分析人员需求的更细化的查询结果;另一方面,可以提供基于这些用户属性信息实现对比分析功能,在进行数据分析时,例如,可以设置按照用户设备操作系统(包括IOS和Android)进行分组查询并得到对比分析结果,例如,数据分析结果可以包括两个对照组,一组对应于操作系统为IOS的用户行为分析结果,另一组对应于操作系统为Android的用户行为分析结果。
S320:根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同。
其中,所述列式存储表是根据上文的任一实施例所述的数据存储方法得到的存储有用户行为数据的列式存储表。
根据实施例,所述列式存储表可以是多级分区存储的。
可选地,所述列式存储表可以是以日期作为一级分区、以埋点标识作为二级分区进行存储的第一列式存储表。其中,日期信息是从埋点日志信息中包含的时间戳中解析得到的。以上述形式存储的第一列式存储表可以用于当进行天粒度查询或分钟粒度查询时读取。
根据实施例,当所述时间粒度为天粒度时,S320具体可以包括:筛选第一列式存储表中的与所述待分析日期对应的一级分区中、且与所述待分析埋点标识对应的二级分区中的埋点日志信息。
根据实施例,当所述时间粒度为分钟粒度时,S320具体可以包括:筛选第一列式存储表中的与所述待分析日期对应的一级分区中、且与所述待分析埋点标识对应的二级分区中的埋点日志信息。
可选地,所述列式存储表可以是以日期作为一级分区、以小时作为二级分区、以埋点标识作为三级分区进行存储的第二列式存储表。其中,日期和小时信息是从埋点日志信息中包含的时间戳中解析得到的。以上述形式存储的第二列式存储表可以用于当进行小时粒度查询时读取。
根据实施例,当所述时间粒度为小时粒度时,S320具体可以包括:筛选第二列式存储表中的与所述待分析日期对应的一级分区中、且与小时粒度对应的二级分区中、且与所述待分析埋点标识对应的三级分区中的埋点日志信息。
S330:基于筛选的所述埋点日志信息,计算数据分析结果。
根据实施例,所述数据分析结果可以包括访问量、独立访客数等,但是不限于此。其中,访问量,通常为页面访问量,简称PV(Page View),具体是指某页面浏览量或者点击量,页面被刷新一次就计算一次。独立访客数,简称UV(Unique Visitor),以一个电脑客户端或者一个手机客户端等作为一个独立访客,以计算周期为1天为例,UV表示1天内某页面的访问人数,1天内同一访客的多次访问记为1次。
根据可选的实施例,所述基于筛选的所述埋点日志信息,计算数据分析结果,具体包括:基于筛选的所述埋点日志信息,计算所述待分析埋点在所述时间范围信息对应的时间范围内的埋点访问量。
根据可选的实施例,所述基于筛选的所述埋点日志信息,计算数据分析结果,具体包括:根据所述列式存储表中用户标识,对筛选的所述埋点日志信息进行聚类,得到以用户标识聚类的埋点日志信息;基于所述以用户标识聚类的埋点日志信息,计算所述待分析埋点在所述时间范围信息对应的时间范围内的独立访客数。其中,所述用户标识是列式存储表中用户标识字段的值。在该实施例中,筛选的所述埋点日志信息进行聚类,是将该用户在一定时间范围内的访问均视为1次访问。
根据实施例,当所述时间粒度为天粒度时,S330具体可以包括:基于所述第一列式存储表中的与所述待分析日期对应的一级分区中的埋点日志信息,按照待分析埋点标识,来聚合得到各个埋点对应的天级分析结果。
根据实施例,当所述时间粒度为分钟粒度时,S330具体可以包括:基于所述第一列式存储表中的与所述待分析日期对应的一级分区中的埋点日志信息,按照待分析埋点标识和时间戳字段中包含的分钟信息,来聚合得到各个埋点对应的分钟级分析结果。
根据实施例,当所述时间粒度为小时粒度时,基于所述第二列式存储表中的与所述待分析日期对应的一级分区中的埋点日志信息,按照各个小时分区信息和各个埋点分区信息,来聚合得到各个埋点对应的小时级分析结果。
根据本公开的上述实施例,在数据分析过程中,不同于直接从hive底层获取JSON格式的数据,本申请的实施例从列式存储表中获取需要查询的数据,由于列式存储结构中各个列均可以作为索引,当查询时只有涉及到的列会被读取,大量降低系统的I/O开销、提高数据分析的效率。
此外,在上述实施例中,将埋点日志信息进行分区存储的方式,使得当进行数据分析时,可以按照分区来定向获取满足分析条件的数据,提高数据分析过程中的查询效率。并且,进一步地,针对不同时间粒度的查询,从不同的分区形式的数据表中获取数据,例如天粒度查询从按照天进行分区的数据表中查询数据,小时粒度的查询从按照小时进行分区的数据表中查询数据,无需进行多余的数据解析或数据聚合操作,进一步提高了数据分析效率。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图5为本说明书实施例提供的对应于图2的一种数据存储装置的结构示意图。
如图5所示,该装置可以包括:
获取模块510,用于获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;
存储表结构确定模块520,用于基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
数据存储模块530,用于从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息。
根据实施例,所述存储表结构确定模块520具体用于:将所述埋点参数字段存储到第一MySQL数据表中;对所述第一MySQL数据表中的埋点参数字段进行去重,得到第二MySQL数据表;基于所述第二MySQL数据表中的埋点参数字段,确定列式存储表的列结构,其中,所述列式存储表中的列一一对应于所述第二MySQL数据表中的埋点参数字段。
根据实施例,所述获取模块510,还用于:获取更新的埋点配置信息,所述埋点配置信息中定义了更新的埋点参数字段;
所述存储表结构确定模块520,还具体用于:基于所述更新的埋点参数字段,得到更新的第一MySQL数据表;基于所述更新的第一MySQL数据表,与所述第二MySQL数据表中的字段进行对比;若所述更新的第一MySQL数据表与所述第二MySQL数据表中具有不同的埋点参数字段,则基于所述更新的第一MySQL数据表,更新所述第二MySQL数据表,得到更新的第二MySQL数据表;基于所述更新的第二MySQL数据表中的埋点参数字段,更新所述列式存储表,得到更新的列式存储表,其中,所述更新的列式存储表中的列一一对应于所述更新的第二MySQL数据表中的一个埋点参数字段。
所述数据存储模块530,还用于:从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述更新的列式存储表的相应列中,其中,所述埋点日志信息是基于所述更新的埋点配置信息上报的。
根据实施例,所述数据存储装置还包括:埋点日志信息获取模块,用于:将用户端根据埋点配置信息上报的非结构化文本格式的用户行为日志数据存储到消息中间件中;使用第一数据处理引擎,从所述消息中间件中读取所述用户行为日志数据;将所述用户行为日志数据存储到hive底层表中,得到埋点日志信息。
根据实施例,所述数据存储模块530,具体用于:以预定周期,获取新的埋点日志信息;将所述新的埋点日志信息中的埋点参数字段的值存储到所述列式存储表中的所述相应列中。
根据实施例,所述数据存储装置还包括:数据缓存模块,用于:将用户端根据埋点配置信息上报的非结构化文本格式的用户行为日志数据存储到消息中间件中之后,使用第二数据处理引擎,从所述消息中间件中读取所述用户行为日志数据;将所述用户行为日志数据存储到缓存中,所述缓存中的数据格式为key-value形式,其中,key为埋点标识-埋点参数字段,value为埋点参数字段的值。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图6为本说明书实施例提供的对应于图4的一种数据分析装置的结构示意图。
如图6所示,该装置可以包括:
配置信息获取模块610,用于获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;
埋点日志信息获取模块620,用于根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
计算模块630,用于基于筛选的所述埋点日志信息,计算数据分析结果。
根据实施例,所述计算模块630,具体用于:基于筛选的所述埋点日志信息,计算所述待分析埋点在所述时间范围信息对应的时间范围内的埋点访问量。
根据实施例,所述计算模块630,具体用于:根据所述列式存储表中用户标识,对筛选的所述埋点日志信息进行聚类,得到以用户标识聚类的埋点日志信息;基于所述以用户标识聚类的埋点日志信息,计算所述待分析埋点在所述时间范围信息对应的时间范围内的独立访客数。
可以理解,上述的各模块是指计算机程序或者程序段,用于执行某一项或多项特定的功能。此外,上述各模块的区分并不代表实际的程序代码也必须是分开的。
图7为本说明书实施例提供的一种数据存储和分析设备的结构示意图。如图7所示,设备1000可以包括:
至少一个处理器1010;以及,
与所述至少一个处理器通信连接的存储器1030;其中,
所述存储器1030存储有可被所述至少一个处理器1010执行的指令1020,所述指令被所述至少一个处理器1010执行,以使所述至少一个处理器1010能够:
获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;
基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息,
并且/或者,能够:
获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;
根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
基于筛选的所述埋点日志信息,计算数据分析结果。
基于同样的思路,本说明书实施例还提供了上述方法对应的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现上面任一实施例中所述的数据存储方法或数据分析方法。
上述对本说明书特定实施例进行了描述,在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备与方法是对应的,因此,装置、设备也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备的有益技术效果。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (13)
1.一种数据存储方法,其特征在于,所述方法包括:
获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;
基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息。
2.根据权利要求1所述的方法,其特征在于,所述基于所述埋点配置信息,确定列式存储表的列结构,具体包括:
将所述埋点参数字段存储到第一MySQL数据表中;
对所述第一MySQL数据表中的埋点参数字段进行去重,得到第二MySQL数据表;
基于所述第二MySQL数据表中的埋点参数字段,确定列式存储表的列结构,其中,所述列式存储表中的列一一对应于所述第二MySQL数据表中的埋点参数字段。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取更新的埋点配置信息,所述埋点配置信息中定义了更新的埋点参数字段;
基于所述更新的埋点参数字段,得到更新的第一MySQL数据表;
基于所述更新的第一MySQL数据表,与所述第二MySQL数据表中的字段进行对比;
若所述更新的第一MySQL数据表与所述第二MySQL数据表中具有不同的埋点参数字段,则基于所述更新的第一MySQL数据表,更新所述第二MySQL数据表,得到更新的第二MySQL数据表;
基于所述更新的第二MySQL数据表中的埋点参数字段,更新所述列式存储表,得到更新的列式存储表,其中,所述更新的列式存储表中的列一一对应于所述更新的第二MySQL数据表中的一个埋点参数字段;
从埋点日志信息中获取埋点参数字段的值,将埋点参数字段的值存储到所述更新的列式存储表的相应列中,其中,所述埋点日志信息是基于所述更新的埋点配置信息上报的。
4.根据权利要求1所述的方法,其特征在于,所述从埋点日志信息中获取埋点参数字段的值之前,还包括:
将用户端根据埋点配置信息上报的非结构化文本格式的用户行为日志数据存储到消息中间件中;
使用第一数据处理引擎,从所述消息中间件中读取所述用户行为日志数据;
将所述用户行为日志数据存储到hive底层表中,得到埋点日志信息。
5.根据权利要求4所述的方法,其特征在于,所述从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,具体包括:
以预定周期,获取新的埋点日志信息;
将所述新的埋点日志信息中的埋点参数字段的值存储到所述列式存储表中的所述相应列中。
6.根据权利要求4所述的方法,其特征在于,所述将用户端根据埋点配置信息上报的非结构化文本格式的用户行为日志数据存储到消息中间件中之后,还包括:
使用第二数据处理引擎,从所述消息中间件中读取所述用户行为日志数据;
将所述用户行为日志数据存储到缓存中,所述缓存中的数据格式为键-值形式,其中,键为埋点标识-埋点参数字段,值为埋点参数字段的值。
7.一种数据分析方法,其特征在于,所述方法包括:
获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;
根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
基于筛选的所述埋点日志信息,计算数据分析结果。
8.根据权利要求7所述的方法,其特征在于,所述基于筛选的所述埋点日志信息,计算数据分析结果,具体包括:
基于筛选的所述埋点日志信息,计算所述待分析埋点在所述时间范围信息对应的时间范围内的埋点访问量。
9.根据权利要求7所述的方法,其特征在于,所述基于筛选的所述埋点日志信息,计算数据分析结果,具体包括:
根据所述列式存储表中用户标识,对筛选的所述埋点日志信息进行聚类,得到以用户标识聚类的埋点日志信息;
基于所述以用户标识聚类的埋点日志信息,计算所述待分析埋点在所述时间范围信息对应的时间范围内的独立访客数。
10.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;
存储表结构确定模块,用于基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
数据存储模块,用于从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息。
11.一种数据分析装置,其特征在于,所述装置包括:
配置信息获取模块,用于获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;
埋点日志信息获取模块,用于根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
计算模块,用于基于筛选的所述埋点日志信息,计算数据分析结果。
12.一种数据存储和分析设备,其特征在于,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取埋点配置信息,所述埋点配置信息中定义了埋点和所述埋点的埋点参数字段,其中,所述埋点参数字段包括埋点标识字段;
基于所述埋点配置信息,确定列式存储表的列结构,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
从埋点日志信息中获取埋点参数字段的值,将所述埋点参数字段的值存储到所述列式存储表中的相应列中,其中,所述列式存储表中的每行对应于一条埋点日志信息,
或者,能够:
获取数据分析配置信息,其中,所述数据分析配置信息包括时间粒度、待分析日期和待分析埋点标识;
根据所述数据分析配置信息,筛选符合所述待分析日期和所述待分析埋点标识的埋点日志信息,其中,所述埋点日志信息存储在列式存储表中,所述列式存储表的每行对应于一条埋点日志信息,其中,所述列式存储表中的每列对应一个埋点参数字段并且各列对应的埋点参数字段彼此不同;
基于筛选的所述埋点日志信息,计算数据分析结果。
13.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至6中任一项所述的数据存储方法或者权利要求7至9中任一项所述的数据分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910930287.0A CN110647512B (zh) | 2019-09-29 | 2019-09-29 | 一种数据存储和分析方法、装置、设备和可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910930287.0A CN110647512B (zh) | 2019-09-29 | 2019-09-29 | 一种数据存储和分析方法、装置、设备和可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110647512A true CN110647512A (zh) | 2020-01-03 |
CN110647512B CN110647512B (zh) | 2022-05-24 |
Family
ID=69011962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910930287.0A Active CN110647512B (zh) | 2019-09-29 | 2019-09-29 | 一种数据存储和分析方法、装置、设备和可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647512B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241081A (zh) * | 2020-01-09 | 2020-06-05 | 杭州涂鸦信息技术有限公司 | Iot平台数据收集方法及系统、可读存储介质、计算机设备 |
CN111506569A (zh) * | 2020-03-02 | 2020-08-07 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子装置 |
CN111797154A (zh) * | 2020-07-03 | 2020-10-20 | 紫光云技术有限公司 | 一种基于json的实时抽取方法 |
CN111966339A (zh) * | 2020-07-23 | 2020-11-20 | 招联消费金融有限公司 | 埋点参数的录入方法、装置、计算机设备和存储介质 |
CN112486841A (zh) * | 2020-12-16 | 2021-03-12 | 江苏苏宁云计算有限公司 | 埋点采集数据校验的方法及装置 |
CN113688133A (zh) * | 2021-08-23 | 2021-11-23 | 泰康保险集团股份有限公司 | 基于合规计算的数据处理方法、系统、装置、介质及设备 |
CN113918437A (zh) * | 2021-11-23 | 2022-01-11 | 企查查科技有限公司 | 用户行为数据分析方法、装置、计算机设备和存储介质 |
WO2022166071A1 (zh) * | 2021-02-04 | 2022-08-11 | 华为技术有限公司 | 一种流数据存储系统中流数据访问方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140043183A1 (en) * | 2012-08-09 | 2014-02-13 | Larry G. Stolarczyk | Acoustic heterodyne radar |
US20140125509A1 (en) * | 2011-11-21 | 2014-05-08 | Stolar, Inc. | Radar for rejecting and looking past surface reflections |
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN108304723A (zh) * | 2018-01-17 | 2018-07-20 | 链家网(北京)科技有限公司 | 一种异常行为检测方法及装置 |
CN108304704A (zh) * | 2018-02-07 | 2018-07-20 | 平安普惠企业管理有限公司 | 权限控制方法、装置、计算机设备和存储介质 |
CN108920698A (zh) * | 2018-07-16 | 2018-11-30 | 北京京东金融科技控股有限公司 | 一种数据同步方法、装置、系统、介质及电子设备 |
CN109344180A (zh) * | 2018-08-21 | 2019-02-15 | 中国平安人寿保险股份有限公司 | 展示数据获取的方法、装置、计算机设备和存储介质 |
CN109688207A (zh) * | 2018-12-11 | 2019-04-26 | 北京云中融信网络科技有限公司 | 日志传输方法、装置及服务器 |
CN110135795A (zh) * | 2019-04-10 | 2019-08-16 | 杭州博世数据网络有限公司 | 一种基于云教学平台的数据库系统 |
CN110147398A (zh) * | 2019-04-25 | 2019-08-20 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、介质和电子设备 |
CN110262951A (zh) * | 2019-06-10 | 2019-09-20 | 天翼电子商务有限公司 | 一种业务秒级监控方法及系统、存储介质及客户端 |
-
2019
- 2019-09-29 CN CN201910930287.0A patent/CN110647512B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140125509A1 (en) * | 2011-11-21 | 2014-05-08 | Stolar, Inc. | Radar for rejecting and looking past surface reflections |
US20140043183A1 (en) * | 2012-08-09 | 2014-02-13 | Larry G. Stolarczyk | Acoustic heterodyne radar |
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN108304723A (zh) * | 2018-01-17 | 2018-07-20 | 链家网(北京)科技有限公司 | 一种异常行为检测方法及装置 |
CN108304704A (zh) * | 2018-02-07 | 2018-07-20 | 平安普惠企业管理有限公司 | 权限控制方法、装置、计算机设备和存储介质 |
CN108920698A (zh) * | 2018-07-16 | 2018-11-30 | 北京京东金融科技控股有限公司 | 一种数据同步方法、装置、系统、介质及电子设备 |
CN109344180A (zh) * | 2018-08-21 | 2019-02-15 | 中国平安人寿保险股份有限公司 | 展示数据获取的方法、装置、计算机设备和存储介质 |
CN109688207A (zh) * | 2018-12-11 | 2019-04-26 | 北京云中融信网络科技有限公司 | 日志传输方法、装置及服务器 |
CN110135795A (zh) * | 2019-04-10 | 2019-08-16 | 杭州博世数据网络有限公司 | 一种基于云教学平台的数据库系统 |
CN110147398A (zh) * | 2019-04-25 | 2019-08-20 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、介质和电子设备 |
CN110262951A (zh) * | 2019-06-10 | 2019-09-20 | 天翼电子商务有限公司 | 一种业务秒级监控方法及系统、存储介质及客户端 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241081A (zh) * | 2020-01-09 | 2020-06-05 | 杭州涂鸦信息技术有限公司 | Iot平台数据收集方法及系统、可读存储介质、计算机设备 |
CN111506569A (zh) * | 2020-03-02 | 2020-08-07 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子装置 |
CN111506569B (zh) * | 2020-03-02 | 2024-03-01 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子装置 |
CN111797154A (zh) * | 2020-07-03 | 2020-10-20 | 紫光云技术有限公司 | 一种基于json的实时抽取方法 |
CN111966339A (zh) * | 2020-07-23 | 2020-11-20 | 招联消费金融有限公司 | 埋点参数的录入方法、装置、计算机设备和存储介质 |
CN111966339B (zh) * | 2020-07-23 | 2024-04-09 | 招联消费金融股份有限公司 | 埋点参数的录入方法、装置、计算机设备和存储介质 |
CN112486841A (zh) * | 2020-12-16 | 2021-03-12 | 江苏苏宁云计算有限公司 | 埋点采集数据校验的方法及装置 |
WO2022166071A1 (zh) * | 2021-02-04 | 2022-08-11 | 华为技术有限公司 | 一种流数据存储系统中流数据访问方法及装置 |
CN113688133A (zh) * | 2021-08-23 | 2021-11-23 | 泰康保险集团股份有限公司 | 基于合规计算的数据处理方法、系统、装置、介质及设备 |
CN113688133B (zh) * | 2021-08-23 | 2024-01-05 | 泰康保险集团股份有限公司 | 基于合规计算的数据处理方法、系统、装置、介质及设备 |
CN113918437A (zh) * | 2021-11-23 | 2022-01-11 | 企查查科技有限公司 | 用户行为数据分析方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110647512B (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647512B (zh) | 一种数据存储和分析方法、装置、设备和可读介质 | |
CN110674228B (zh) | 数据仓库模型构建和数据查询方法、装置及设备 | |
US10235430B2 (en) | Systems, methods, and apparatuses for detecting activity patterns | |
CN110675194A (zh) | 一种漏斗分析方法、装置、设备及可读介质 | |
CN103838867A (zh) | 日志处理方法和装置 | |
JP2017530469A (ja) | イベント処理のための動的に型付けされたビッグデータによるイベントの充実化 | |
CN107748752B (zh) | 一种数据处理方法及装置 | |
CN112396462B (zh) | 基于Clickhouse的人群圈选方法及装置 | |
Feick et al. | Fundamentals of real-time data processing architectures lambda and kappa | |
EP2526479A1 (en) | Accessing large collection object tables in a database | |
CN113609374A (zh) | 基于内容推送的数据处理方法、装置、设备及存储介质 | |
CN115422169B (zh) | 基于商业广告场景的数据仓库构建方法及装置 | |
US11947613B2 (en) | System and method for efficiently querying data using temporal granularities | |
CN112100182A (zh) | 数据入库处理方法、装置和服务器 | |
CN116680315A (zh) | 数据离线处理方法、装置、电子设备及存储介质 | |
Piccialli et al. | S-InTime: A social cloud analytical service oriented system | |
CN116468011A (zh) | 一种报表的生成方法、装置、设备及存储介质 | |
CN114860819A (zh) | 商业智能系统的构建方法、装置、设备和存储介质 | |
CN111045606B (zh) | 一种可扩展云规模iot存储方法、装置及服务器 | |
Niranjanamurthy et al. | The research study on DynamoDB—NoSQL database service | |
CN111143328A (zh) | 一种敏捷商业智能数据构建方法、系统、设备、存储介质 | |
CN113672660A (zh) | 一种数据查询方法、装置及设备 | |
CN113111244A (zh) | 基于中医药知识规模化普及的多源异构大数据融合系统 | |
Hashem et al. | A review of modeling toolbox for BigData | |
CN110941608A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100000 room 701, 6 / F, building 1, No. 1, xidawang Road, Chaoyang District, Beijing Applicant after: Beijing Mind Creation Information Technology Co.,Ltd. Address before: Room 2802, 24 / F, building 4, 89 Jianguo Road, Chaoyang District, Beijing Applicant before: Beijing Mind Creation Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |