DICOM标准:DICOM服务类详解,了解存储服务类、查询/检索服务类(Q/R Service Class)和工作流管理服务类等原理

目录

一、概述

二、存储服务类(Storage Service Class)

存储操作(C-STORE)

确认操作(C-STORE-RSP)

三、查询/检索服务类(Query/Retrieve Service Class)

查询操作(C-FIND)

移动操作(C-MOVE)

获取操作(C-GET)

四、工作流管理服务类(Workflow Management Service Class)

工作列表操作(C-FIND)

工作流状态管理(N-CREATE、N-SET、N-GET)

工作流结果(N-DELETE)

五、DICOM服务类实例

存储服务类

查询/检索服务类

工作流管理服务类

六、总结


一、概述

DICOM(Digital Imaging and Communications in Medicine)标准不仅定义了数据模型,还包括多种服务类,用于在不同的医疗设备和系统之间传输和管理医学影像数据。DICOM服务类的目标是确保设备与系统间的互操作性,提高影像数据管理的效率和准确性。本文将重点介绍三种主要的DICOM服务类:存储服务类(Storage Service Class)、查询/检索服务类(Query/Retrieve Service Class)和工作流管理服务类(Workflow Management Service Class)。

二、存储服务类(Storage Service Class)

存储服务类是DICOM标准中最基本和最常用的服务类之一,用于在不同的设备和系统之间传输医学影像数据。存储服务类主要包括两个操作:存储(C-STORE)和确认(C-STORE-RSP)。

存储操作(C-STORE)
  1. 功能

    • 存储操作用于将DICOM对象从一个设备发送到另一个设备。通常,发送端设备(Service Class User, SCU)是影像生成设备,如CT机或MRI机,而接收端设备(Service Class Provider, SCP)是存储设备,如PACS(Picture Archiving and Communication System)。
  2. 请求消息

    • 请求消息包含DICOM对象的SOP Instance UID、数据元素和像素数据等。
  3. 过程

    • SCU将包含影像数据和相关元数据的DICOM对象打包成C-STORE请求消息,发送给SCP。
    • SCP接收请求消息,解析其中的数据元素,并将影像数据存储到本地数据库或文件系统中。
  4. 示例代码

         1)使用fo-dicom框架的实现  :

using Dicom;
using Dicom.Network;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建DicomClient实例
        var client = new DicomClient();

        // 打开并加载DICOM文件
        var dicomFile = DicomFile.Open("path/to/dicom/file.dcm");

        // 创建一个C-STORE请求并添加到客户端
        client.AddRequest(new DicomCStoreRequest(dicomFile));

        // 配置客户端并建立连接
        client.NegotiateAsyncOps();
        await client.AddRequestAsync(new DicomCStoreRequest(dicomFile));

        // 向PACS系统发送请求
        await client.SendAsync("PACS_IP", 104, false, "SCU_AE", "PACS_AE");
    }
}

   2) 使用DCMTK库的实现: 

#include "dcmtk/dcmnet/dfindscu.h"
#include "dcmtk/dcmnet/dimse.h"
#include "dcmtk/dcmdata/dcdatset.h"
#include "dcmtk/dcmdata/dcfilefo.h"
#include <cstring>

int main()
{
    OFCondition status;
    T_ASC_Network *net;
    T_ASC_Association *assoc;

    // 初始化网络
    status = ASC_initializeNetwork(NET_REQUESTOR, 0, 30, &net);
    if (status.bad()) return 1;

    // 请求建立关联
    T_ASC_Parameters *params;
    ASC_createAssociationParameters(&params, ASC_DEFAULTMAXPDU);
    ASC_setAPTitles(params, "SCU_AE", "PACS_AE", NULL);
    ASC_setTransportLayerType(params, false);
    ASC_setPresentationAddresses(params, "SCU_IP", "PACS_IP:104");

    status = ASC_requestAssociation(net, params, &assoc);
    if (status.bad()) return 1;

    // 打开并加载DICOM文件
    DcmFileFormat dcmff;
    dcmff.loadFile("path/to/dicom/file.dcm");

    // 创建C-STORE请求
    T_DIMSE_C_StoreRQ req;
    T_DIMSE_C_StoreRSP rsp;
    std::memset(&req, 0, sizeof(req));
    req.MessageID = assoc->nextMsgID++;
    strcpy(req.AffectedSOPClassUID, UID_CTImageStorage);
    dcmff.getDataset()->findAndGetOFString(DCM_SOPInstanceUID, req.AffectedSOPInstanceUID);
    req.Priority = DIMSE_PRIORITY_MEDIUM;
    req.DataSetType = DIMSE_DATASET_PRESENT;

    // 发送C-STORE请求
    status = DIMSE_storeUser(assoc, DIMSE_BLOCKING, 0, &req, NULL, dcmff.getDataset(), NULL, NULL, &rsp, NULL, DIMSE_DATASET_PRESENT);

    // 释放关联
    ASC_releaseAssociation(assoc);
    ASC_dropAssociation(assoc);
    ASC_dropNetwork(&net);

    return 0;
}

