当前位置:首页 > 技术 > 正文内容

Apache Doris 实时分析数据表设计指南

访客 技术 2026年6月13日 1

1. 实时数据分析:为何选择 Apache Doris?

在当前以数据驱动的商业环境中,企业对快速处理与分析海量数据的能力需求日益增长。Apache Doris 作为一款开源的 MPP(大规模并行处理)分析型数据库,凭借其卓越的性能和便捷性,已成为实时数据分析领域的优选方案。

Doris 的核心优势体现在其极速查询响应高并发支持简便的操作。相较于传统的 Hadoop 生态系统,Doris 能够实现亚秒级的数据查询返回,并支持每秒数千次的并发查询请求(QPS)。这使其尤其适用于那些对实时性有高要求的业务场景,例如用户行为洞察、即时报表生成和运营状态监控等。

对于初次接触 Doris 的开发者而言,其与 MySQL 协议的高度兼容性是一大亮点。这意味着用户可以使用熟悉的 MySQL 客户端工具连接 Doris,并且大部分 MySQL 的 SQL 语法在 Doris 中也能直接运行,极大降低了学习曲线和技术入门门槛。

2. 数据表构建前的准备工作

在着手创建数据表之前,确保您的 Doris 集群已正确部署并处于正常运行状态是至关重要的一步。

2.1 集群状态检查

您可以通过以下 SQL 命令检查 Doris 集群的前端(FE)和后端(BE)节点状态:

# 连接到FE节点并检查其状态
mysql -h FE_HOST_ADDRESS -P 9030 -uadmin -pYOUR_PASSWORD -e "SHOW FRONTENDS;"

# 连接到FE节点并检查BE节点状态
mysql -h FE_HOST_ADDRESS -P 9030 -uadmin -pYOUR_PASSWORD -e "SHOW BACKENDS;"

提示: 在生产环境中,强烈建议为 Doris 创建专用的操作用户,并为其配置最小必需的权限,而非直接使用默认的 root 或 admin 账户进行日常操作。

2.2 逻辑数据库的建立

尽管 Doris 允许在不预先创建数据库的情况下直接创建数据表,但为了实现更清晰、更结构化的数据管理,建议首先创建专用的逻辑数据库:

CREATE DATABASE IF NOT EXISTS business_analytics_db;
USE business_analytics_db;

3. Doris 数据模型概览

Doris 提供了多种核心数据模型,每种模型都针对不同的数据存储和查询模式进行了优化,以满足多样化的业务需求。

3.1 明细模型(Duplicate Key Model)

明细模型是 Doris 中最基础的数据模型。它忠实地保存所有导入的原始数据,不对数据进行任何形式的聚合处理。即使存在完全相同的数据行,也会被完整地保留下来。这种模型非常适合那些需要精确记录所有原始事件或交易明细的场景,例如系统日志分析、交易流水记录或原始用户行为事件存储。

3.2 明细模型建表示例

以下是一个基于明细模型创建用户访问日志表的具体示例。此表用于记录用户的每一次访问行为的详细信息:

CREATE TABLE IF NOT EXISTS user_access_log (
    `user_identifier` BIGINT COMMENT '用户唯一标识符',
    `session_id` VARCHAR(64) COMMENT '会话ID',
    `event_time` DATETIME COMMENT '事件发生时间',
    `page_url` VARCHAR(512) COMMENT '访问页面URL',
    `client_ip` VARCHAR(30) COMMENT '客户端IP地址',
    `browser_type` VARCHAR(100) COMMENT '浏览器类型'
)
DUPLICATE KEY(user_identifier, session_id, event_time)
PARTITION BY RANGE(`event_time`) (
    PARTITION p20230101 VALUES LESS THAN ('2023-01-02 00:00:00'),
    PARTITION p20230102 VALUES LESS THAN ('2023-01-03 00:00:00'),
    PARTITION p20230103 VALUES LESS THAN ('2023-01-04 00:00:00')
    -- ... 后续分区可根据实际数据量和保留策略动态添加
)
DISTRIBUTED BY HASH(user_identifier) BUCKETS 10
PROPERTIES (
    "replication_num" = "3",
    "storage_format" = "V2",
    "compression" = "LZ4"
);

在这个示例中:

  • `DUPLICATE KEY(user_identifier, session_id, event_time)`: 指定了用于数据去重的关键列,在明细模型中,这些键会共同标识一行数据。如果导入的数据与现有数据行在这些键上完全匹配,Doris 仍会将其作为新行插入,不会覆盖。
  • `PARTITION BY RANGE(event_time)`: 表按 `event_time` 字段进行范围分区,这里以每日为单位创建了分区,便于历史数据的管理和按时间范围的查询优化。
  • `DISTRIBUTED BY HASH(user_identifier) BUCKETS 10`: 数据会根据 `user_identifier` 的哈希值均匀分布到 10 个数据桶(Bucket)中,以实现并行查询。
  • `PROPERTIES`: 定义了表的属性,例如 `replication_num` 设置数据副本数为 3,`storage_format` 指定存储格式为 V2,`compression` 启用 LZ4 压缩以节省存储空间。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。