非科班大二做的电商数仓数据模拟平台(支持Docker一键运行)的经历
我做了一个开源的电商数据模拟平台(非科班转数据工程)
最近把自己做了几个月的项目整理开源了,想记录一下整个过程。
我是广告学背景,大二开始转向数据工程方向。
一开始学习数仓、Hive、SQL 时,很快遇到一个特别现实的问题:
没有数据。
很多教程默认数据已经存在,但真正自己练习时发现:
- 培训班给的数据太简单
- 没有真实业务流程
- 很难做数仓分层练习
- ETL、建模基本练不起来
当时的感受就是:
学的东西很多,但没有可以真正动手的数据。
---
第一阶段:用 MySQL 硬模拟数据(踩坑阶段)
最开始我直接用 MySQL 写 SQL 生成数据。
大概折腾了一个多月:
- 用笛卡尔积拼用户、订单数据
- 一批一批 insert
- 不断调 SQL
结果非常痛苦:
- SQL 极其复杂
- 数据关系难维护
- 插入 10 万订单还能忍
- 想生成 100 万订单时数据库经常直接卡死或超时
那时候我第一次意识到:
数据库适合查询数据,但不适合生成复杂业务数据。
---
第二阶段:改用 Python 重写模拟器
后来我把整个逻辑改成 Python。
体验直接发生变化:
- 数据规模可以自由控制
- 业务逻辑可以写成代码
- 订单生命周期可以真实模拟
- 生成速度比 SQL 快很多
当时甚至有点无语:
早知道就不该用 SQL 硬写一个月 😂
写完后我已经能随便生成数据做数仓练习了。
但新的问题出现了:
每次都要改参数、跑脚本。
于是我开始想:
能不能把它做成一个网站?
---
第三阶段:把模拟器做成 Web 平台
后来开始学习 FastAPI,把模拟器做成 Web 控制台。
目标很简单:
- 不写代码也能生成数据
- 点一下按钮就能出数据
- 参数可配置
- 可以重复实验
于是就有了现在的 Web UI。
---
第四阶段:从个人工具到开源项目
在自学过程中我越来越确定一件事:
很多数据工程初学者真正缺的不是教程,而是:
可用的数据。
所以我决定把这个项目开源。
它从:
个人学习脚本
→ 数据模拟工具
→ 可公开使用的平台
慢慢演化出来。
---
第五阶段:加入 Docker 一键运行
后来又发现一个问题:
很多人环境装不起来。
于是又加了 Docker。
现在基本可以做到:
docker run data-sim
直接启动。
---
为什么做这个项目
因为我自己经历过:
学数仓的时候,没有数据真的很难受。
如果这个项目能帮到后来的人,那它就有意义了。
GitHub(欢迎交流):
https://github.com/learner2638/ecommerce-data-simulator#牛客AI配图神器#
最近把自己做了几个月的项目整理开源了,想记录一下整个过程。
我是广告学背景,大二开始转向数据工程方向。
一开始学习数仓、Hive、SQL 时,很快遇到一个特别现实的问题:
没有数据。
很多教程默认数据已经存在,但真正自己练习时发现:
- 培训班给的数据太简单
- 没有真实业务流程
- 很难做数仓分层练习
- ETL、建模基本练不起来
当时的感受就是:
学的东西很多,但没有可以真正动手的数据。
---
第一阶段:用 MySQL 硬模拟数据(踩坑阶段)
最开始我直接用 MySQL 写 SQL 生成数据。
大概折腾了一个多月:
- 用笛卡尔积拼用户、订单数据
- 一批一批 insert
- 不断调 SQL
结果非常痛苦:
- SQL 极其复杂
- 数据关系难维护
- 插入 10 万订单还能忍
- 想生成 100 万订单时数据库经常直接卡死或超时
那时候我第一次意识到:
数据库适合查询数据,但不适合生成复杂业务数据。
---
第二阶段:改用 Python 重写模拟器
后来我把整个逻辑改成 Python。
体验直接发生变化:
- 数据规模可以自由控制
- 业务逻辑可以写成代码
- 订单生命周期可以真实模拟
- 生成速度比 SQL 快很多
当时甚至有点无语:
早知道就不该用 SQL 硬写一个月 😂
写完后我已经能随便生成数据做数仓练习了。
但新的问题出现了:
每次都要改参数、跑脚本。
于是我开始想:
能不能把它做成一个网站?
---
第三阶段:把模拟器做成 Web 平台
后来开始学习 FastAPI,把模拟器做成 Web 控制台。
目标很简单:
- 不写代码也能生成数据
- 点一下按钮就能出数据
- 参数可配置
- 可以重复实验
于是就有了现在的 Web UI。
---
第四阶段:从个人工具到开源项目
在自学过程中我越来越确定一件事:
很多数据工程初学者真正缺的不是教程,而是:
可用的数据。
所以我决定把这个项目开源。
它从:
个人学习脚本
→ 数据模拟工具
→ 可公开使用的平台
慢慢演化出来。
---
第五阶段:加入 Docker 一键运行
后来又发现一个问题:
很多人环境装不起来。
于是又加了 Docker。
现在基本可以做到:
docker run data-sim
直接启动。
---
为什么做这个项目
因为我自己经历过:
学数仓的时候,没有数据真的很难受。
如果这个项目能帮到后来的人,那它就有意义了。
GitHub(欢迎交流):
https://github.com/learner2638/ecommerce-data-simulator#牛客AI配图神器#
全部评论
相关推荐
凡岛公司福利 889人发布