确认操作(C-STORE-RSP)
  1. 功能

    • 确认操作是对存储操作的响应消息。接收端设备(SCP)接收到DICOM对象后,发送确认消息给发送端设备(SCU),表示存储操作是否成功。
  2. 确认消息

    • 确认消息包含操作的状态码,如成功、失败或部分成功等。
  3. 过程

    • SCP在成功存储影像数据后,生成C-STORE-RSP响应消息,并将其发送回给SCU。状态码的解析和处理由SCU完成。
三、查询/检索服务类(Query/Retrieve Service Class)

查询/检索服务类用于在不同的设备和系统之间查询和检索医学影像数据。主要包括三个操作:查询(C-FIND)、移动(C-MOVE)和获取(C-GET)。

查询操作(C-FIND)
  1. 功能

    • 查询操作用于在DICOM数据库中查询特定条件的DICOM对象。查询条件可以包括患者姓名、患者ID、检查日期、影像类型等。
  2. 请求消息

    • 请求消息包含查询条件和返回数据元素的列表。
  3. 过程

    • SCU生成包含查询条件的C-FIND请求消息,并发送给SCP。
    • SCP根据查询条件在数据库中查找匹配的DICOM对象,并返回结果列表。
  4. 示例代码

          1)使用fo-dicom框架的实现  :

using Dicom;
using Dicom.Network;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建DicomClient实例
        var client = new DicomClient();

        // 创建一个C-FIND请求,查询患者姓名为"John Doe"的影像
        var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Study)
        {
            PatientName = "John Doe"
        };

        // 处理响应
        request.OnResponseReceived += (req, response) =>
        {
            Console.WriteLine(response.Dataset?.GetString(DicomTag.StudyInstanceUID));
        };

        // 添加请求到客户端
        client.AddRequest(request);

        // 向PACS系统发送请求
        await client.SendAsync("PACS_IP", 104, false, "SCU_AE", "PACS_AE");
    }
}

 2) 使用DCMTK库的实现: 

#include "dcmtk/dcmnet/dfindscu.h"

int main()
{
    DcmFindSCU findscu;

    // 设置应用实体标题
    findscu.setAETitle("SCU_AE");
    findscu.setPeerAETitle("PACS_AE");
    findscu.setPeerHostName("PACS_IP");
    findscu.setPeerPort(104);

    // 创建查询数据集
    DcmDataset query;
    query.putAndInsertOFStringArray(DCM_PatientName, "John Doe");

    // 添加Presentation Context
    findscu.addPresentationContext(UID_FINDStudyRootQueryRetrieveInformationModel);

    // 发送C-FIND请求
    findscu.sendFindRequest("PACS_IP", 104, &query, UID_FINDStudyRootQueryRetrieveInformationModel);

    return 0;
}

移动操作(C-MOVE)
  1. 功能

    • 移动操作用于将DICOM对象从一个设备传输到另一个设备。在移动操作中,发送端设备(SCU)发送请求消息给接收端设备(SCP),请求将匹配的DICOM对象传输到指定的第三方设备。
  2. 请求消息

    • 请求消息包含DICOM对象的查询条件和目标设备的AE Title。
  3. 过程

    • SCU生成包含查询条件和目标设备AE Title的C-MOVE请求消息,并发送给SCP。
    • SCP根据查询条件查找匹配的DICOM对象,并将其传输到目标设备,同时向SCU发送C-MOVE-RSP确认消息。

  4. 代码示例   

         1)使用fo-dicom框架的实现  : 

