cover_image

大数据分析仓库服务设计

beetlex.io beetlex
2021年05月06日 00:58

        最近一直在做数据分析这一块的产品,在这个过程中一直思考和实现一个即简单又通用的数据存储模型;目标是通过这个模型可以完成大部分的数据分析需求,而使用者并不需介入这个模型的设计和定制。经过这段时间几个版本的设计和实施,已经把这个模型抽象出来并在BeetleX数据分析的V4版中实现。

        为了应对大数据分析处理,服务的数据存储选择了ElasticSearch解决大规模数据存储和集群化处理(即现在互联网上非常火的ELK中的E)。通过ElasticSearch自身的优势可以轻松应对数十上百亿的数据规模进行分析处理。

        接下来简单分享一下这个数据仓库存储型的设计,做过统计分析的朋友一定会因为统计维度的增加感到有些苦恼,毕竟维度的增加意味着仓库的结构有所调整,结构的变化引起调整也是比较麻烦。而在设计这个数据仓库存储最重要也是解决这一问题,为了更好地处理这问题在设计依据以下方向需求:“谁在什么时候得到了那些数据?”。针对这一需求把数据信息列划分为三大类分别是:数值、时间和标签。

数值

        数值是数据中最主要的主要项目,在实际应用中主要包括数量,金额等;通过汇总这些数据可以了解到业务数据情况。

时间

        时间主要描述的数据源产生的时间,更多用于描述某些时间段的数据结果;但在汇总上为了得到更直观结果往往把时间转成基础单位作为一个数据维度来分析,如:年,月,日和时等。

标签

        在数据仓库存储中,数值和时间基本是固定的也不会增加,它们反映了在什么时间得到什么样的数据结果。但除了这两个信息源外更重要是"谁"在什么时间得到了多少数据结果。但这个"谁"就存在非常不确定性了,它会随时间有所增加或减少,具有非常多的信息源。这个类信息源最常见的有:客户,员工,经理,城市,地区,产品,分类。。。。等等。在这些根本无法完全总结出来的在这里全定义为标签。

设计

        既然数值和时间相对固定的数据源,那可以直接在设计上定义相关信息列即可。但对于标签来说在设计上就不这么简单了,因为它是可变化的,每条数据源都有着不同的情况;为了解决这一问题所以在设计上使用一个非结构化的信息例来存储所有这些标签。存储还是比较简单的关键是这个非结构化的信息列需要支持查询和内容标签管理;内容标签管理需要自动化地把客户,员工,经理,城市,地区,产品,分类。。。。等等这些分析出来,并提供给用户选择。

图片

服务接口

        服务设计两大接口,分别是数据导入和数据分析汇总。

  • 导入

    由于数据存储是非结构化的数据,所以在数据导入接口也遵循这样的设计;基于非结构化的结构即使标签维度数据增加或减少都无须调整导入的方式。通过这种方式可以确保业务发展过程新增的维度都无须调整结构源即可兼容对接。以下是一种简单的示例场:

  {    "ID": "0001000013",    "Total":20,    "Quantity":2,    "CreateTime""2006-05-22T00:00:00",    "Tag":[            {"产品":"Steeleye Stout"},            {"国家":"USA"},            {"客户":"Wolski"}        ]  }
  • 分析汇总

        服务虽然提供了自己有的图表展示功能,但很多时候需要制定符合实际需求的数据展示功能;为了满足这些需求服务提供了分析汇部接口用于获取分析后的数据进行数据展示处理。汇总接口分为两类,分别是时间维度的分析和标签维度的分析。

        时间维度可以分析出指定时间和标签的数据做一个时间进行统计,统计的时间有年,月,日,时等。通过时间统计可以做一些时间上的同比和环比数据分析汇总。

        标签维度可以选择任意标签组合并得到一份在某个时间区间的分析结果,而这种分析汇总更多是反映标签下的数据分布占比情况;如:某城市销售最火的产品,或不同系统问题产生的最多模块和相关开发人员等等。

总结

        经过前三个版的实现的积累,在第4个版本会得到一个更全面大数据分析仓库服务。通过服务可以更方便统计地分析各种业务数据,包括销售,医疗信息,系统日志等各种数据源的收集各分析汇总。以下是V4的功能预览:

图片



BeetleX

开源跨平台通讯框架(支持TLS)
提供高性能服务和大数据处理解决方案

图片

https://beetlex.io




数据分析 · 目录
上一篇BeetleX数据分析平台V3发布下一篇BeetleX数据分析平台V4发布
继续滑动看下一个
beetlex
向上滑动看下一个