Go
GreptimeDB 提供了用于高吞吐量数据写入的 ingester 库。 它使用 gRPC 协议,支持自动生成表结构,无需在写入数据前创建表。 更多信息请参考 自动生成表结构。
GreptimeDB 提供的 Go Ingest SDK 是一个轻量级、并发安全的库,使用起来非常简单。
快速开始 Demo
你可以通过 快速开始 Demo 来了解如何使用 GreptimeDB Go SDK。
安装
使用下方的命令安装 Go Ingest SDK:
go get -u github.com/GreptimeTeam/greptimedb-ingester-go@v0.6.2
引入到代码中:
import (
greptime "github.com/GreptimeTeam/greptimedb-ingester-go"
ingesterContext "github.com/GreptimeTeam/greptimedb-ingester-go/context"
"github.com/GreptimeTeam/greptimedb-ingester-go/table"
"github.com/GreptimeTeam/greptimedb-ingester-go/table/types"
)
连接数据库
如果你在启动 GreptimeDB 时设置了 --user-provider,
则需要提供用户名和密码才能连接到 GreptimeDB。
以下示例显示了使用 SDK 连接到 GreptimeDB 时如何设置用户名和密码。
cfg := greptime.NewConfig("127.0.0.1").
// 将数据库名称更改为你的数据库名称
WithDatabase("public").
// 默认端口 4001
// WithPort(4001).
// 如果服务配置了 TLS,设置 TLS 选项来启用安全连接
// WithInsecure(false).
// 设置鉴权信息
// 如果数据库不需要鉴权,移除 WithAuth 方法即可
WithAuth("username", "password")
cli, _ := greptime.NewClient(cfg)
defer cli.Close()
数据模型
表中的每条行数据包含三种类型的列:Tag、Timestamp 和 Field。更多信息请参考 数据模型。
列值的类型可以是 String、Float、Int、JSON, Timestamp 等。更多信息请参考 数据类型。
设置表选项
虽然在通过 SDK 向 GreptimeDB 写入数据时会自动创建时间序列表,但你仍然可以配置表选项。 SDK 支持以下 表选项:
auto_create_table:默认值为True。如果设置为False,则表示表已经存在且不需要自动创建,这可以提高写入性能。ttl、append_mode、merge_mode:更多详情请参考表选项。
你可以使用 ingesterContext 设置表选项。
例如设置 ttl 选项:
hints := []*ingesterContext.Hint{
{
Key: "ttl",
Value: "3d",
},
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second*3)
ctx = ingesterContext.New(ctx, ingesterContext.WithHint(hints))
// 使用 ingesterContext 写入数据到 GreptimeDB
// `data` 对象在之后的章节中描述
resp, err := cli.Write(ctx, data)
if err != nil {
return err
}
关于如何向 GreptimeDB 写入数据,请参考以下各节。
低级 API
GreptimeDB 的低级 API 通过向具有预定义模式的 table 对象添加 row 来写入数据。