using Dicom;
using Dicom.Network;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建DicomClient实例
        var client = new DicomClient();

        // 创建一个C-MOVE请求,查询患者姓名为"John Doe"的影像
        var request = new DicomCMoveRequest("TARGET_AE", DicomQueryRetrieveLevel.Study)
        {
            PatientName = "John Doe"
        };

        // 处理响应
        request.OnResponseReceived += (req, response) =>
        {
            Console.WriteLine($"Move response: {response.Status}");
        };

        // 添加请求到客户端
        client.AddRequest(request);

        // 向PACS系统发送请求
        await client.SendAsync("PACS_IP", 104, false, "SCU_AE", "PACS_AE");
    }
}

 2) 使用DCMTK库的实现: 

#include "dcmtk/dcmnet/dmovescu.h"

int main()
{
    DcmMoveSCU movescu;

    // 设置应用实体标题
    movescu.setAETitle("SCU_AE");
    movescu.setPeerAETitle("PACS_AE");
    movescu.setPeerHostName("PACS_IP");
    movescu.setPeerPort(104);

    // 创建查询数据集
    DcmDataset query;
    query.putAndInsertOFStringArray(DCM_PatientName, "John Doe");

    // 添加Presentation Context
    movescu.addPresentationContext(UID_MOVEStudyRootQueryRetrieveInformationModel);

    // 发送C-MOVE请求,将结果移动到TARGET_AE
    movescu.sendMoveRequest("PACS_IP", 104, &query, UID_MOVEStudyRootQueryRetrieveInformationModel, "TARGET_AE");

    return 0;
}

获取操作(C-GET)
  1. 功能

    • 获取操作类似于移动操作,但不同的是,获取操作请求将DICOM对象传输回发送端设备(SCU)本身。
  2. 请求消息

    • 请求消息包含DICOM对象的查询条件。
  3. 过程

    • SCU生成包含查询条件的C-GET请求消息,并发送给SCP。
    • SCP根据查询条件查找匹配的DICOM对象,并将其传输回SCU,同时发送C-GET-RSP确认消息。

      4. 代码示例   

         1)使用fo-dicom框架的实现  : 

using Dicom;
using Dicom.Network;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建DicomClient实例
        var client = new DicomClient();

        // 创建一个C-GET请求,查询患者姓名为"John Doe"的影像
        var request = new DicomCGetRequest(DicomQueryRetrieveLevel.Study)
        {
            PatientName = "John Doe"
        };

        // 处理响应
        request.OnResponseReceived += (req, response) =>
        {
            Console.WriteLine($"Get response: {response.Status}");
        };

        // 添加请求到客户端
        client.AddRequest(request);

        // 向PACS系统发送请求
        await client.SendAsync("PACS_IP", 104, false, "SCU_AE", "PACS_AE");
    }
}

   2) 使用DCMTK库的实现: 

#include "dcmtk/dcmnet/dgetscu.h"

int main()
{
    DcmGetSCU getscu;

    // 设置应用实体标题
    getscu.setAETitle("SCU_AE");
    getscu.setPeerAETitle("PACS_AE");
    getscu.setPeerHostName("PACS_IP");
    getscu.setPeerPort(104);

    // 创建查询数据集
    DcmDataset query;
    query.putAndInsertOFStringArray(DCM_PatientName, "John Doe");

    // 添加Presentation Context
    getscu.addPresentationContext(UID_GETStudyRootQueryRetrieveInformationModel);

    // 发送C-GET请求
    getscu.sendGetRequest("PACS_IP", 104, &query, UID_GETStudyRootQueryRetrieveInformationModel);

    return 0;
}

四、工作流管理服务类(Workflow Management Service Class)

工作流管理服务类用于管理医疗影像工作流程,如预约、检查、报告等。主要包括四个操作:工作列表(C-FIND)、工作流状态(N-CREATE、N-SET、N-GET)和工作流结果(N-DELETE)。

