GO AWS DynamoDB的数据库/SQL驱动程序
#go #dynamodb #driver

本文最初发布在my personal notes上。

Amazon DynamoDB是亚马逊作为亚马逊Web服务(AWS)投资组合的一部分提供的全面管理的NOSQL数据库服务。

  • aws提供了SDK for Go,它促进了GO应用程序和各种AWS服务之间的无缝集成,包括DynamoDB。
  • aws为用户提供了使用PartiQL(一种类似于SQL的查询语言)的灵活性,通过INSERTSELECTUPDATEDELETEDELETE
  • GO编程语言包括koude4 package,该语言提供了一种用于与支持SQL样功能的SQL数据库或数据库进行交互的通用和标准化接口。

要在前面提到的三个组件之间建立一个无缝集成,需要一个基本组件:一个数据库驱动程序,该数据库驱动程序可以使用标准database/sql软件包与DynameDB接口。本文介绍godynamo -AWS DynamoDB的database/sql驱动程序。

免责声明:我是godynamo的作者。

用法

使用godynamo与AWS DynamoDB进行交互,遵循类似于使用数据库系统的任何database/sql驱动程序的熟悉模式,例如MySQL。该过程涉及一系列步骤:首先,将godynamo驱动程序导入项目;接下来,通过使用sql.Open(...)函数初始化sql.DB实例;最后,利用SQL语句通过sql.DB实例在DynamoDB表中的项目上操作。

示例:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/btnguyen2k/gocosmos" // import driver
)

func main() {
    // build connection string
    driver := "godynamo"
    dsn := "Region=us-east-1;AkId=aws-access-key-id;SecretKey=aws-secret-key"
    // create the sql.DB instance
    db, err := sql.Open(driver, dsn)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // use SQL statement via the sql.DB instance
    dbrows, err := db.Query(`LIST TABLES`)
    if err != nil {
        panic(err)
    }
    for dbRows.Next() {
        var val interface{}
        err := dbRows.Scan(&val)
        if err != nil {
            panic(err)
        }
        fmt.Println(val)
    }
}

支持的SQL语句

godynamo支持3组SQL语句: table index document 。。

与表相关的语句:

ðCREATE TABLE:创建一个新的DynamoDB表。

ðLIST TABLES:列出所有可用表。

ðDESCRIBE TABLE:返回表的信息。

ðALTER TABLE:更改表的rcu/wcu或table-class。

ðDROP TABLE:删除现有表。

与索引相关的语句:

ðDESCRIBE LSILocal Secondary Index的返回信息。

ðCREATE GSI:在桌子上创建一个新的Global Secondary Index

ðDESCRIBE GSI:返回Global Secondary Index的信息。

ðALTER GSI:更改Global Secondary Index的rcu/wcu设置。

ðDROP GSI:删除现有的Global Secondary Index

与文档相关的语句:

ðINSERT:在表中添加一个项目。

ðSELECT:从表中检索数据。

ðUPDATE:修改表中一个项目中一个或多个属性的值。

ðDELETE:从表中删除现有项目。

查找有关Godynamo存储库的更多详细信息:https://github.com/btnguyen2k/godynamo