Quantcast
Channel: 小蓝博客
Viewing all articles
Browse latest Browse all 3145

Doris与MySQL中创建表记录存储过程执行步骤

$
0
0

Doris与MySQL中创建表记录与存储过程执行步骤详解 🛠️📊

数据库管理领域,DorisMySQL作为两种广泛使用的关系型数据库系统,因其各自的优势在不同的应用场景中得到广泛应用。本文将详细介绍如何在DorisMySQL中创建表记录及执行存储过程,通过具体步骤、代码示例和对比分析,帮助您深入理解并掌握这两种数据库系统的操作方法。

目录

  1. 简介
  2. 准备工作
  3. 在MySQL中创建数据库与表
  4. 在Doris中创建数据库与表
  5. 在MySQL中创建与执行存储过程
  6. 在Doris中创建与执行存储过程
  7. Doris与MySQL的对比分析
  8. 常见问题与解决方案
  9. 工作流程图 🛠️
  10. 对比图表 📈
  11. 总结

简介

MySQL是世界上最流行的开源关系型数据库管理系统之一,因其高性能易用性广泛的社区支持而被广泛应用于各类应用中。Doris,全称Apache Doris,是一款现代化的分布式MPP(Massively Parallel Processing)数据库,专为大数据分析实时查询设计,具备高并发高扩展性的特点。

主要特点对比

特性MySQLDoris
架构单机或主从架构分布式MPP架构
性能适合事务处理和中小规模数据优秀的大规模数据分析和实时查询能力
扩展性横向扩展受限高度可扩展,支持水平扩展
存储引擎多种存储引擎(InnoDB等)列式存储,优化分析型查询
使用场景Web应用、事务性应用大数据分析、实时数据查询、报表生成
社区与支持广泛的社区支持和丰富的文档快速发展的社区,官方文档和社区支持逐步完善

准备工作

在开始之前,请确保已完成以下准备工作

  1. 安装MySQL

    • 下载并安装最新版本的MySQL。
    • 配置MySQL服务器,确保其正常运行。
    • 获取数据库的访问权限(用户名和密码)。
  2. 安装Doris

    • 下载并安装Apache Doris(可参考官方文档)。
    • 配置Doris集群,确保其正常运行。
    • 获取Doris的访问权限(用户名和密码)。
  3. 安装数据库客户端工具

    • 推荐使用MySQL WorkbenchDBeaver等工具,以便于管理和操作数据库。
  4. 安装Python环境(可选)

    • 如果需要通过Python脚本操作数据库,确保已安装Python 3.x及相关数据库连接库。

在MySQL中创建数据库与表

在MySQL中创建数据库和表是进行数据存储和管理的基础步骤。以下将详细介绍如何在MySQL中完成这些操作。

1. 登录MySQL

首先,使用命令行工具登录到MySQL服务器:

mysql -u root -p

解释

  • -u root 指定使用root用户登录。
  • -p 表示需要输入密码。

2. 创建数据库

登录成功后,创建一个新的数据库:

CREATE DATABASE test_db;

解释

  • CREATE DATABASE 是用于创建新数据库的SQL命令。
  • test_db 是数据库的名称,可以根据实际需求更改。

3. 使用数据库

切换到刚创建的数据库:

USE test_db;

解释

  • USE 命令用于选择当前操作的数据库。

4. 创建表

在数据库中创建一个名为 users的表,包含 idnameemail三个字段:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL
);

解释

  • CREATE TABLE users 创建一个名为 users的表。
  • id INT AUTO_INCREMENT PRIMARY KEY 定义 id为整型、自增且为主键。
  • name VARCHAR(255) NOT NULL 定义 name为长度不超过255的字符串,不能为空。
  • email VARCHAR(255) UNIQUE NOT NULL 定义 email为唯一且不能为空的字符串。

5. 插入数据

users表中插入一条记录:

INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');

