DynamoDBがバックアップを取るとき、処理中にパフォーマンスの影響が出ないそうですが、どうしてそんなことができるの? どういう技術を裏で使っていますか? |
|
|
DynamoDBのバックアップで性能影響が小さいのは、ざっくり言うと 裏側では、DynamoDBの分散ストレージ基盤の「スナップショット」と「ログ(変更履歴)」の仕組みを使って、オンラインのまま整合性を保っています。 普通のDBバックアップで重くなる理由まず比較です。 昔ながらのDBだと:
となりやすく、性能影響が出ます。 DynamoDBは「分散ストレージ前提」DynamoDBは最初から:
する設計です。 つまり、 この構造がバックアップと相性がいいです。 ポイント1:スナップショット方式オンデマンドバックアップでは、 重要なのは: 「全部コピー開始!」ではない という点です。 多くの分散ストレージでは:
系の考え方を使います。 つまり: 「バックアップ時点のデータビュー」を固定し、 だから、 ポイント2:増分・ログ活用PITR(Point-In-Time Recovery)はさらに典型的です。 これは:
を保持して、 つまり: 「全部保存」ではなく、 だから効率がいい。 ポイント3:ストレージ層で処理ここがかなり重要です。 バックアップ処理は、 なので:
が起きにくい。 ユーザ視点では: なぜAWSで特にやりやすいのかDynamoDBは:
なので、 利用者が:
を知らなくていいのも大きい。 裏で使われている思想(推定含む)AWSは内部実装を全部公開していませんが、
あたりが強く関係しています。 Cassandra系やLSM-tree系の思想に近い部分があります。 完全に無負荷なの?ここは注意。 「ユーザが体感するほど大きな影響が少ない」
は動いています。 ただAWS側でかなり吸収している。 まとめDynamoDBバックアップが高性能なのは、 「動作中データを直接コピーする」のではなく、 です。 特に重要なのは:
このあたりです。 つまり、 「普段から持っている分散ストレージ機能をバックアップに転用している」 イメージに近いです。 |
|
|

この記事へのコメント