Verwenden von AWS DynamoDB in Go: Eine vollständige Anleitung
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
- Die Vorgänge zum Ausführen der Transaktion müssen in derselben Tabelle abgeschlossen werden.
- Der folgende Code zeigt, wie Transaktionen in Go verwendet werden:
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Go Zeigersyntax und Probleme bei der Verwendung der Viper -Bibliothek bei der Programmierung in Go -Sprache. Es ist entscheidend, die Syntax und Verwendung von Zeigern zu verstehen, insbesondere in ...

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Go Language Slice Index: Warum fasst ein Einzelelement-Slice aus Index 1 ohne Fehler ab? In der GO -Sprache sind Scheiben eine flexible Datenstruktur, die sich auf den Boden beziehen kann ...

Warum bewirkt die Kartendiseration in Go alle Werte zum letzten Element? In Go -Sprache begegnen Sie, wenn Sie einige Interviewfragen konfrontiert sind, häufig Karten ...