解释

  • INSERT INTO users (name, email) 指定要插入数据的表和列。
  • VALUES ('张三', 'zhangsan@example.com') 指定插入的具体值。

6. 查询数据

查询 users表中的所有记录:

SELECT * FROM users;

解释

  • SELECT * 表示选择所有列。
  • FROM users 指定数据来源的表。

在Doris中创建数据库与表

Apache Doris是一款高性能的分布式数据库,适用于大规模数据分析。以下是在Doris中创建数据库和表的详细步骤。

1. 登录Doris

使用命令行工具或数据库客户端工具连接到Doris集群。

mysql -h your_doris_host -P 9030 -u root

解释

  • -h your_doris_host 指定Doris的主机地址。
  • -P 9030 指定Doris的端口号,默认为9030。
  • -u root 使用root用户登录。

2. 创建数据库

在Doris中创建一个新的数据库:

CREATE DATABASE test_db;

解释

  • 与MySQL类似,CREATE DATABASE 用于创建新数据库。

3. 使用数据库

切换到刚创建的数据库:

USE test_db;

4. 创建表

test_db数据库中创建一个名为 users的表:

CREATE TABLE users (
    id INT,
    name VARCHAR(255),
    email VARCHAR(255)
) ENGINE=OLAP
DUPLICATE KEY(id)
COMMENT '用户表'
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES (
    "replication_num" = "3"
);

解释

  • CREATE TABLE users 创建一个名为 users的表。
  • id INT, name VARCHAR(255), email VARCHAR(255) 定义表的列。
  • ENGINE=OLAP 指定存储引擎为OLAP,适用于分析型查询。
  • DUPLICATE KEY(id) 指定 id为重复键,用于数据分布。
  • COMMENT '用户表' 添加表注释。
  • DISTRIBUTED BY HASH(id) BUCKETS 10 指定数据分布方式,通过 id的哈希值分成10个桶。
  • PROPERTIES ("replication_num" = "3") 设置副本数量为3,保证数据高可用。

5. 插入数据

users表中插入一条记录:

INSERT INTO users (id, name, email) VALUES (1, '李四', 'lisi@example.com');

解释

  • INSERT INTO users (id, name, email) 指定要插入数据的表和列。
  • VALUES (1, '李四', 'lisi@example.com') 指定插入的具体值。

6. 查询数据

查询 users表中的所有记录:

SELECT * FROM users;

在MySQL中创建与执行存储过程

存储过程是预编译的一组SQL语句,存储在数据库中,可以重复执行,简化复杂操作。以下是在MySQL中创建和执行存储过程的详细步骤。

1. 创建存储过程

创建一个名为 add_user的存储过程,用于向 users表插入新记录:

DELIMITER //
CREATE PROCEDURE add_user(IN user_name VARCHAR(255), IN user_email VARCHAR(255))
BEGIN
    INSERT INTO users (name, email) VALUES (user_name, user_email);
END //
DELIMITER ;

解释

  • DELIMITER // 改变命令分隔符,避免与存储过程内部的 ;冲突。
  • CREATE PROCEDURE add_user 定义存储过程名称为 add_user
  • (IN user_name VARCHAR(255), IN user_email VARCHAR(255)) 定义两个输入参数。
  • BEGIN ... END 包含存储过程的SQL语句。
  • INSERT INTO users (name, email) VALUES (user_name, user_email); 插入新记录。
  • DELIMITER ; 恢复默认命令分隔符。

2. 执行存储过程

调用 add_user存储过程,插入新用户:

CALL add_user('王五', 'wangwu@example.com');

解释

  • CALL add_user('王五', 'wangwu@example.com'); 执行存储过程,并传入具体参数。

3. 查询结果

再次查询 users表,查看插入的记录:

SELECT * FROM users;

在Doris中创建与执行存储过程

Apache Doris目前尚不支持与MySQL完全相同的存储过程功能,但可以通过SQL脚本外部程序实现类似的功能。以下是如何在Doris中模拟存储过程的步骤。

