数据工程技术栈

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。