> 文章列表 > 未来社区数据仓库开发规范【持续更新】

未来社区数据仓库开发规范【持续更新】

未来社区数据仓库开发规范【持续更新】

未来社区数据仓库开发规范

一、数据源和数据输入

1.数据来源与采集方式

数据来源参考提供给云阳社区的数据报送文档,

动态数据一般从开发环境的数据库中获取,静态数据由运营提供。

文档由

模块(运营数据、九大场景、基础数据) 数据名称 参数名 类型 是否必填 参数描述 数据来源(运营、业务系统、第三方) 更新方式(全量/增量) 所属表名 所属存储过程名 过滤逻辑 所属转换名 所属作业名 所属脚本名

这些字段组成。

2.数据元信息收集体系

设计数据元信息收集体系的步骤如下:

  1. 确定需要收集哪些数据元信息:根据实际需求和业务场景,确定需要收集的数据元信息,比如数据表名、各字段名及其类型、是否为空(是否必填)、字段描述、数据来源等,即采集方式的表格中部分字段。

  2. 设计数据元信息存储结构:根据收集的数据元信息和数据访问模式,在数据库中设计相应的数据表和字段,用于存储数据元信息。未来社区项目使用关系型数据库Mysql8.0及以上版本存储数据元信息。

  3. 制定数据元信息采集规范:为保证数据元信息的准确性和完整性,需要制定相关的采集规范,包括必填、选填、参数类型等。

  4. 实施数据元信息采集工具:基于现有的采集工具Kettle,实施数据元信息采集。采集方式根据数据集大小及更新频率分为定时增量或全量抽取。

  5. 部署数据元信息管理平台:浙里未来社区在线重大应用贯通实施规范包含基础数据及运营数据的数据元信息管理平台,如下所示:

    基础数据:https://hzzfxx-wlsq.feishu.cn/docx/MnjgdA2qRoaqY0xI1ysca2sunVc

    运营数据:https://gtportal.feishu.cn/docs/doccn2wLwrjDPAe4TLY1Z9vhEih

  6. 更新数据元信息:根据元数据管理平台的数据变化情况,不定期进行数据元信息的更新,以保证数据元信息与实际数据一致并满足业务要求。

二、设置数据模型和数据存储

1.命名和语义规则

对于本数据仓库中ods层与dwd层的表的命名规则,有以下几点:

  1. 使用层名来提醒表所属的层次和位置。在数据仓库系统中,不同的层应该遵循不同的处理方式和规范,并且有不同的技术要求和查询需求。
  2. 使用业务数据库的库名作为第二部分,业务数据库的表名作为第三部分,以便更好地区分它们所属的数据库或模块,并保持数据仓库的整体结构化和组织性。
  3. 通过使用下划线将三个部分(层名、库名、表名)连接起来,形成一种统一、清晰且易于识别的命名规范。

对于dws层的命名规则,有:

  1. 表名通过使用下划线将三个部分(层名_作用域__上报接口名)连接起来,如:dws_basic_sbsqhd 即表示dws层作用域为基础数据上报的上报社区活动接口;dws_zxglxt_community_general_static即表示dws层作用域为在线管理系统的社区总体信息上报接口。

对于dim层的命名规范,有:

  1. 表名通过使用下划线将两个部分(层名_维度名称)连接起来,参考基础数据元数据管理平台的字典表。

2.数据建模方法

  1. 参考省平台基础数据上报要求选用星座模型进行维度建模,以求更高的复杂性与扩展性。
  2. 数仓分层顺序为ods(原始数据层) -> dwd(数据明细层)-> dws(数据服务层)->ads(数据应用层),同时还有dim(维度层)。

3.存储和访问控制策略

存储控制:在服务器设置定时备份。

访问控制:需要连接专有网络才能够访问数据库。

三、数据处理流程

1.数据处理流程

  1. 数据来源:列出数据仓库中包含的所有源系统,并对每个系统进行简要介绍,如业务类型、数据格式和存储方式等。同时,还需要说明该系统对应的业务流程或者数据处理过程。

    来源名称 存储方式 介绍
    业务数据库 Postgresql数据库 用户在使用中产生的数据,大部分数据由此抽取。
    CIOT平台 未知 物联数据所在平台,调用接口获取此类数据。
  2. ETL工作链各个阶段:

  • ETL工作链分三个阶段:抽取(Extract)、转换(Transform)和装载(Load)。具体而言:

    • 在数据抽取阶段,我们使用Kettle工具从业务数据库中抽取数据,并过滤掉is_delete=0的数据。这些数据将被保存到ODS层的表中,以备后续处理。
    • 在数据转换阶段,我们将从ODS层到DWS层的清洗的SQL语句存入存储过程,这些存储过程会在Kettle中定时运行。
    • 在数据装载阶段,我们编写定时上报脚本,并利用Kettle调用上报接口或者指定代码实现数据上报。

    最后,所有的命令都将被添加到服务器的脚本中,并通过crontab定期调度执行。这样,我们就能够高效地处理数据管道,并保证数据质量和可靠性。

四、持续交付和自动化

1.引入自动化工具,提高团队生产力和效率

  • 自动化工具名称:定时脚本
  • 目的和功能:
    • 通过定时执行Kettle转换来实现数据抽取、清洗和上报。
    • 设置不同时间间隔来满足不同的业务需求,要求抽取在清洗之前,清洗在上报之前。
  • 实现原理:
    • 使用Linux系统自带的crontab命令,设置定时任务来调用Shell脚本。
    • Shell脚本中包含Kettle转换文件的路径及所需参数等信息,定时任务会按照设定的时间频率自动运行该脚本。
    • Kettle转换根据预定义的规则从不同源获取数据进行处理,将最终结果输出到目标位置。
  • 优势和效益:
    • 能够实现数据的定期更新,提高数据的实时性和准确性。
    • 能够减少重复性的手动操作,提高效率并降低错误率。
    • 能够对整个数据流程进行自动化操作和管理,提高项目的可维护性和稳定性。