Datastore I/O

Dataflow SDK では、Google Cloud Datastore データベースとの間でデータの読み取りや書き込みを行うための API が提供されています。Datastore I/O 読み取り / 書き込み変換を利用すると、従来のデータベース テーブルの行と同じように、Datastore Entity オブジェクトの PCollection を読み取ったり、書き込んだりすることが可能です。

Datastore からの読み取り

Datastore から読み取るには、Datastore 読み取り変換を適用し、読み取り時に対象の Datastore データセットと使用するクエリを指定する必要があります。オプションで、クエリの対象範囲を示す名前空間を指定することもできます。指定した場合、その名前空間にキーが一致する Datastore エンティティだけが返されます。

  • プロジェクト ID: Datastore データベースがある Cloud Platform プロジェクトの ID を含む String
  • クエリ: 読み取り時に使用されるクエリを表す、データストア Query オブジェクト。
  • 名前空間(省略可): クエリの対象範囲の名前空間を含む String

Datastore I/O の読み取りオペレーションは、Datastore Entity オブジェクトの PCollection を返します。エンティティとは、Cloud Datastore 内のデータ オブジェクトのことです。

次のサンプルコードは、DatastoreIO を使用したシンプルな読み取りオペレーションです。

Java

PipelineOptions options = PipelineOptionsFactory.fromArgs(args).create();
Query query = ...;
String projectId = "...";

Pipeline p = Pipeline.create(options);
PCollection<Entity> entities = p.apply(
   DatastoreIO.v1().read()
       .withProjectId(projectId)
       .withQuery(query));

: DatastoreIO を使用した読み取りでは通常、複数のワーカーを使用して並列処理で読み取りを行います。ただし、すべてのクエリが並列処理されるわけではありません。たとえば、制限を指定している場合や、クエリに特定の不等式フィルタが含まれている場合には並列処理されません。このようなクエリの場合、Dataflow サービスは 1 つの Dataflow ワーカーを使用してデータの正確性を維持します。この動作は、パイプラインのスループットに影響する可能性があります。

データストアへの書き込み

Datastore に書き込むには、Datastore エンティティ オブジェクトの PCollection として出力をフォーマットし、Datastore Write 変換を適用する必要があります。また、Datastore データベースが存在する Cloud Platform プロジェクト ID に渡す必要があります。

次のサンプルコードは、Datastore IO を使用したシンプルな書き込みオペレーションです。

Java

PCollection<Entity> entities = ...;
entities.apply(DatastoreIO.v1().write().withProjectId(projectId));

Datastore に書き込むエンティティには、完全な Keys を設定する必要があります。完全な Key とは、エンティティの nameid が指定されたものです。特定の namespace にエンティティを書き込みたい場合は、エンティティの key の対応するプロパティで、namespace を指定する必要があります。

Dataflow を使用して書き込んだエンティティは、upsert(更新または挿入)変異オペレーションとして Datastore に commit されます。つまり、Datastore 内にすでに存在するエンティティは上書きされ、その他のエンティティは挿入されます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。