工作列表操作(C-FIND)
  1. 功能

    • 工作列表操作用于查询DICOM工作列表,获取待处理的检查任务。工作列表可以包含患者信息、检查类型、预约时间等。
  2. 请求消息

    • 请求消息包含查询条件和返回数据元素的列表。
工作流状态管理(N-CREATE、N-SET、N-GET)
  1. N-CREATE

    • 功能:用于创建新的工作流实例,表示一个新的检查任务。
    • 请求消息:包含新的工作流实例的详细信息,如患者信息、检查类型等。
  2. N-SET

    • 功能:用于更新工作流实例的状态,如检查开始、检查完成等。
    • 请求消息:包含工作流实例的唯一标识符和新的状态信息。
  3. N-GET

    • 功能:用于获取工作流实例的详细信息。
    • 请求消息:包含工作流实例的唯一标识符。
工作流结果(N-DELETE)
  1. 功能

    • 用于删除工作流实例,表示检查任务已完成并从工作列表中移除。
  2. 请求消息

    • 包含工作流实例的唯一标识符。
五、DICOM服务类实例

为了更好地理解DICOM服务类的概念和应用场景,我们以一个具体的实例进行说明。假设我们有一个PACS系统和一个影像工作站,需实现以下操作:

存储服务类
  1. 操作描述

    • 影像工作站生成一张新的CT图像,并将其存储到PACS系统中。
    • 影像工作站发送C-STORE请求消息,将CT图像对象传输到PACS系统。
    • PACS系统接收到CT图像对象后,发送C-STORE-RSP确认消息给影像工作站,表示存储操作成功。
  2. 过程与技术

    • 影像工作站使用图像采集设备(如CT机)生成DICOM对象,包含影像数据和元数据。
    • DICOM对象通过网络传输协议发送至PACS系统,PACS系统解析并存储图像。
    • PACS系统将操作结果通过C-STORE-RSP消息反馈给影像工作站。
查询/检索服务类
  1. 操作描述

    • 医生在影像工作站上查询某个患者的所有CT影像。
    • 影像工作站发送C-FIND请求消息,查询PACS系统中的CT影像对象。
    • PACS系统返回匹配的CT影像对象列表给影像工作站。
    • 医生选择其中一张CT影像,并请求将其传输到影像工作站进行查看。
    • 影像工作站发送C-MOVE请求消息,请求PACS系统将CT影像对象传输到影像工作站。
    • PACS系统将CT影像对象传输到影像工作站,并发送C-MOVE-RSP确认消息。
  2. 过程与技术

    • 影像工作站通过网络协议与PACS系统建立连接。
    • 影像工作站发送C-FIND请求,PACS系统查询数据库并返回匹配结果。
    • 影像工作站选择需要的影像,发送C-MOVE请求,PACS系统将影像传输至影像工作站。
    • PACS系统确认传输成功并发送C-MOVE-RSP消息。
工作流管理服务类
  1. 操作描述

    • 放射科接收到一位新患者的CT检查预约。
    • PACS系统发送N-CREATE请求消息,创建新的工作流实例,表示一个新的CT检查任务。
    • 检查开始时,影像工作站发送N-SET请求消息,更新工作流实例的状态为“检查开始”。
    • 检查完成后,影像工作站发送N-SET请求消息,更新工作流实例的状态为“检查完成”。
    • 医生查看和报告完毕后,PACS系统发送N-DELETE请求消息,删除工作流实例,表示检查任务已完成并从工作列表中移除。
  2. 过程与技术

    • PACS系统接受预约信息,生成新的工作流实例并发送N-CREATE请求。
    • 在检查流程中,影像工作站通过N-SET消息更新工作流状态。
    • 检查完成后,工作流状态再次更新为“检查完成”。
    • 医生完成报告后,PACS系统通过N-DELETE消息删除工作流实例。