1. 创建存储过程功能的SQL脚本

由于Doris不支持存储过程,可以编写一个SQL脚本来实现相同的功能。例如,创建一个用于插入用户的SQL脚本 add_user.sql

INSERT INTO users (id, name, email) VALUES (2, '赵六', 'zhaoliu@example.com');

2. 执行SQL脚本

通过命令行工具或数据库客户端执行该脚本:

mysql -h your_doris_host -P 9030 -u root -p < add_user.sql

解释

  • -h your_doris_host 指定Doris的主机地址。
  • -P 9030 指定端口号。
  • -u root 使用root用户登录。
  • -p 提示输入密码。
  • < add_user.sql 将SQL脚本传递给Doris执行。

3. 使用外部程序实现存储过程功能

可以使用Python等编程语言编写脚本,实现更复杂的存储过程功能。例如,使用Python脚本插入用户:

import mysql.connector
from mysql.connector import Error

def add_user(id, name, email):
    try:
        connection = mysql.connector.connect(
            host='your_doris_host',
            port=9030,
            user='root',
            password='your_password',
            database='test_db'
        )
        if connection.is_connected():
            cursor = connection.cursor()
            insert_query = "INSERT INTO users (id, name, email) VALUES (%s, %s, %s)"
            cursor.execute(insert_query, (id, name, email))
            connection.commit()
            print("用户插入成功")
    except Error as e:
        print(f"错误: {e}")
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()

# 调用函数
add_user(3, '孙七', 'sunqi@example.com')

解释

  • 导入库:引入 mysql.connector用于连接Doris。
  • 定义函数add_user函数接收用户信息并插入到 users表中。
  • 建立连接:使用Doris的连接参数建立数据库连接。
  • 执行插入操作:通过参数化查询插入数据,防止SQL注入。
  • 异常处理:捕捉并打印任何错误。
  • 关闭连接:确保数据库连接在操作完成后关闭。

Doris与MySQL的对比分析

在创建表记录与执行存储过程方面,DorisMySQL各有优势和限制。以下是两者的详细对比分析:

特性MySQLDoris
存储过程支持原生支持,功能强大不支持原生存储过程,通过脚本或外部程序实现
创建表的灵活性支持多种存储引擎,适用于事务处理和分析型应用列式存储优化分析型查询,但事务支持有限
性能高效的事务处理和中小规模数据查询优秀的大规模数据分析和实时查询能力
扩展性横向扩展受限,适合中小型应用高度可扩展,支持大规模分布式集群
数据一致性强一致性,适合需要严格数据一致性的应用最终一致性,适合大数据分析场景
操作简便性丰富的工具和文档支持,易于上手相对复杂,需要一定的分布式系统知识
社区与支持广泛的社区支持和丰富的文档快速发展的社区,官方文档不断完善

性能对比

大数据分析实时查询方面,Doris表现优异,能够高效处理PB级别的数据,并支持高并发查询。而MySQL事务处理中小规模数据查询中表现更为出色,适合Web应用和传统的事务性业务。

功能对比

MySQL支持丰富的存储过程触发器视图,适合复杂的业务逻辑处理。而Doris目前不支持存储过程,需通过外部脚本或程序实现类似功能,更适合纯粹的数据分析任务。

扩展性对比

Doris的分布式架构使其具有极高的扩展性,能够通过增加节点轻松扩展存储和计算能力。相比之下,MySQL的横向扩展能力较弱,更多依赖于主从复制和分片技术,扩展过程相对复杂。


常见问题与解决方案

1. Doris不支持存储过程

问题:在Doris中无法创建和使用存储过程,影响复杂业务逻辑的实现。

解决方案

  • 使用外部脚本或程序:通过Python、Java等编程语言编写脚本,实现存储过程的功能。
  • 利用SQL脚本:编写SQL脚本文件,批量执行复杂操作。

2. 数据一致性问题

问题:Doris采用最终一致性,可能导致数据在短时间内不一致。

