ホームページ > バックエンド開発 > Python チュートリアル > Python を使用した DynamoDB への効率的なバッチ書き込み: ステップバイステップガイド

Python を使用した DynamoDB への効率的なバッチ書き込み: ステップバイステップガイド

Barbara Streisand
リリース: 2025-01-08 06:49:41
オリジナル
359 人が閲覧しました

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

このガイドでは、大規模なデータセットに焦点を当て、Python を使用して AWS DynamoDB に効率的にデータを挿入する方法を示します。 テーブルの作成 (必要な場合)、ランダム データの生成、および最適なパフォーマンスとコスト削減のためのバッチ書き込みについて説明します。 boto3 ライブラリは必須です。 pip install boto3.

を使用してインストールします。

1. DynamoDB テーブルのセットアップ:

まず、AWS セッションを確立し、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>
ログイン後にコピー

create_table_if_not_exists() 関数はテーブルの存在を確認し、存在しない場合は主キー (id) を使用してテーブルを作成します。

<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>
ログイン後にコピー

2.ランダムデータ生成:

idnametimestamp、および 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>
ログイン後にコピー

3.データ一括書き込み:

batch_write() 関数は、効率的な一括挿入 (バッチあたり最大 25 アイテム) のために DynamoDB の batch_writer() を利用します。

<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>
ログイン後にコピー

4.主なワークフロー:

メイン関数は、テーブルの作成、データ生成、バッチ書き込みを調整します。

<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>
ログイン後にコピー

5.結論:

このスクリプトはバッチ書き込みを活用して、大量のデータに対する DynamoDB の対話を最適化します。 特定のニーズに合わせてパラメータ (バッチ サイズ、レコード数など) を必ず調整してください。 さらにパフォーマンスを向上させるために、高度な DynamoDB 機能を検討することを検討してください。

以上がPython を使用した DynamoDB への効率的なバッチ書き込み: ステップバイステップガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート