Zitat:
Moderne Anwendungen erfordern leistungsstarke, zuverlässige, skalierbare und latenzarme Datenbanklösungen. Bei der Datenbankauswahl sind viele Faktoren zu berücksichtigen, wie z. B. Leistung, Wert, Skalierbarkeit und mehr. AWS DynamoDB ist eine vollständig verwaltete, nicht relationale Datenbank, die für die Verarbeitung von Big-Data-Sammlungen im Internetmaßstab entwickelt wurde und niedrige Latenz sowie skalierbare Speicher- und Abruffunktionen bietet. In diesem Artikel werfen wir einen detaillierten Blick auf AWS DynamoDB und konzentrieren uns dabei auf die Verwendung in der Go-Sprache.
1. Einführung in DynamoDB
AWS DynamoDB ist Teil des AWS-Cloud-Service und eine vollständig verwaltete, nicht relationale Datenbank, die große Datensammlungen nahtlos verarbeiten kann. Seine praktische API-Schnittstelle, geringe Latenz und hohe Durchsatzfähigkeiten, die bei Bedarf erweitert werden können, ermöglichen die Nutzung durch jede Anwendung. Der größte Vorteil von DynamoDB gegenüber anderen Datenbankanbietern ist die Geschwindigkeit, mit der Daten gespeichert und gelesen werden. Es verwendet SSD (Solid State Drive) als Standardspeichermethode, was das Lesen und Schreiben sehr schnell macht.
DynamoDB verfügt über eine einfache Schnittstelle und unterstützt eine große Anzahl von Programmiersprachen und Plattformen wie Java, JavaScript, Python, Ruby usw., einschließlich der Go-Sprache. DynamoDB unterstützt Datenspeicherung und Abfragevorgänge mithilfe mehrerer Datenmodelle basierend auf Dokumenten, Schlüsselwerten, Diagrammen usw. Die Datenspeicherung von DynamoDB erfolgt in Form von Tabellen. Jede Tabelle kann mehrere Projekte enthalten und jedes Projekt kann mehrere Attribute enthalten.
DynamoDB kann mit Hilfe der AWS Management Console oder des AWS SDK verwendet werden. Für die Ausführung des AWS SDK müssen Sie Ihre eigenen AWS-Zugangsdaten in den Code einfügen oder unsichere Umgebungsvariablen verwenden. Diese Schreibweise birgt Sicherheitsrisiken und ist für die Teamentwicklung nicht geeignet. Daher können wir mit dem AWS SDK for Go entwickeln, was eine elegantere und sicherere Lösung bietet.
2. Verwenden Sie AWS SDK für Go, um eine Verbindung zu DynamoDB herzustellen
Führen Sie den folgenden Befehl im Terminal aus, um das AWS SDK für Go zu installieren:
$ go get -u github.com/aws/aws-sdk-go
2
Bevor Sie eine Verbindung zu DynamoDB herstellen, müssen Sie den AWS-Zugriffsschlüssel und die Region konfigurieren, die vom AWS SDK for Go verwendet werden. Fügen Sie dazu den folgenden Code zu Ihrem Code hinzu:sess := session.Must(session.NewSession(&aws.Config{ Region: aws.String("us-west-2"), Credentials: credentials.NewStaticCredentials( "YOUR_ACCESS_KEY_ID", "YOUR_SECRET_ACCESS_KEY", ""), }))
svc := dynamodb.New(sess) input := &dynamodb.CreateTableInput{ AttributeDefinitions: []*dynamodb.AttributeDefinition{ { AttributeName: aws.String("ID"), AttributeType: aws.String("N"), }, { AttributeName: aws.String("Name"), AttributeType: aws.String("S"), }, }, KeySchema: []*dynamodb.KeySchemaElement{ { AttributeName: aws.String("ID"), KeyType: aws.String("HASH"), }, { AttributeName: aws.String("Name"), KeyType: aws.String("RANGE"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(5), WriteCapacityUnits: aws.Int64(5), }, TableName: aws.String("TableName"), } result, err := svc.CreateTable(input) if err != nil { fmt.Println(err) return } fmt.Println(result)
svc := dynamodb.New(sess) input := &dynamodb.DeleteTableInput{ TableName: aws.String("TableName"), } result, err := svc.DeleteTable(input) if err != nil { fmt.Println(err) return } fmt.Println(result)
svc := dynamodb.New(sess) input := &dynamodb.PutItemInput{ Item: map[string]*dynamodb.AttributeValue{ "ID": { N: aws.String("123"), }, "Name": { S: aws.String("John"), }, "Age": { N: aws.String("29"), }, }, TableName: aws.String("TableName"), } _, err := svc.PutItem(input) if err != nil { fmt.Println(err) return }
svc := dynamodb.New(sess) input := &dynamodb.GetItemInput{ Key: map[string]*dynamodb.AttributeValue{ "ID": { N: aws.String("123"), }, "Name": { S: aws.String("John"), }, }, TableName: aws.String("TableName"), } result, err := svc.GetItem(input) if err != nil { fmt.Println(err) return } for key, value := range result.Item { fmt.Println( key, ":", value.S, value.N, value.BOOL, ) }
svc := dynamodb.New(sess) input := &dynamodb.DeleteItemInput{ Key: map[string]*dynamodb.AttributeValue{ "ID": { N: aws.String("123"), }, "Name": { S: aws.String("John"), }, }, TableName: aws.String("TableName"), } _, err := svc.DeleteItem(input) if err != nil { fmt.Println(err) return }
svc := dynamodb.New(sess) input := &dynamodb.QueryInput{ KeyConditionExpression: aws.String("ID = :idval"), ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{ ":idval": { S: aws.String("123"), }, }, TableName: aws.String("TableName"), } result, err := svc.Query(input) if err != nil { fmt.Println(err) return } for _, item := range result.Items { fmt.Println(item) }
Vorgänge atomar und erfolgreich festschreiben oder zurücksetzen
sess := session.Must(session.NewSessionWithOptions(session.Options{ SharedConfigState: session.SharedConfigEnable, })) db := dynamodb.New(sess) tableName := aws.String("product") txOps := []*dynamodb.TransactWriteItem{ { Delete: &dynamodb.Delete{ TableName: aws.String(*tableName), Key: map[string]*dynamodb.AttributeValue{ "product_id": {N: aws.String("1")}, }, }, }, } txCtxt := &dynamodb.TransactWriteItemsInput{ TransactItems: txOps, } result, err := db.TransactWriteItems(txCtxt) if err != nil { fmt.Println("failed to delete product 1") return } fmt.Println(result)
条件更新是将新值写回项目时使用的一种机制。当特定条件被给定时,更新操作将执行。要使用条件更新,必须满足以下条件:
下面是一个条件更新的示例:
updateInput := &dynamodb.UpdateItemInput{ TableName: aws.String("product"), Key: map[string]*dynamodb.AttributeValue{ "product_id": {N: aws.String("2")}, }, UpdateExpression: aws.String("set productName = :n"), ConditionExpression: aws.String("attribute_exists(product_id)"), ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{ ":n": {S: aws.String("product_name_new")}, }, } _, err = db.UpdateItem(updateInput) if err != nil { fmt.Println(err) return }
上述示例是使用条件更新更新了产品ID为“2”的产品名称。在条件表达式中,我们使用了attribute_exists
函数来检查该项目是否存在。
八、总结
在本文中,我们深入介绍了 DynamoDB 及其在Go语言中的使用方法。我们讨论了配置 AWS SDK for Go,创建和删除表,添加、读取和删除数据,使用条件表达式,事务控制以及条件更新数据。由于 DynamoDB 具有可伸缩性、高可用性和良好的性能,因此可以成为处理大规模数据集合的首选数据库解决方案之一。
如果您想开始使用 AWS DynamoDB 和 Go,强烈建议您参考 AWS 官方文档 以便获得更详细的信息和 API 示例。
Das obige ist der detaillierte Inhalt vonVerwenden von AWS DynamoDB in Go: Eine vollständige Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!