Rumah > pembangunan bahagian belakang > Golang > Menggunakan AWS DynamoDB dalam Go: Panduan Lengkap

Menggunakan AWS DynamoDB dalam Go: Panduan Lengkap

PHPz
Lepaskan: 2023-06-17 08:27:48
asal
1547 orang telah melayarinya

Petikan:

Aplikasi moden memerlukan penyelesaian pangkalan data yang berkuasa, boleh dipercayai, berskala dan kependaman rendah. Terdapat banyak faktor yang perlu dipertimbangkan dalam pemilihan pangkalan data, seperti prestasi, nilai, kebolehskalaan dan banyak lagi. AWS DynamoDB ialah pangkalan data bukan perhubungan yang terurus sepenuhnya yang direka bentuk untuk mengendalikan pengumpulan data besar berskala Internet, menyediakan keupayaan storan dan pengambilan semula berskala rendah dan berskala. Dalam artikel ini, kami akan melihat secara mendalam tentang AWS DynamoDB, memfokuskan pada cara menggunakannya dalam bahasa Go.

1. Pengenalan kepada DynamoDB

AWS DynamoDB ialah sebahagian daripada perkhidmatan awan AWS dan merupakan pangkalan data bukan perhubungan yang terurus sepenuhnya yang boleh mengendalikan pengumpulan data berskala besar dengan lancar. Antara muka APInya yang mudah, kependaman rendah dan keupayaan pemprosesan tinggi yang boleh dikembangkan atas permintaan membolehkan mana-mana aplikasi menggunakannya. Kelebihan terbesar DynamoDB berbanding penyedia pangkalan data lain ialah kelajuan ia menyimpan dan membaca data. Ia menggunakan SSD (Solid State Drive) sebagai kaedah storan lalai, yang menjadikannya sangat pantas untuk membaca dan menulis.

DynamoDB mempunyai antara muka yang ringkas dan menyokong sejumlah besar bahasa pengaturcaraan dan platform, seperti Java, JavaScript, Python, Ruby, dll., termasuk bahasa Go. DynamoDB menyokong penyimpanan data dan operasi pertanyaan menggunakan berbilang model data berdasarkan dokumen, Nilai Kunci, graf, dsb. Storan data DynamoDB adalah dalam bentuk jadual Setiap jadual boleh mengandungi berbilang projek, dan setiap projek boleh mengandungi berbilang atribut.

Penggunaan DynamoDB boleh dilakukan dengan bantuan AWS Management Console atau AWS SDK Menjalankan AWS SDK memerlukan meletakkan bukti kelayakan akses AWS anda sendiri dalam kod atau menggunakan pembolehubah persekitaran yang tidak selamat. Cara penulisan ini mempunyai risiko keselamatan dan tidak sesuai untuk pembangunan pasukan. Oleh itu, kami boleh membangunkan menggunakan AWS SDK for Go, yang menyediakan penyelesaian yang lebih elegan dan selamat.

2. Gunakan AWS SDK for Go untuk menyambung ke DynamoDB

1 Pasang AWS SDK for Go

Jalankan arahan berikut dalam terminal untuk memasang AWS SDK for Go. :

$ go get -u github.com/aws/aws-sdk-go
Salin selepas log masuk

2 Konfigurasikan AWS SDK untuk Go

Sebelum menyambung ke DynamoDB, anda perlu mengkonfigurasi kunci akses dan rantau AWS yang digunakan oleh AWS SDK for Go. Untuk melakukan ini, tambahkan kod berikut pada kod anda:

sess := session.Must(session.NewSession(&aws.Config{
    Region: aws.String("us-west-2"),
    Credentials: credentials.NewStaticCredentials(
        "YOUR_ACCESS_KEY_ID", "YOUR_SECRET_ACCESS_KEY", ""),
}))
Salin selepas log masuk

di mana Wilayah dan Bukti kelayakan diperlukan pilihan. Dalam sifat Rantau, anda boleh menentukan rantau AWS. Bukti kelayakan ialah mekanisme pengesahan yang digunakan untuk menyambung ke perkhidmatan AWS. Jika anda tidak mempunyai sijil akses AWS yang diberikan, anda boleh membuat sijil baharu pada halaman Pengurusan AWS.

3. Cipta dan padam jadual

Dalam DynamoDB, jadual ialah koleksi item dengan atribut yang sama yang boleh digunakan untuk menyimpan dan mendapatkan data. Untuk mencipta jadual baharu, atribut seperti nama jadual, kunci utama dan unit kapasiti perlu ditentukan. Kod berikut menunjukkan cara menggunakan AWS SDK for Go untuk mencipta jadual DynamoDB:

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)
Salin selepas log masuk

