如何使用 Go 连接 MO

embedded/2024/9/23 6:27:21/

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 多平台发布


http://www.ppmy.cn/embedded/95977.html

相关文章

java+springboot实现定时任务

由于是初级程序员,基于注解的形式实现了一个简单的定时任务; 1. 使用Scheduled注解 Spring的Scheduled注解是一种非常简单和便捷的实现定时任务的方式。通过在方法上添加Scheduled注解,我们可以指定方法在特定的时间间隔或固定的时间点执行…

第五天:java网络编程、JDBC与高级特性概览

第五天:java网络编程、JDBC与高级特性概览 1. 网络编程基础 Socket编程:学习Java中的Socket编程,理解客户端和服务器端的通信模型。掌握ServerSocket类和Socket类的使用,能够编写简单的TCP客户端和服务器程序。URL与URLConnecti…

一款手机壳凭什么卖800元?Casetify品牌策略全解析 | 品牌出海

Casetify官网 巴黎奥运会,张怡宁的手机壳火了。 张怡宁在现场观战并使用手机的照片在网上流传,不是因为这位奥运前冠军,而是她的手机壳。这款满是「花花绿绿」图案的手机壳,迅速被网友发掘出是Casetify品牌的名为「炫彩花卉」的…

centos8 安装zookeeper

1:下载 zookeeper官网 解压:tar -zxvf apache-zookeeper-3.6.3.tar.gz 修改自己想要的文件目录 mv apache-zookeeper-3.6.3 zookeeper_3.6.3 备份一下 配置文件 cp zoo_sample.cfg zoo.cfg vim zoo.cfg 编辑日志文件和端口号

跨平台控制神器Escrcpy,您的智能生活助手

Escrcpy 是一款基于 Scrcpy 开发的图形化安卓手机投屏控制软件,它允许用户将 Android 手机屏幕实时镜像到电脑上,并使用电脑的鼠标和键盘直接操作手机,实现了无线且高效的操控。这款软件是免费开源的,支持跨平台使用,包…

智能调度 | 多台AGV为什么不会撞在一起?

AGV叉车 随着智能仓储物流系统、柔性制造系统的广泛应用,工厂自动化、计算机集成制造系统技术的逐步发展,常见的智能装备AGV小车的功能愈发齐全,应用范围与技术水平也得到迅猛发展。 AGV作为仓储物流自动化搬运装卸的重要工具,通…

el-table的多选功能

html&#xff1a; <el-table :data"list" row-key"id" selection-change"handleSelectionChange"><el-table-column type"selection" width"55"/> </el-table> js变量&#xff1a; data () {return {/…

激光尘埃粒子计数器品牌、选型及校准维修服务如何选 北京中邦兴业

随着中国的经济的快速发展&#xff0c;我国洁净行业的发展趋势也越来越快&#xff0c;尤其是一些制药、芯片半导体、新能源、航空航天等行业&#xff0c;在发展过程中&#xff0c;对于洁净室环境的要求越来越高&#xff0c;因此对于洁净室环境检测的仪器设备&#xff0c;需求也…