LOADING

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

运维2个月前发布 杨帆舵手
22 0 0
广告也精彩
欢迎指数:
参与人数:

数据库管理领域,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)数据库,专为大数据分析实时查询设计,具备高并发高扩展性的特点。
    主要特点对比
    特性 MySQL Doris
    架构 单机或主从架构 分布式MPP架构
    性能 适合事务处理和中小规模数据 优秀的大规模数据分析和实时查询能力
    扩展性 横向扩展受限 高度可扩展,支持水平扩展
    存储引擎 多种存储引擎(InnoDB等) 列式存储,优化分析型查询
    使用场景 Web应用、事务性应用 大数据分析、实时数据查询、报表生成
    社区与支持 广泛的社区支持和丰富的文档 快速发展的社区,官方文档和社区支持逐步完善

    准备工作

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

  12. 安装MySQL

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

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

    • 推荐使用MySQL WorkbenchDBeaver等工具,以便于管理和操作数据库。
  15. 安装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各有优势和限制。以下是两者的详细对比分析: 特性 MySQL Doris
      存储过程支持 原生支持,功能强大 不支持原生存储过程,通过脚本或外部程序实现
      创建表的灵活性 支持多种存储引擎,适用于事务处理和分析型应用 列式存储优化分析型查询,但事务支持有限
      性能 高效的事务处理和中小规模数据查询 优秀的大规模数据分析和实时查询能力
      扩展性 横向扩展受限,适合中小型应用 高度可扩展,支持大规模分布式集群
      数据一致性 强一致性,适合需要严格数据一致性的应用 最终一致性,适合大数据分析场景
      操作简便性 丰富的工具和文档支持,易于上手 相对复杂,需要一定的分布式系统知识
      社区与支持 广泛的社区支持和丰富的文档 快速发展的社区,官方文档不断完善

      性能对比

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

      总结

      DorisMySQL中创建表记录与执行存储过程,各有其独特优势适用场景MySQL凭借其强大的事务支持广泛的社区资源,适合用于Web应用传统事务性业务。而Doris则凭借其高性能大数据分析能力高度可扩展性,成为实时数据分析大规模查询的理想选择。
      通过本文的详细讲解,您已经掌握了如何在这两种数据库系统中创建数据库与表,编写和执行存储过程或其替代方案,并了解了两者在实际应用中的对比优势。无论您是在选择合适的数据库系统,还是在进行日常的数据库管理与操作,DorisMySQL都能为您的数据管理需求提供有力支持。希望本文能为您的项目开发和数据管理工作带来实用的指导和帮助。??

此站内容质量评分请点击星号为它评分!

您的每一个评价对我们都很重要

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

© 版权声明
广告也精彩

相关文章

广告也精彩

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...