Rumah > pembangunan bahagian belakang > Tutorial Python > Penulisan Kelompok yang Cekap ke DynamoDB dengan Python: Panduan Langkah demi Langkah

Penulisan Kelompok yang Cekap ke DynamoDB dengan Python: Panduan Langkah demi Langkah

Barbara Streisand
Lepaskan: 2025-01-08 06:49:41
asal
394 orang telah melayarinya

Efficient Batch Writing to DynamoDB with Python: A Step-by-Step Guide

Panduan ini menunjukkan pemasukan data yang cekap ke dalam AWS DynamoDB menggunakan Python, memfokuskan pada set data yang besar. Kami akan meliputi: penciptaan jadual (jika perlu), penjanaan data rawak dan penulisan kelompok untuk prestasi optimum dan penjimatan kos. Perpustakaan boto3 diperlukan; pasangnya menggunakan pip install boto3.

1. Persediaan Jadual DynamoDB:

Pertama, kami mewujudkan sesi AWS dan mentakrifkan rantau jadual DynamoDB:

<code class="language-python">import boto3
from botocore.exceptions import ClientError

dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
table_name = 'My_DynamoDB_Table_Name'</code>
Salin selepas log masuk

Fungsi create_table_if_not_exists() menyemak kewujudan jadual dan menciptanya dengan kunci utama (id) jika tiada:

<code class="language-python">def create_table_if_not_exists():
    try:
        table = dynamodb.Table(table_name)
        table.load()
        print(f"Table '{table_name}' exists.")
        return table
    except ClientError as e:
        if e.response['Error']['Code'] == 'ResourceNotFoundException':
            print(f"Creating table '{table_name}'...")
            table = dynamodb.create_table(
                TableName=table_name,
                KeySchema=[{'AttributeName': 'id', 'KeyType': 'HASH'}],
                AttributeDefinitions=[{'AttributeName': 'id', 'AttributeType': 'S'}],
                ProvisionedThroughput={'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5}
            )
            table.meta.client.get_waiter('table_exists').wait(TableName=table_name)
            print(f"Table '{table_name}' created.")
            return table
        else:
            print(f"Error: {e}")
            raise</code>
Salin selepas log masuk

2. Penjanaan Data Rawak:

Kami akan menjana rekod sampel dengan id, name, timestamp dan value:

<code class="language-python">import random
import string
from datetime import datetime

def generate_random_string(length=10):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

def generate_record():
    return {
        'id': generate_random_string(16),
        'name': generate_random_string(8),
        'timestamp': str(datetime.utcnow()),
        'value': random.randint(1, 1000)
    }</code>
Salin selepas log masuk

3. Penulisan Data Kelompok:

Fungsi batch_write() menggunakan batch_writer() DynamoDB untuk sisipan pukal yang cekap (sehingga 25 item setiap kelompok):

<code class="language-python">def batch_write(table, records):
    with table.batch_writer() as batch:
        for record in records:
            batch.put_item(Item=record)</code>
Salin selepas log masuk

4. Aliran Kerja Utama:

Fungsi utama mengatur penciptaan jadual, penjanaan data dan penulisan kelompok:

<code class="language-python">def main():
    table = create_table_if_not_exists()
    records_batch = []
    for i in range(1, 1001):
        record = generate_record()
        records_batch.append(record)
        if len(records_batch) == 25:
            batch_write(table, records_batch)
            records_batch = []
            print(f"Wrote {i} records")
    if records_batch:
        batch_write(table, records_batch)
        print(f"Wrote remaining {len(records_batch)} records")

if __name__ == '__main__':
    main()</code>
Salin selepas log masuk

5. Kesimpulan:

Skrip ini memanfaatkan penulisan kelompok untuk mengoptimumkan interaksi DynamoDB untuk volum data yang besar. Ingat untuk melaraskan parameter (saiz kelompok, kiraan rekod, dll.) agar sepadan dengan keperluan khusus anda. Pertimbangkan untuk meneroka ciri DynamoDB lanjutan untuk peningkatan prestasi selanjutnya.

Atas ialah kandungan terperinci Penulisan Kelompok yang Cekap ke DynamoDB dengan Python: Panduan Langkah demi Langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan