# dataengineer **Repository Path**: jesson-deng/dataengineer ## Basic Information - **Project Name**: dataengineer - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-23 - **Last Updated**: 2024-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 总共分四个模块进行学习 data pipeline dashboard ci/cd data model 下面分别介绍四个模块设计的知识点,以及好的学习视频 # data pipeline ## 数据源 Data Sources 原始数据存放的位置(非清洗后数据存放的位置),这些原始数据有可能在各种数据库中,包括关系型数据库(如 MySQL、PostgreSQL)、NoSQL 数据库(如 MongoDB、Cassandra)、文件系统(如 CSV、JSON 文件)、Web API、传感器、日志系统等,也有可能在生产环境。 对常见的数据源要有所了解。 ## 数据提取 数据提取是指从不同的数据源中获取数据的过程。这个过程需要处理各种数据格式和不同的数据接口,确保可以顺利读取到源数据。常见的提取方法包括: - SQL 查询(从关系型数据库提取数据) - API 请求(从 Web 服务提取数据)涉及 HTTP 协议相关 - 文件读取(从 CSV、JSON 等文件格式提取数据) ## 数据处理 数据处理是对提取的数据进行清洗、转换和格式化的过程。数据在这一阶段通常会进行以下操作: - 数据清洗:去除重复数据、处理缺失值、校正格式错误等。 - 数据转换:将数据从一种格式转换成另一种格式,比如将日期格式标准化、单位转换等。 - 数据聚合和计算:对数据进行汇总、平均、最大/最小值计算等。 - 数据规范化:调整数据范围或标准化处理,使其更适合后续的分析或存储。 ## 数据存储 数据加载是指将处理后的数据写入目标存储系统的过程,目标可以是数据仓库、数据库或其他数据存储系统。常见的目标系统包括: 各种数据仓库 MySQL PgSQL MongoDB # 数据仪表盘 data dashboard 仪表盘的功能就是对数据的展示,更多的是,带一些统计功能,比如某个指标,在一天,一个月,一年内的数值是怎样的,比如某个产品的故障率。 呈现形式,最常见的就是方式一个 Web 页面。 ## 基于 Python 的前后端分离项目 后端: Python Django 框架 视频课程: https://www.bilibili.com/video/BV1qb411P7XQ/?spm_id_from=333.999.0.0&vd_source=7165ad177186208f56217f3a6c7a743a 前端框架:React 视频课程: https://www.bilibili.com/video/BV1wy4y1D7JT/?spm_id_from=333.999.0.0&vd_source=7165ad177186208f56217f3a6c7a743a 代理服务器: Nginx ,会基础的搭建和配置即可 WSGI 协议,会基础的搭建和配置即可 # ci/cd ## CI CI/CD 是现代软件开发流程中重要的概念,指的是 持续集成(Continuous Integration, CI) 和 持续交付(Continuous Delivery, CD)。它们的目的是通过自动化流程,使软件开发、测试和部署更加高效、可靠和可重复。 - 持续集成(CI - Continuous Integration) 持续集成是指开发人员频繁地将他们的代码集成到共享代码库中。通常,开发人员会在本地完成某项功能的开发,之后将其推送到版本控制系统(如 Git)。 CI 流程的目标是尽早发现集成问题(例如代码冲突、构建失败、测试失败等)。 - 关键点: - 自动化构建: 每次代码推送后,CI 系统会自动触发构建和单元测试,确保代码能够成功编译并通过基本的单元测试。 - 频繁集成: 团队成员定期将代码集成到主分支(通常是开发分支)。这通常每天多次,以便尽早发现集成问题。 - 快速反馈: CI 系统会在代码推送后快速反馈构建和测试的结果,开发人员能够迅速知道代码是否存在问题。 ### CI 工具 - Jenkins:最广泛使用的开源自动化服务器,支持构建、测试和部署的自动化。 - GitLab CI/CD:GitLab 提供的 CI/CD 工具,紧密集成到 GitLab 平台中,适用于 GitLab 项目。 - Travis CI:基于云的 CI 工具,支持 GitHub 项目的自动化构建和部署。 - CircleCI:提供云端和自托管服务,支持快速构建和自动化测试。 - TeamCity:JetBrains 提供的 CI/CD 解决方案,具有强大的构建和测试功能。 ## CD 持续交付是指将持续集成的代码版本自动化地部署到生产环境之前的测试环境中。持续交付的目标是确保软件始终处于一个可以随时发布的状态。 在持续交付的流程中,每当代码通过 CI 流程(构建和单元测试)后,CD 系统会自动将其部署到开发、测试或预生产环境,并进行进一步的集成测试和验证。 ### 关键点: 自动化部署: 一旦代码通过 CI 流程,就会自动化地部署到一个预生产环境进行进一步测试。 快速发布: 软件的发布周期变得非常短,开发团队可以频繁地发布新版本。 回滚机制: 如果部署的版本存在问题,CD 流程应支持快速回滚到上一个稳定版本。 ### CD 流程的常见步骤: 持续集成完成: 代码通过了构建和单元测试阶段。 自动化部署到预生产环境: 自动化工具将代码部署到一个与生产环境相似的环境(例如 staging 环境)。 集成测试与验证: 在预生产环境中进行集成测试、UI 测试等,确保没有引入新的问题。 发布到生产环境(可选): 如果一切正常,CD 系统可以自动将代码部署到生产环境,或者等待手动批准进行发布。 - Jenkins + 插件: Jenkins 可以通过插件扩展功能,实现自动化部署。 - GitLab CI/CD:GitLab 的 CI/CD 流程提供了完整的持续交付功能。 - Spinnaker:一个开源的持续交付平台,提供全面的生产环境部署和回滚功能。 - Octopus Deploy:一个专注于部署和持续交付的工具,支持多种环境的部署。 - Argo CD:一个 Kubernetes 本地的持续交付工具,专注于 GitOps 流程。 ## CI/CD 要掌握的技术 在实现和优化 CI/CD 流程时,以下技术是开发人员、运维工程师以及 DevOps 工程师需要掌握的: 版本控制系统:Git(GitHub、GitLab、Bitbucket 等) 构建工具: Maven / Gradle(用于 Java) npm / Yarn(用于 Node.js) Makefile(通用构建工具) 自动化测试框架: JUnit / TestNG(Java 测试框架) Mocha / Jasmine / Jest(JavaScript 测试框架) Selenium / Cypress(自动化 UI 测试) CI/CD 工具:Jenkins、GitLab CI/CD、CircleCI、Travis CI、TeamCity 等 容器化技术: Docker(用于容器化应用) Kubernetes(用于容器编排) 自动化部署工具: Ansible、Chef、Puppet(配置管理) 监控和日志工具: Prometheus、Grafana(监控) ELK Stack(日志管理) ## 重点学习 - git 命令 代码的提交、回滚 - Makefile 构建工具 懂基本原理 - Jenkins 一个自动化服务器,会构建脚本 - Docker 会 docker 的基本命令,会通过 Docker 搭建服务 # data model ## 建议 先构建一个前后端分离的项目,后端项目会访问数据库,这个数据库就是一个数据仓库。 然后走 Pipeline 流程,采集数据,清晰数据,将数据入库到上面前后端分离项目的数据仓库中。 第三步,学习 Jenkins,构建 CI/CD 流程。 第四步,根据第二步清洗的数据,搭建数据模型,将数据模型得到的数据,又可以塞入第一步的后端项目的数据库, 这样可以在 Dashboard 中看到模型的结果。 把以上四步关联起来,就是一个很完整且丰富的系统,后期就是不断的打磨。 ## 资料合集 HTML :https://www.runoob.com/html/html-tutorial.html CSS :https://www.runoob.com/css/css-tutorial.html Bootstrap : https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Django 视频:https://www.bilibili.com/video/BV1qb411P7XQ/?spm_id_from=333.999.0.0&vd_source=7165ad177186208f56217f3a6c7a743a 文字教程:https://www.runoob.com/django/django-tutorial.html React 文字:https://www.runoob.com/react/react-tutorial.html 视频课程: https://www.bilibili.com/video/BV1wy4y1D7JT/?spm_id_from=333.999.0.0&vd_source=7165ad177186208f56217f3a6c7a743a