六、总结

        DICOM服务类定义了多种操作,用于在不同的医疗设备和系统之间传输和管理医学影像数据。通过理解存储服务类、查询/检索服务类和工作流管理服务类的概念、应用场景和操作原理,我们可以更好地实现医学影像数据的互操作性和工作流管理。具体实例有助于我们掌握这些服务类在实际应用中的操作和流程,提高医疗影像数据管理的效率和准确性。

        通过深入了解DICOM服务类的各个方面,我们能够更好地在实际医疗环境中应用这些标准和技术,以提高医疗影像数据的传输和管理效率,增强不同设备和系统间的互操作性,从而更好地服务于医疗实践和病人护理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904236.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChangeCLIP环境配置

看到有个现成的dockerfile&#xff0c;先试试 ok首先需要root权限的用户 才能用docker&#xff0c;其次要外网&#xff0c;要不然有些东西好像下载不了 &#xff08;失败&#xff09; 那就直接配吧 我看12服务器上有个openmmlab的环境&#xff0c;先基于这个环境吧 # 用lx账…

Xcode文件默认存储位置-使用c++file保存文件默认路径以及设置为路径为当前项目路径

Xcode文件默认存储位置-使用cfile保存文件默认路径以及设置为路径为当前项目路径 1.概述 使用Xcode工具开发时候&#xff0c;遇到C调用file创建文件后&#xff0c;在当前项目中找不到文件路径。这是由于xcode会将文件保存到默认设置的路径。下面是查看文件默认存储路径和修改…

宠物空气净化器哪个牌子好?双十一铲屎官们有什么推荐吗?

最近换季&#xff0c;我家猫掉毛实在太严重了&#xff0c;加上风大&#xff0c;把浮毛吹的哪里都是。浮毛接触到鼻子后&#xff0c;我经常鼻痒难受&#xff0c;去了医院才知道&#xff0c;已经是鼻炎的前兆了。为了解决浮毛问题&#xff0c;我也寻找了很多方法。 还是看了宠物博…

智慧用电监控装置:引领0.4kV安全用电新时代

在智能科技日新月异的今天&#xff0c;电力安全与管理正迎来一场前所未有的革新。为0.4kV以下TT、TN系统打造的智慧用电在线监控装置不仅重新定义了电力监控的边界&#xff0c;更为建筑安全用电筑起了一道坚不可摧的防线。 装置集成了单、三相交流电精确测量、四象限电能计量、…

C++ 二叉树进阶:相关习题解析

目录 1. 二叉树创建字符串。 2. 二叉树的分层遍历1 3. 二叉树的分层遍历2 4. 二叉树的最近公共祖先 5. 将二叉搜索树转换为排序的双向链表 6. 从前序与中序遍历序列构造二叉树 7. 从中序与后序遍历序列构造二叉树 8. 二叉树的前序遍历&#xff0c;非递归迭代实现 9.…

【AIGC】AI工作流workflow实践:构建日报

workflow实践 引言实现步骤分析实践创建 dify workflow 应用创建工作流内部节点1、设置输入字段2、创建两个LLM节点3、设置结束节点 运行工作流 结语 引言 工作流 workflow 是现在 LLM 很重要的一个概念&#xff0c;因为对于一个模型来说&#xff0c;非常复杂的问题很难一次性…

计算机视觉-对极几何

1 基本概念 对极几何&#xff08;Epipolar Geometry&#xff09;描述的是两幅视图之间的内在射影关系&#xff0c;与外部场景无关&#xff0c;只依赖于摄像机内参数和这两幅视图之间的相对位姿 两视图的对极几何可以理解为图像平面与以基线为轴的平面束相交的几何关系&#xf…

jjycheng字符签名

jjycheng字符签名--字符 jjjj jjjj hhhhhhh j::::j j::::j h:::::h …

AI大模型开发架构设计(14)——基于LangChain大模型的案例架构实战

文章目录 基于LangChain大模型的案例架构实战1 LangChain 顶层架构设计以及关键技术剖析LangChain 是什么?LangChain的主要功能是什么&#xff1f;LangChain 顶层架构设计LangChain 典型使用场景&#xff1a;QA 问答系统LangChain 顶层架构设计之 Model I/OLangChain 顶层架构…

Ubuntu下安装和配置MySQL5.7教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 在ubuntu下安装MySQL数据库 查看操作系统版本 ​编辑 添加 MySQL APT 源 访问下载页面并下载发布包 安装发布包 安装MySQL 查看MySQL状态 开启自启动 登…

