数据库、数据源、数据存储引擎、数据查询引擎、数据处理引擎

170 阅读3分钟

数据库(Database)

  • 数据库是存储数据的容器
  • 数据库是一个结构化的数据集合,用于存储和组织数据,提供数据的持久化存储和查询功能
  • 数据库管理系统(DBMS)用于管理数据库,包括数据的增删改查、事务管理、安全性控制等。

举例

  • 关系型数据库:MySQL、Oracle、SQL Server
  • NoSQL数据库:MongoDB、Redis
  • 列式数据库:ClickHouse、HBase

数据源(Data Source)

  • 数据源是指数据的来源,可以是任何存储、生成或传输数据的地方系统
  • 通常来说,数据源更倾向于指代数据的原始来源,如数据库、日志、API接口等
  • 数据源提供数据,但不一定包含数据的结构化格式和管理功能(也就是不一定包括底层数据存储引擎
  • 数据可以存储在各种形式中,如结构化数据库、非结构化文本、图像/视频文件等。

举例

  • 日志文件(Kafka)、数据库、API接口、传感器数据等

数据存储引擎(Data Storage Engine)

  • 数据存储引擎负责数据的物理存储管理
  • 数据存储引擎提供数据的持久化存储和高效的数据访问功能

举例

  • HDFS(Hadoop Distributed File System)、Amazon S3、Google Cloud Storage、Apache Cassandra 等

数据查询引擎(Data Query Engine)

  • 数据查询引擎负责执行数据查询分析处理操作
  • 数据查询引擎允许用户从数据源中提取数据,并执行复杂的查询和分析操作

举例

  • Apache Hive(基于MR)、Apache Spark、Trino(Presto)、Impala、Elasticsearch 等
  • MapReduce(MR):MapReduce 是一个分布式数据处理框架,用于将大规模数据集并行处理成一个键/值对的集合。它通常用于大规模数据的处理和计算任务,涉及数据的转换、映射、归约等操作。
  • Apache Tez:Tez 是一个更高层次的计算引擎,用于优化和加速复杂数据处理任务。也可以作为 Hive 查询的执行引擎。
  • Presto (Trino):Presto(现今更名为 Trino)是一个高性能、分布式 SQL 查询引擎,用于实时查询和分析大规模数据。它支持连接多种数据源,执行复杂的 SQL 查询,并提供高效的数据查询操作。可以代替 Hive 来执行复杂的 SQL 查询任务。

数据处理引擎(Data Processing Engine)

  • 数据处理引擎用于执行数据处理、转换、计算和建模任务,处理原始数据并生成派生数据或新的数据集。
  • 专注于处理和转换数据,进行ETL(Extract, Transform, Load)操作、数据清洗、加工、计算和模型训练等。

举例

  • Apache Spark、Apache Flink、Apache Beam

关系和区别:

  • 关系:数据库通常用于存储和管理数据;数据源是数据的原始来源;数据存储引擎负责数据的物理存储;数据查询引擎负责执行数据查询和分析。
  • 区别:数据库是一种软件,用于存储和管理数据;数据源是数据的来源;数据存储引擎是数据的存储支持;数据查询引擎用于对数据进行查询和分析。

解读

上面更像是一个概念介绍,因为它们之间往往不是独立存在,而是相互依赖的关系,比如 ClickHouse 和 StarRocks 可以作为专注于数据存储引擎数据查询引擎的系统

又或者Impala 和 Elasticsearch 在数据处理和分析领域扮演不同的角色,可以根据其主要功能来划分它们属于查询引擎还是处理引擎。