すべてのプロダクト
Search
ドキュメントセンター

:TableStoreWriter の概要

最終更新日:Dec 28, 2024

TableStoreWriter は、Java 用 Tablestore SDK によって提供されるツールクラスであり、高並列および高スループットでデータをインポートするために使用される操作をカプセル化します。 TableStoreWriter を使用すると、高並列で Tablestore データテーブルにデータを書き込み、行レベルのコールバックとカスタム設定を指定できます。

背景情報

説明

TableStoreWriter は、ワイドカラムモデルにのみ適しています。

TableStoreWriter を使用する理由

ロギングや IoT トレーシングなどのシナリオでは、デバイスは短期間に大量のデータを生成し、ユーザーはデバイスデータをデータベースに書き込む必要があります。 データベースは、1 秒あたり数万行、あるいは数百万行もの高並列および高スループットの書き込みパフォーマンスを提供する必要があります。 ただし、Tablestore の BatchWriteRow 操作は、バッチで最大 200 行しか書き込むことができません。

TableStoreWriter の機能

前述のシナリオにおける並列書き込みパフォーマンスの高い要件を満たすために、Tablestore は、Java 用 Tablestore SDK に基づいて高パフォーマンスを実現できる、使いやすいデータインポートツールクラスである TableStoreWriter を提供しています。 TableStoreWriter は、高並列および高スループットでデータをインポートするために使用できる操作をカプセル化します。 TableStoreWriter を使用すると、高並列で Tablestore データテーブルにデータを書き込むことができます。 また、行レベルのコールバックとカスタム設定を指定することもできます。

シナリオ

ビジネスシナリオに次の特性がある場合は、TableStoreWriter を使用して Tablestore にデータを書き込むことができます。

  • アプリケーションの高並列性により、高スループットが必要。

  • 単一行のデータの書き込みレイテンシに対する要件なし。

  • データは非同期で書き込むことができる(プロデューサー - コンシューマーモードを使用できる)。

  • 同じ行のデータを繰り返し書き込むことができる。

TableStoreWriter の一般的な使用シナリオを以下に示します。

  • ログストレージ

    ログストレージシステムは、大量のログデータを保存し、高スループットを提供し、データを非同期で処理できます。 TableStoreWriter を使用すると、ログストレージシステムから Tablestore に高並列および高スループットでデータを書き込むことができます。 TableStoreWriter を使用する場合、繰り返し書き込みを行ってもログデータの有効性には影響しません。

  • メッセージングシステム

    インスタントメッセージングなどのメッセージシステムは、大量のメッセージ(グループチャットメッセージの書き込み増幅など)の処理をサポートし、高スループットを提供し、単一メッセージのレイテンシ許容範囲を数百ミリ秒にする必要があります。 メッセージ処理は非同期で実行できます。 各メッセージには一意の ID があり、内容は変更できません。 その結果、例外が発生することなく、繰り返し書き込みがサポートされます。 Tablestore を使用してメッセージングシステムにデータを保存する場合、TableStoreWriter を使用して Tablestore にデータをすばやく書き込むことができます。

  • 分散キューからのメッセージの消費

    分散キューは、複雑な分散システムで広く使用されています。 分散キューは、高パフォーマンスのメッセージ配信を提供するだけでなく、モジュール間の依存関係を分離してシステムアーキテクチャを簡素化します。

    ビジネスアーキテクチャで分散キューを使用し、コンシューマタスクの 1 つが Tablestore にデータをインポートする場合、TableStoreWriter の使用を検討してください。 TableStoreWriter はプロデューサー - コンシューマーモードに基づいており、分散キューと同様のシナリオに適しています。

アーキテクチャ

TableStoreWriter は、SDK 処理レイヤーでの操作に基づいて再カプセル化されたツールクラスです。 TableStoreWriter と Java 用 Tablestore SDK の関係を以下に示します。

  • TableStoreWriter は、Java 用 Tablestore SDK によって提供される AsyncClient 非同期操作に依存します。

  • TableStoreWriter は、Java 用 Tablestore SDK の BatchWriteRow 操作を使用して、Tablestore にデータをインポートします。

  • TableStoreWriter が単一の失敗した行に対して実行する再試行は、Java 用 Tablestore SDK の RetryStrategy に依存します。

Java 用 Tablestore SDK によって提供される操作を使用して、Tablestore にデータを書き込むこともできます。 Java 用 Tablestore SDK によって提供される操作と比較して、TableStoreWriter はパフォーマンスと使いやすさの点で最適化されており、次の機能を提供します。

  • 非同期操作:より少ないスレッドを使用して、より高い並列性を実現します。

  • 自動データ集約:メモリ内のバッファキューを使用して、同時に Tablestore に送信される書き込みリクエストの数を最大化します。 これにより、書き込みスループットが向上します。

  • プロデューサー - コンシューマーモード:このモードは、非同期処理とデータ集約を容易にします。

  • 高パフォーマンスデータ交換キュー:マルチプロデューサーおよびシングルコンシューマーモードを使用する Disruptor RingBuffer を使用して、より優れたパフォーマンスを提供します。

  • 複雑なリクエストカプセル化のマスキング:BatchWriteRow 操作を呼び出す詳細はマスキングされます。 事前チェックを使用してダーティデータが除外され、バッチでインポートできる行の数やサイズなどのリクエスト制限が自動的に処理されます。 ダーティデータとは、スキーマがテーブルのスキーマと異なる行、サイズが上限を超えている行、または列の数が上限を超えている行のことです。

  • 行レベルのコールバック:Java 用 Tablestore SDK によって提供されるリクエストレベルのコールバックと比較して、TableStoreWriter は行レベルのコールバックを提供して、ビジネスロジックが行レベルでデータを処理できるようにします。

  • 行レベルの再試行:リクエストレベルの再試行が失敗した場合、書き込み成功率をできるだけ高くするために、特定のエラーコードに対して行レベルの再試行が実行されます。

次のステップ

TableStoreWriter を使い始めましょう。 詳細については、TableStoreWriter を使用して並列でデータを書き込むを参照してください。