设计模式4-工厂模式策略模式

目录 一 工厂模式 1.1 思想 1.2 案例 1.2.1 接口 1.2.2 实现类 1.2.3 工厂类 1.2.4 调用 二 策略模式 2.1 思想 2.2 案例 2.2.1 接口 2.2.2 实现类 2.2.3 策略类 2.2.4 调用 三 工厂模式策略模式 3.1 思想 3.2 案例 3.2.1 接口 3.2.2 实现类 3.2.3 定义F…

【HTML】之form表单元素详解

HTML表单是网页与用户交互的关键组成部分&#xff0c;它允许用户输入数据并将数据提交到服务器进行处理。本文将全面详细地介绍HTML表单的各个方面&#xff0c;从基础元素到高级用法&#xff0c;并提供丰富的代码示例和中文注释&#xff0c;帮助你彻底掌握表单的使用。 1. 表单…

shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘

查找美国安全局漏洞 nww.nsa.gov&#xff08;美国安全局官方网站) net参数使用 搜索指定的ip网段 shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 (老美国家安全局的一个网段)可能直接访问不太行&#xff0c;可以使用host参数&#xff0c;得到域名再去…

【Unity基础】初识UI Toolkit - 编辑器UI

&#xff08;本文所需图片在文章上面的资源中&#xff0c;点击“立即下载”。&#xff09; 本文介绍了如何通过UI工具包&#xff08;UI Toolkit&#xff09;来创建一个编辑器UI。 一、创建项目 1. 打开Unity创建一个空项目&#xff08;任意模板&#xff09;&#xff0c;这里我…

NVR小程序接入平台/设备EasyNVR多个NVR同时管理多平台级联与上下级对接的高效应用

政务数据共享平台的建设正致力于消除“信息孤岛”现象&#xff0c;打破“数据烟囱”&#xff0c;实现国家、省、市及区县数据的全面对接与共享。省市平台的“级联对接”工作由多级平台共同构成&#xff0c;旨在满足跨部门、跨层级及跨省数据共享的需求&#xff0c;推动数据流通…

Android 获取OAID

获取OAID 老规矩&#xff0c;直接上&#xff1a; implementation com.huawei.hms:opendevice:6.11.0.300 // 要获取华为vaid 和aaid&#xff0c;还需添加opendevice 依赖implementation(name: oaid_sdk_2.5.0, ext: aar) import android.content.Context; import android.util.…

Flume采集Kafka数据到Hive

版本&#xff1a; Kafka&#xff1a;2.4.1 Flume&#xff1a;1.9.0 Hive&#xff1a;3.1.0 Kafka主题准备&#xff1a; Hive表准备&#xff1a;确保hive表为&#xff1a;分区分桶、orc存储、开启事务 Flume准备&#xff1a; 配置flume文件&#xff1a; /opt/datasophon/flume-1…

还在担心你收藏的书签下架或失效?试试这款自托管书签管理器『Linkwarden』吧!

还在担心你收藏的书签下架或失效&#xff1f;试试这款自托管书签管理器『Linkwarden』吧&#xff01; 哈喽&#xff0c;小伙伴儿们好&#xff0c;我是Stark-C~ 随着大家在网上收藏的浏览器书签越来越多&#xff0c;难免会导致管理混乱的问题。可能会在我们需要的时候难以找到…

MySQL与金蝶云星空数据集成,实现生产用料清单自动刷新

MySQL数据集成到金蝶云星空&#xff1a;zz-生产用料清单主动刷新 在企业的日常运营中&#xff0c;数据的及时性和准确性至关重要。为了实现MySQL数据库与金蝶云星空系统之间的数据无缝对接&#xff0c;我们设计并实施了一个名为“zz-生产用料清单主动刷新”的集成方案。本案例…

八,Linux基础环境搭建(CentOS7)- 安装Mysql和Hive

Linux基础环境搭建&#xff08;CentOS7&#xff09;- 安装Mysql和Hive 大家注意以下的环境搭建版本号&#xff0c;如果版本不匹配有可能出现问题&#xff01; 一、Mysql下载及安装 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Orac…