---
title: 基于 Databend 实现的海量日志实时查询服务 | 多点 DMALL
description: '多点 DMALL 是一站式全渠道数字零售解决方案服务商，数字化解构重构零售产业，提供端到端的商业 SaaS 解决方案。本文介绍了 Databend 在 多点 Dmall 在海量日志计算查询场景中的应用。'
slug: category-customer/databend-in-dmall
date: 2023-07-25
tags: [Customer]
category: Customer
cover_url: 'databend-in-dmall.png'
image: 'databend-in-dmall.png'
authors:
  - DatabendLabs
---

> 作者：苏琳
>
> 多点 DMALL 供应链补货团队负责人

多点 DMALL 成立于 2015 年。从创立伊始，就致力于以大数据、云计算、AI 等数字技术改变零售业，是一站式全渠道数字零售解决方案服务商，数字化解构重构零售产业，提供端到端的商业 SaaS 解决方案。

多点 DMALL 通过 DMALL OS 提供零售云一站式解决方案，帮助零售商和品牌商数字化转型，实现线上线下一体化；同时通过多点 App 等工具赋能全渠道经营能力，并提供各类增值服务。

{/* truncate */}

## 需求概述

商家要求支持 4 个月的日志查询，目前线上只支持 1 个月。每天日志是 400 万行项，1 个月的日志量是 1.2 亿， 考虑到后续业务的增长，预计每月日志数据量会增长到 2.5 亿；4 个月的日志量是 10 亿行项左右。

现采用的 MongoDB 集群因资源受限无法支持 10 亿行项存储及查询，急需寻找另外的解决方案。

## Databend 的介绍及优势

Databend 是一个开源的、完全面向云架构的新式数仓，它提供快速的弹性扩展能力，并结合云的弹性、简单性和低成本，使 Data Cloud 构建变得更加容易。Databend 把数据存储在 AWS S3，Azure Blob 等这些云上的存储系统，可以使不同的计算节点挂载同一份数据，从而做到较高的弹性，实现对资源的精细化控制。Databend 在设计上专注以下能力：

- **高性能且部署使用成本低：** 在提供更高的性能的同时，部署成本不到传统数据库 (**MySQL、MongoDB**) 的 1/10；

- **支持标准 sql 语法：** 能兼容 Mybatits 等常用 ORM 框架，对于研发来说没有任何学习成本。

- **支持自动索引：** 系统会自动对所有字段建立索引；无需研发进行优化。

## 技术选型

由于 Databend 可以处理海量数据的查询，并且提供了实时查询和处理能力。恰好满足了多点现在所求。基于以上，我们选择 Databend 实现海量日志实时查询的原因包括有以下四点：

1️⃣ 基于对象存储，成本低

SSD 块设备的 1/10；按实际用量付费

2️⃣ 在线查询

无须从冷备中恢复；可接受的查询性能

3️⃣ 支持大单表

TB 级别；分批持续归档

4️⃣ 兼容 TiDB

MySQL 协议；数据类型兼容

## 使用 Databend 方案

目前使用 Databend 主要是用在计算日志查询场景。

计算任务会将计算日志保存到 MongoDB；然后会通过定时任务，将日志从 MongoDB 同步到 Databend 供页面查询。

![Alt text](../static/img/blog/databend-in-dmall-1.jpg)

## 基于 Databend 的性能测试

### 👨🏻‍💻 **测试环境**

Databend 是计算、存储分离架构

> **计算节点：** 1 \* 4C16G100G (费用 70 美元/月)
>
> \*\*存储：\*\*使用对象存储，按需付费

### 👨🏻‍💻 **测试表结构和数据样例**

1️⃣ **表结构**

```
CREATE TABLE `logs` (
  `tenant` VARCHAR COMMENT,
  `batch_seq` INT COMMENT,
  `order_situations` VARIANT COMMENT,
  `day` VARCHAR COMMENT,
  `shop_code` VARCHAR COMMENT,
  `goods_code` VARCHAR COMMENT,
  `supplier_code` VARCHAR COMMENT,
  `out_supplier_code` VARCHAR COMMENT,
  `out_supplier_type` VARCHAR COMMENT,
  `today_order` INT COMMENT,
  `category` VARCHAR COMMENT,
  `sec_category` VARCHAR COMMENT,
  `thi_category` VARCHAR COMMENT,
  `log_detail` JSON COMMENT
) ENGINE=FUSE

```

2️⃣ **查询性能**

![Alt text](../static/img/blog/databend-in-dmall-2.png)

### 👨🏻‍💻 **测试总结**

在 10 亿数据量级下，常用查询均可做到秒级响应。

## 海量日志实时查询服务通用化解决方案

![Alt text](../static/img/blog/databend-in-dmall-3.png)

## Databend 适用方案

- **大规模数据查询：** Databend 可以处理海量数据的查询。如果你需要对大规模数据进行复杂的查询和分析，Databend 可以作为一个高效的数据湖仓使用。

- **数据仓库和数据湖：** Databend 可以作为数据仓库或数据湖的核心组件，用于存储和管理结构化和半结构化数据。它支持标准的 SQL 查询语言，使得数据分析师和工程师可以方便地进行数据探索和分析。

- **实时数据处理：** Databend 提供了实时查询和处理能力，适用于对实时数据流进行查询和分析的场景。你可以将实时数据流导入到 Databend 中，并通过 SQL 查询语言实时分析数据。
