本文最初发布在my personal notes上。
Amazon DynamoDB是亚马逊作为亚马逊Web服务(AWS)投资组合的一部分提供的全面管理的NOSQL数据库服务。
- aws提供了SDK for Go,它促进了GO应用程序和各种AWS服务之间的无缝集成,包括DynamoDB。
- aws为用户提供了使用PartiQL(一种类似于SQL的查询语言)的灵活性,通过
INSERT
,SELECT
,UPDATE
和DELETE
和DELETE
。 - 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 LSI
:Local 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。