2017-11-05 14 views
0

Google Cloud Datastoreを試していますが、疑問があります。私は理想的なのは、ショップをオンラインにするためにリレーショナルデータベースを使用することですが、Google Cloud Datastoreを試してみたいと思います。Google Cloud Datastore for Product and Stock

2つのテーブルのデータベースはどのように作成されますか?株式および商品。在庫表には2つの列(refとunits)があり、製品表には3つの列(name、refおよびprice)があります。

在庫を持っているすべての製品を取得するにはどうすればよいですか... ...参加のように、私は結合がないことを知っています。

製品に関連する在庫を取得するには、効率的な方法が必要です。

答えて

1

データストアにはテーブルがありません。プロパティを持つエンティティのみがあります。また、使用するクライアントライブラリに応じて、にエンティティモデルがある可能性があります。

エンティティStockは、対応するProductエンティティを示すKeyプロパティを持つことができます。それぞれのエンティティを引っ張ってProductキーを取得した結果からStockエンティティをクエリします。

それとも、彼らは1に常にしている場合:1の関係私は、対応するStockProductエンティティのための正確な同一のエンティティIDを使用することができますので、私はStockクエリを作ることができ、その結果でStockエンティティから(または私はおそらくkeys_onlyクエリーを作成するので、キー/ IDから)Productキーを即座に計算し、それぞれのエンティティを取得することができます(re-using an entity's ID for other entities of different kinds - sane idea?参照)。

しかし、一般的に、あなたはあなたがそれを必要なときにレポートを生成するためのデータを照会(そしてそれは、高速であることを期待して)の一般的なSQLのアプローチを再考し、代わりに先に必要な計算を実行する習慣を作りたいかもしれませんそれらの計算で使用されるデータが変更されたときはいつでも。これはデータストアと連携して動作するスケーラビリティの高いアプローチです(一般的にはnosqlと同じです)。また、SQLスタイルの結合操作と同等の処理を行う必要はありません。問題の製品を既に知っているので、その在庫値を減らすときに、製品の在庫空フラグを基本的に上げます。そのため、後で問い合わせる必要はありません。また、レポートに追加して(必要に応じて準備が整うように)、補充作業を開始することもできます。

関連する問題