Selepas berjaya mencipta, anda boleh melihat jadual yang baru dibuat dalam konsol DynamoDB. Jika anda ingin memadamkan jadual, sila gunakan kod berikut:

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)
Salin selepas log masuk

4 Tambah, baca dan padam data

1. Tambah data

Kod berikut menunjukkan caranya untuk menggunakan AWS SDK for Go Add data pada jadual DynamoDB:

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
}
Salin selepas log masuk

Dalam antara muka PutItemInput, atribut Item digunakan untuk menentukan item yang akan ditambahkan pada jadual dan atribut TableName digunakan untuk menentukan nama jadual.

2. Baca data

Kod berikut menunjukkan cara menggunakan AWS SDK for Go untuk membaca data daripada jadual DynamoDB:

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,
    )
}
Salin selepas log masuk

Dalam antara muka GetItemInput, atribut Kunci digunakan Untuk menentukan item untuk diambil daripada jadual, sifat TableName digunakan untuk menentukan nama jadual. Data yang diperoleh disimpan dalam sifat Item hasil pulangan Anda boleh menggunakan gelung untuk melintasi data yang diperoleh dan mencetaknya.

3. Padam data

Kod berikut menunjukkan cara menggunakan AWS SDK untuk Go untuk memadam data dalam jadual DynamoDB:

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
}
Salin selepas log masuk

Dalam DeleteItemInput, atribut Key digunakan untuk menentukan Untuk item yang dipadam, sifat TableName digunakan untuk menentukan nama jadual.

5. Gunakan ungkapan bersyarat

AWS DynamoDB agak berkuasa dan menyokong penggunaan ungkapan bersyarat untuk membuat pertanyaan, mengemas kini dan memadam data. Ungkapan bersyarat menggunakan operator logik seperti operator AND, OR operator, operator relasi, fungsi, dll. untuk membina keadaan. Kod berikut menunjukkan cara menggunakan AWS SDK untuk Pergi ke data pertanyaan dalam jadual DynamoDB berdasarkan syarat tertentu:

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)
}
Salin selepas log masuk

Dalam antara muka QueryInput, KeyConditionExpression digunakan untuk menentukan syarat pertanyaan, ExpressionAttributeValues ​​​​adalah digunakan untuk menentukan nilai keadaan, TableName Atribut menentukan nama jadual.

6. Menggunakan kawalan transaksi dalam DynamoDB

AWS DynamoDB menyediakan fungsi kawalan transaksi yang boleh memastikan integriti unit logik transaksi apabila dalam keadaan baca dan tulis. Urus niaga DynamoDB perlu memenuhi ciri-ciri berikut:

  1. Proses operasi secara atom dan berjaya melakukan atau rollback
  2. Operasi untuk melaksanakan transaksi mesti diselesaikan dalam jadual yang sama.

Kod berikut menunjukkan cara menggunakan transaksi dalam Go:

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)
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mencipta klien DynamoDB dan menentukan jadual untuk diproses. Kemudian, operasi transaksi ditakrifkan yang memadamkan rekod data produk dengan kunci "1". Akhir sekali, tentukan objek konteks transaksi DynamoDB dan hantar operasi transaksi yang akan dilakukan kepada kaedah TransactWriteItems.

7. Gunakan DynamoDB untuk mengemas kini data secara bersyarat

条件更新是将新值写回项目时使用的一种机制。当特定条件被给定时,更新操作将执行。要使用条件更新,必须满足以下条件:

  1. 更新目标必须存在;
  2. 更新操作必须基于某个条件执行。

下面是一个条件更新的示例:

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
}
Salin selepas log masuk

上述示例是使用条件更新更新了产品ID为“2”的产品名称。在条件表达式中,我们使用了attribute_exists函数来检查该项目是否存在。

八、总结

在本文中,我们深入介绍了 DynamoDB 及其在Go语言中的使用方法。我们讨论了配置 AWS SDK for Go,创建和删除表,添加、读取和删除数据,使用条件表达式,事务控制以及条件更新数据。由于 DynamoDB 具有可伸缩性、高可用性和良好的性能,因此可以成为处理大规模数据集合的首选数据库解决方案之一。

如果您想开始使用 AWS DynamoDB 和 Go,强烈建议您参考 AWS 官方文档 以便获得更详细的信息和 API 示例。

Atas ialah kandungan terperinci Menggunakan AWS DynamoDB dalam Go: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan