如何使用 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 多平台发布

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值