数据工程技术栈
1. 数据库
1.1 关系型数据库 (RDBMS)
- MySQL: 实现了数据的存储和查询,通过 SQL 语句进行操作,支持事务,保证数据一致性。
- PostgreSQL: 功能强大的开源关系型数据库,支持更丰富的数据类型和查询功能,适用于复杂业务场景。
- Oracle Database: 企业级关系型数据库,性能优异,功能强大,适用于大型企业级应用。
- SQL Server: 微软公司开发的关系型数据库,与微软生态系统紧密集成,适用于 Windows 平台。
- MariaDB: MySQL 的分支版本,开源且社区活跃,性能优异,可以作为 MySQL 的替代品。
- DB2: IBM 公司开发的关系型数据库,历史悠久,功能强大,适用于大型企业级应用。
- SQLite: 轻量级嵌入式数据库,无需独立的服务器进程,适用于移动应用和嵌入式设备。
1.2 NoSQL 数据库
- MongoDB: 面向文档的 NoSQL 数据库,以 JSON 格式存储数据,灵活易用,适用于快速迭代的应用。
- Cassandra: 分布式 NoSQL 数据库,高可用性和可扩展性强,适用于处理海量数据。
- Redis: 内存数据库,常用作缓存和消息队列,速度快,适用于高性能场景。
- Couchbase: 面向文档的 NoSQL 数据库,支持高并发和数据一致性,适用于移动应用和物联网。
- DynamoDB: AWS 提供的完全托管的 NoSQL 数据库,高可用性和可扩展性强,适用于无服务器架构。
- Neo4j (图数据库): 专门用于存储和查询图结构数据的数据库,适用于社交网络、推荐系统等场景。
1.3 时序数据库
- InfluxDB: 专门用于存储和查询时间序列数据的数据库,适用于监控系统、物联网等场景。
- TimescaleDB: 基于 PostgreSQL 扩展的时序数据库,兼具 PostgreSQL 的功能和时序数据的处理能力。
- ClickHouse: 列式存储的时序数据库,查询速度极快,适用于大规模日志分析等场景。
1.4 列式数据库
- ClickHouse: 列式存储的数据库,查询速度极快,适用于大规模数据分析等场景。
- Vertica: 面向列的分析型数据库,适用于数据仓库和商业智能等场景。
- Druid: 列式存储的时序数据库,支持实时数据摄取和查询,适用于监控系统、广告分析等场景。
2. 消息队列
- Kafka: 高吞吐量的分布式消息队列,适用于构建实时数据管道和流处理应用。
- RabbitMQ: 功能丰富的消息队列,支持多种消息协议和路由机制,适用于各种应用场景。
- ActiveMQ: 老牌的消息队列,功能丰富,但性能相对较低,适用于对性能要求不高的场景。
- RocketMQ: 阿里巴巴开源的消息队列,高性能和高可靠性,适用于电商、金融等领域。
- Pulsar: 下一代云原生消息队列,支持多租户和地理复制,适用于构建高性能、可扩展的应用。
- NATS: 轻量级高性能消息队列,支持多种消息模式,适用于微服务架构和物联网场景。
3. 分布式协调
- ZooKeeper: 分布式协调服务,用于维护配置信息、命名服务、分布式锁等。
- etcd: 分布式键值存储,提供高可用性和强一致性,适用于配置管理、服务发现等场景。
- Consul: 分布式服务发现和配置管理工具,提供服务注册、健康检查、键值存储等功能。
4. RPC 框架
- gRPC: Google 开源的高性能 RPC 框架,支持多种编程语言。
- Dubbo: 阿里巴巴开源的 RPC 框架,支持 Java 语言。
- Thrift: Facebook 开源的 RPC 框架,支持多种编程语言。
5. 搜索引擎
- Elasticsearch: 分布式搜索和分析引擎,提供全文搜索、结构化搜索、分析等功能。
- Solr: 基于 Lucene 的搜索引擎,提供全文搜索、高亮显示、分面搜索等功能。
- Splunk: 机器数据的搜索、分析和可视化平台,适用于日志分析、安全监控等场景。
6. 大数据处理
- Hadoop
- HDFS: 分布式文件系统,提供高容错性和可扩展性,适用于存储海量数据。
- YARN: 资源调度系统,负责集群资源管理和任务调度。
- MapReduce: 分布式计算模型,用于处理大规模数据集。
- Spark: 快速、通用的集群计算引擎,支持批处理、流处理、机器学习等多种计算模型。
- Flink: 流处理引擎,支持高吞吐量、低延迟的数据处理,适用于实时数据分析等场景。
- Hive: 数据仓库工具,提供 SQL 查询接口,方便用户进行数据分析。
- Presto/Trino: 分布式 SQL 查询引擎,能够快速查询多个数据源的数据。
- Beam: 批处理和流处理的统一编程模型,可以使用不同的计算引擎执行。
7. 数据流处理
- Kafka Streams: 基于 Kafka 的流处理框架,可以构建实时数据处理管道。
- Flink: 流处理引擎,支持高吞吐量、低延迟的数据处理,适用于实时数据分析等场景。
- Spark Streaming: 基于 Spark 的流处理框架,可以处理实时数据流。
- Storm: 分布式实时计算系统,支持高吞吐量的数据处理,适用于实时数据分析等场景。
8. Web 框架
- Spring: Java 开发框架,提供依赖注入、面向切面编程等功能。
- Spring Boot: 基于 Spring 的快速开发框架,简化了 Spring 应用的开发和部署。
- Flask: 轻量级 Python Web 框架,灵活易用,适用于小型应用和 API 开发。
- Tornado: 异步非阻塞的 Python Web 框架,高性能,适用于实时应用。
9. 前端框架
- Vue.js: 渐进式 JavaScript 框架,易学易用,适用于构建用户界面。
- React.js: 声明式 JavaScript 库,组件化开发,适用于构建复杂用户界面。
- Vant (基于 Vue.js 的移动端组件库): 提供了丰富的移动端组件,可以快速构建移动端应用。
10. 跨平台移动开发
- Flutter: 使用 Dart 语言开发的跨平台移动应用开发框架,可以构建高性能、美观的移动应用。
11. 容器化
- Docker: 容器化平台,可以将应用程序及其依赖打包成镜像,方便部署和迁移。
- Kubernetes: 容器编排工具,可以管理和调度 Docker 容器,实现应用的自动化部署、扩展和管理。
- Podman: 兼容 OCI 标准的容器引擎,可以替代 Docker,提供更轻量级的容器化解决方案。
- containerd: 容器运行时环境,负责容器的生命周期管理。
12. 监控和指标
- Prometheus: 开源监控系统,可以收集和存储时间序列数据,并提供告警功能。
- Grafana: 数据可视化工具,可以创建仪表盘和图表,展示 Prometheus 等监控系统收集的数据。
- Zabbix: 企业级监控系统,提供服务器、网络、应用等方面的监控功能。
- Nagios: 老牌的监控系统,提供主机、服务、网络等方面的监控功能。
- Datadog: 云监控平台,提供基础设施、应用、业务等方面的监控功能。
- Dynatrace: 应用性能监控平台,提供代码级性能分析、用户体验监控等功能。
13. Web 服务器 & 反向代理
- Nginx: 高性能 Web 服务器和反向代理服务器,支持负载均衡、缓存等功能。
- Apache HTTP Server: 流行的 Web 服务器,功能强大,支持多种模块扩展。
- Caddy: 易于使用的 Web 服务器和反向代理服务器,支持 HTTPS 自动配置。
- Traefik: 云原生反向代理和负载均衡器,支持动态配置和服务发现。
- Envoy Proxy: 高性能代理服务器,支持服务网格、边缘计算等场景。
14. 配置中心
- Apollo: 分布式配置中心,支持配置热更新、版本管理等功能。
- Spring Cloud Config: Spring Cloud 生态中的配置中心,支持 Git 存储配置信息。
- Consul: 分布式服务发现和配置管理工具,提供键值存储功能,可以作为配置中心使用。
- etcd: 分布式键值存储,提供高可用性和强一致性,可以作为配置中心使用。
15. CI/CD
- Jenkins: 开源的持续集成和持续交付工具,可以自动化构建、测试和部署应用程序。
- GitLab CI/CD: 集成在 GitLab 中的 CI/CD 工具,可以方便地进行代码构建、测试和部署。
- GitHub Actions: GitHub 提供的 CI/CD 服务,可以直接在代码仓库中定义工作流程。
- CircleCI: 云 CI/CD 平台,支持多种编程语言和框架。
- Travis CI: 云 CI/CD 平台,支持开源项目和私有项目。
16. 版本控制
- Git: 分布式版本控制系统,速度快,灵活易用,适用于各种规模的项目。
- SVN: 集中式版本控制系统,管理方便,适用于中小型项目。
- Mercurial: 分布式版本控制系统,功能强大,适用于大型项目。
17. 数据可视化
- Grafana: 数据可视化工具,可以创建仪表盘和图表,展示各种数据源的数据。
- Superset: 数据探索和可视化平台,支持多种数据源和图表类型。
- Tableau: 商业智能和数据可视化工具,功能强大,操作简便。
- Power BI: 微软公司开发的商业智能工具,可以连接多种数据源,创建交互式报表和仪表盘。
- Metabase: 开源数据分析工具,可以连接多种数据源,创建查询和仪表盘。
18. 机器学习
- TensorFlow: 开源机器学习框架,支持多种机器学习算法,适用于各种场景。
- PyTorch: 开源机器学习框架,灵活易用,适用于研究和生产环境。
- scikit-learn: Python 机器学习库,提供了丰富的机器学习算法和工具。
- Keras: 高级神经网络 API,可以运行在 TensorFlow、Theano 等后端之上。
19. 数据科学工具
- Jupyter Notebook: 交互式编程环境,可以编写代码、运行代码、展示结果,适用于数据分析和机器学习。
- Spyder: Python 集成开发环境,提供了代码编辑、调试、数据可视化等功能。
- RStudio: R 语言集成开发环境,提供了代码编辑、调试、数据可视化等功能。
- Zeppelin Notebook: 交互式数据分析工具,支持多种数据源和编程语言。
20. 物联网 (IoT)
- EMQX (MQTT Broker): MQTT 消息代理,可以连接和管理大量的物联网设备。
- ThingsBoard (IoT Platform): 物联网平台,提供设备管理、数据采集、规则引擎等功能。
- Node-RED (Low-code programming): 低代码编程工具,可以快速构建物联网应用。
21. 编程语言
- Python: 通用编程语言,语法简洁,易学易用,拥有丰富的第三方库,适用于数据分析、机器学习、Web 开发等领域。
- Java: 面向对象编程语言,性能优异,生态系统完善,适用于企业级应用开发。
- Go: 并发编程语言,性能优异,适用于高性能服务器开发。
- JavaScript: 前端开发语言,也用于后端开发和移动应用开发。
- Scala: 运行在 JVM 上的编程语言,结合了面向对象编程和函数式编程的优点,适用于大数据处理。
22. 云服务提供商
- AWS: 亚马逊云计算服务平台,提供丰富的云计算服务。
- Azure: 微软云计算服务平台,提供丰富的云计算服务。
- Google Cloud Platform: 谷歌云计算服务平台,提供丰富的云计算服务。
- Alibaba Cloud: 阿里云计算服务平台,提供丰富的云计算服务。
23. 其他
- Airflow (Workflow management): 工作流管理工具,可以定义、调度和监控复杂的数据处理流程。
- Celery (Distributed Task Queue): 分布式任务队列,可以异步执行耗时任务。
- Redis (Cache/Message broker): 内存数据库,常用作缓存、消息队列和会话存储。
- Vault (Secrets management): 密钥管理工具,可以安全地存储和管理敏感信息。
- Mybatis (Java 持久化框架): Java 持久化框架,简化了数据库操作。
- Electron (跨平台桌面应用开发框架): 使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架,兼容 Mac、Windows 和 Linux。