当前位置: 首页 > news >正文

如何使用 Go 连接 MO

MatrixOne 是一款超融合异构分布式数据库,与 MySQL 高度兼容,通过云原生化和存储、计算、事务分离的架构构建 HSTAP 超融合数据引擎,实现单一数据库系统支持 OLTP、OLAP、流计算等多种业务负载,通过为用户提供一站式超融合数据解决方案,可以将过去由多个数据库完成的工作合并到一个数据库里,从而简化开发运维,消减数据碎片,提高开发敏捷度。

alt

MatrixOne 支持使用 Golang 连接,本文将介绍如何进行安全连接。

unsetunset准备工作unsetunset

  1. 本地安装 MO 数据库,或者已开通 MO Cloud 服务。

  2. 安装 mysql 客户端,用于连接 MO 数据库创建基础数据。

mysql -h127.1 -P3306 -uroot -p1
create schema mytest;
create table mytest.t (id int primary key auto_increment, name varchar(10));
  1. 安装 Golang 包。
$ go version
go version go1.21.8 linux/amd64

unsetunsetGo-MySQL-Driver (入门篇)unsetunset

Go-MySQL-Driver 是一个用于 Go 语言的 MySQL 驱动程序,它实现了 Go 标准库中 database/sql 接口的方法,使得 Go 语言程序可以通过这个驱动程序连接和操作 MySQL 数据库。

  1. 初始化项目 mygo-mo
go mod init github.com/shawn0915/mygo-mo
  1. 安装 Go-MySQL-Driver
go get -u github.com/go-sql-driver/mysql
go: added github.com/go-sql-driver/mysql v1.8.1
  1. 创建主文件,写入如下代码。
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, _ := sql.Open("mysql""root:1@tcp(127.0.0.1:3306)/mytest")
    defer db.Close()
    err := db.Ping()
    if err != nil {
        fmt.Println("DB Connection Failed.")
        return
    } else {
        fmt.Println("DB Connection Succeed.")
    }
}
  1. 运行代码,可以看到输出显示连接成功。
[mysql@centos7 mygo-mo]$ go run main.go
DB Connection Succeed.

unsetunsetGo-MySQL-Driver (基础篇)unsetunset

下面演示如何使用 Go-MySQL-Driver 对 MO 中的数据进行增删改查操作。

部分代码如下:

    // Insert a record
    stmt, err := db.Prepare("INSERT t (id, name) VALUES (?, ?)")
    res, err := stmt.Exec(1, "mo")
    insertedId, err := res.LastInsertId()
    fmt.Println("Inserted id:", insertedId)
 
    // Update a record
    stmt, err = db.Prepare("UPDATE t SET name=? WHERE id=?")
    res, err = stmt.Exec("mo cloud", insertedId)
    affect, err := res.RowsAffected()
    fmt.Println("Affected rows:", affect)
 
    // Query all records
    rows, err := db.Query("SELECT * FROM t")

    // Delete a record
    stmt, err = db.Prepare("DELETE FROM t WHERE id=?")
    res, err = stmt.Exec(insertedId)
    affect, err = res.RowsAffected()
    fmt.Println("Affected rows:", affect)

运行代码:

[mysql@centos7 mygo-mo]$ go run main.go
Inserted row ID:  1
Affected rows:  1
1 mo cloud
Affected rows:  1

unsetunsetGo-MySQL-Driver (加密篇)unsetunset

在 Go 中支持连接到 MO 时使用 TLS 认证设定,以此来简历安全连接。

可以在 DSN 中进行配置,使驱动在连接数据库时应用 TLS 配置。

db, err := sql.Open("mysql""root:1@tcp(127.0.0.1:3306)/mytest?tls=preferred")

运行代码:

[mysql@centos7 mygo-mo]$ go run main.go
Ssl_version TLSv1.3

unsetunset小结unsetunset

本节内容介绍了如何使用 Go 语言驱动 Go-MySQL-Driver 连接 MatrixOne 数据库。

更多内容可参阅官方文档:

  • https://docs.matrixorigin.cn/
  • https://pkg.go.dev/github.com/go-sql-driver/mysql

本文由 mdnice 多平台发布

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 检索增强生成算法
  • CMake常用语法、函数
  • NacosRce到docker逃逸实战
  • HCIP第九章(MPLS理论)
  • Spring Cloud全解析:配置中心之springCloudConfig使用消息总线进行动态刷新
  • 测试金山文档 | WPS云文档
  • 使用Java调用Apache commons-text求解字符串相似性实战
  • Spring中的BeanFactoryAware
  • OCR调研
  • 【实现100个unity特效之20】用unity实现物品悬浮和发光像素粒子特效
  • EXCEL数据清洗步骤
  • 3.js - 顶点着色器、片元着色器的联系
  • JDK源码——ThreadLocal
  • 《光与夜之恋》3D建模含量超标,纯炫技还是释放新信号?
  • 你和NumPy之间,只差这40张图
  • ES6指北【2】—— 箭头函数
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Linux各目录及每个目录的详细介绍
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • supervisor 永不挂掉的进程 安装以及使用
  • Twitter赢在开放,三年创造奇迹
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 你真的知道 == 和 equals 的区别吗?
  • 前端面试之CSS3新特性
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何编写一个可升级的智能合约
  • -- 数据结构 顺序表 --Java
  • 思否第一天
  • 一个SAP顾问在美国的这些年
  • 用element的upload组件实现多图片上传和压缩
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • ## 基础知识
  • #QT(智能家居界面-界面切换)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (3)选择元素——(17)练习(Exercises)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (第61天)多租户架构(CDB/PDB)
  • (二) 初入MySQL 【数据库管理】
  • (一)Neo4j下载安装以及初次使用
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .Net 8.0 新的变化
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 材料检测系统崩溃分析
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .NET学习全景图
  • .net中我喜欢的两种验证码
  • /tmp目录下出现system-private文件夹解决方法
  • @ModelAttribute 注解
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ NOI 2001 ] 食物链
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)