解决方案

  • 合理设计数据更新策略:确保关键业务逻辑在一致性达成前不影响应用。
  • 监控数据同步状态:使用监控工具跟踪数据同步进度,及时发现并处理不一致问题。

3. 表创建失败

问题:在Doris中创建表时,出现语法错误或配置问题导致表创建失败。

解决方案

  • 检查SQL语法:确保SQL语句符合Doris的语法规范。
  • 验证配置参数:确保分布式配置参数(如桶数量、副本数)合理设置。
  • 参考官方文档:查阅Doris的官方文档,获取正确的表创建语法和示例。

4. 性能瓶颈

问题:在MySQL或Doris中执行复杂查询时,出现性能瓶颈。

解决方案

  • 优化查询语句:使用索引、避免全表扫描、合理使用JOIN等技巧优化SQL语句。
  • 调整数据库配置:根据实际需求调整缓存大小、连接池等数据库配置参数。
  • 扩展硬件资源:为数据库服务器增加CPU、内存和存储资源,提高处理能力。

工作流程图 🛠️

以下是Doris与MySQL中创建表记录与执行存储过程的基本工作流程:

graph LR
A[准备工作] --> B[连接数据库]
B --> C{选择数据库系统}
C -->|MySQL| D[创建数据库与表]
C -->|Doris| E[创建数据库与表]
D --> F[创建存储过程]
E --> G[编写SQL脚本或外部程序]
F --> H[执行存储过程]
G --> H
H --> I[查询与验证数据]
I --> J[完成]

说明

  • 准备工作:安装和配置MySQL与Doris。
  • 连接数据库:使用客户端工具或命令行连接到数据库系统。
  • 选择数据库系统:根据需求选择MySQL或Doris。
  • 创建数据库与表:根据业务需求创建相应的数据库和表结构。
  • 创建存储过程:在MySQL中创建存储过程;在Doris中编写SQL脚本或外部程序实现类似功能。
  • 执行存储过程:调用存储过程或执行脚本。
  • 查询与验证数据:确认数据插入或更新是否成功。
  • 完成:整个操作流程结束。

对比图表 📈

以下表格对比了DorisMySQL在创建表记录和执行存储过程方面的主要特性:

特性MySQLDoris
存储过程支持支持,可创建和调用复杂存储过程不支持,需通过脚本或外部程序实现
创建表的灵活性支持多种存储引擎,适合事务处理和多种应用场景列式存储,优化分析型查询,适合大数据分析
数据插入方式支持多种数据插入方法,如单条插入、批量插入支持高效的批量数据插入,适合大规模数据处理
扩展性横向扩展受限,适合中小型应用高度可扩展,适合大规模分布式集群,支持高并发查询
事务支持完整的事务支持,保证数据一致性有限的事务支持,主要针对分析型查询优化
性能优化适合事务性操作,索引优化性能高适合大数据量的分析查询,列式存储提升查询效率
易用性丰富的工具和文档支持,易于上手需要一定的分布式系统知识,配置和管理相对复杂
社区与支持广泛的社区支持和丰富的文档快速发展的社区,官方文档逐步完善

总结

DorisMySQL中创建表记录与执行存储过程,各有其独特优势适用场景MySQL凭借其强大的事务支持广泛的社区资源,适合用于Web应用传统事务性业务。而Doris则凭借其高性能大数据分析能力高度可扩展性,成为实时数据分析大规模查询的理想选择。

通过本文的详细讲解,您已经掌握了如何在这两种数据库系统中创建数据库与表,编写和执行存储过程或其替代方案,并了解了两者在实际应用中的对比优势。无论您是在选择合适的数据库系统,还是在进行日常的数据库管理与操作,DorisMySQL都能为您的数据管理需求提供有力支持。希望本文能为您的项目开发和数据管理工作带来实用的指导和帮助。🚀🎉


Viewing all articles
Browse latest Browse all 3145

Trending Articles