This article was originally posted on my personal notes.
Amazon DynamoDB is a fully managed NoSQL database service provided by Amazon as part of the Amazon Web Services (AWS) portfolio.
- AWS offers the SDK for Go, which facilitates seamless integration between Go applications and various AWS services, including DynamoDB.
- AWS provides users with the flexibility to utilize PartiQL, a SQL-like query language, for efficient manipulation of DynamoDB items via operations such as
INSERT,SELECT,UPDATE, andDELETE. - The Go programming language includes the
database/sqlpackage, which offers a versatile and standardized interface for interacting with SQL databases or databases that support SQL-like functionality.
To establish a seamless integration between the three components mentioned earlier, an essential component is required: a database driver that enables Go applications to interface with DynamoDB using the standard database/sql package. This article introduces godynamo - a database/sql driver for AWS DynamoDB.
Disclaimer: I am the author of godynamo.
Usage
Utilizing godynamo to interact with AWS DynamoDB follows a familiar pattern akin to employing any database/sql driver for a database system, for example MySQL. The process involves a sequence of steps: first, importing the godynamo driver into the project; next, initializing a sql.DB instance through using the sql.Open(...) function; and lastly, leveraging SQL statements to operate on the items within the DynamoDB table via the sql.DB instance.
Example:
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)
}
}
Supported SQL statements
godynamo supports 3 groups of SQL statements: table, index and document.
Table-related statement:
π CREATE TABLE: create a new DynamoDB table.
π LIST TABLES: list all available tables.
π DESCRIBE TABLE: return info of a table.
π ALTER TABLE: change a table's RCU/WCU or table-class.
π DROP TABLE: remove an existing table.
Index-related statements:
π DESCRIBE LSI: return info of a Local Secondary Index.
π CREATE GSI: create a new Global Secondary Index on a table.
π DESCRIBE GSI: return info of a Global Secondary Index.
π ALTER GSI: change RCU/WCU settings of a Global Secondary Index.
π DROP GSI: remove an existing Global Secondary Index.
Document-related statements:
π INSERT: add an item to a table.
π SELECT: retrieve data from a table.
π UPDATE: modify the value of one or more attributes within an item in a table.
π DELETE: delete an existing item from a table.
Find more details on godynamo repository: https://github.com/btnguyen2k/godynamo.
Top comments (0)