Golang YottaDB API正式发布

Golang YottaDB API正式发布 YottaDB 是一款成熟稳定、经过验证的免费/开源多值键值NoSQL数据库。YottaDB及其上游GT.M的代码库目前支撑着一些大型实时核心银行系统以及国家级电子健康记录系统。从技术角度来看,YottaDB区别于其他数据库的特点包括:在进程地址空间内运行的数据库引擎(各进程协同管理数据库)、采用乐观并发控制实现ACID事务、支持实时数据库复制(既用于业务连续性,也适用于报告、决策支持、欺诈检测等应用场景)。自1986年投入生产环境以来,该代码库持续获得功能增强和修复改进。YottaDB支持64位x86架构的Linux系统,以及32位和64位ARM架构的Linux系统,也可在Docker容器中运行。

我们所有软件均为免费/开源产品;公司收入来源于按商业条款提供有服务保障的技术支持服务,以及接受资助进行功能增强。

我们正式发布 YottaDB Go API(我们称之为封装器)。虽然YottaDB本身已是成熟稳定的产品,但Go封装器是全新推出的,目前被定义为现场测试级别,这意味着它适用于开发和测试环境,但尚未达到生产就绪标准。在不久的将来(数周至数月内),我们计划跟进发布生产级版本。

除了Godoc上的包文档外,YottaDB和Go封装器在官网上都提供了详细的用户文档。

欢迎使用YottaDB并告诉我们您的使用体验。

非常感谢。

此致 – Bhaskar(这是我的姓氏,但大家都这么称呼我)

K.S. Bhaskar YottaDB LLC 总裁 40 Lloyd Avenue, Suite 104 Malvern, PA 19355, USA +1 (610) 644-1898 固定电话 +1 (484) 873-4467 Google语音

 YottaDB - Rock solid. Lightning fast. Secure. Pick any three.

更多关于Golang YottaDB API正式发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

如需提供反馈或提问,请在此处留言或创建问题

此致
– Bhaskar

更多关于Golang YottaDB API正式发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


除了快速入门中引用的示例程序 wordfreq.go 外,还有用于解决 3n+1 问题 的程序,位于 https://gitlab.com/YottaDB/DB/YDBTest/blob/master/go/inref/

很高兴看到YottaDB正式发布了Go语言API封装器。作为一个成熟的NoSQL数据库系统,YottaDB在金融和医疗领域的应用经验确实令人印象深刻。以下是对这个Go API封装器的技术分析和示例代码:

技术特点分析

YottaDB Go API封装器提供了对YottaDB核心功能的访问接口,包括:

  • 进程内数据库引擎访问
  • 乐观并发控制的ACID事务
  • 键值数据操作

基本使用示例

package main

import (
    "fmt"
    "log"
    "github.com/YottaDB/yottadb-go-wrapper"
)

func main() {
    // 初始化YottaDB环境
    err := yottadb.Init()
    if err != nil {
        log.Fatal("YottaDB初始化失败:", err)
    }
    defer yottadb.Exit()

    // 设置和获取全局变量
    err = yottadb.SetVal("", "myGlobal", "subscript1")
    if err != nil {
        log.Fatal("设置值失败:", err)
    }

    value, err := yottadb.GetVal("myGlobal", "subscript1")
    if err != nil {
        log.Fatal("获取值失败:", err)
    }
    
    fmt.Printf("获取的值: %s\n", value)
}

事务处理示例

func transactionExample() error {
    // 开始事务
    tptoken := uint64(0)
    
    // 在事务中执行多个操作
    err := yottadb.Tp(tptoken, nil, func(tptoken uint64, errstr *yottadb.BufferT) int32 {
        // 设置多个值
        yottadb.SetVal("value1", "account", "12345", "balance")
        yottadb.SetVal("value2", "account", "12345", "name")
        
        // 验证数据一致性
        balance, _ := yottadb.GetVal("account", "12345", "balance")
        name, _ := yottadb.GetVal("account", "12345", "name")
        
        fmt.Printf("账户余额: %s, 账户名: %s\n", balance, name)
        
        return 0 // 提交事务
    }, "BATCH", []string{})
    
    return err
}

数据遍历示例

func iterateData() {
    tptoken := uint64(0)
    var subscr string
    
    // 遍历指定全局变量的所有子节点
    data, err := yottadb.NodeNext(tptoken, nil, "myGlobal", subscr)
    for err == nil {
        value, _ := yottadb.GetVal("myGlobal", data)
        fmt.Printf("键: %s, 值: %s\n", data, value)
        data, err = yottadb.NodeNext(tptoken, nil, "myGlobal", data)
    }
}

这个Go API封装器为Go开发者提供了访问YottaDB强大功能的途径,特别是在需要高性能、ACID事务保证的场景下。虽然目前还处于现场测试阶段,但对于开发和测试环境来说已经具备了基本可用的功能。

期待生产级版本的发布,这将为Go语言在关键业务系统中的应用提供更多选择。

回到顶部