私はリレーショナル データベースの世界から来て、このデータストアのことを見つけました。コツをつかむのに数日かかりました。さて、私の発見のいくつかがあります。
Datastore はスケーリングするように構築されており、それが RDMBS との違いであることを既にご存じのはずです。大規模なデータセットでより適切にスケーリングするために、App Engine はいくつかの変更を行いました (いくつかの変更は多くの変更を意味します)。
RDBMS VS DataStore
構造
データベースでは、通常、データをテーブル、データストアにある行で構造化し、種類とエンティティになります。
関係
RDBMS では、ほとんどの人が 1 対 1、多対 1、多対多の関係に従います。データストアでは、「結合なし」であるため、「ReferencePropertyを使用して正規化を達成できます。 " 例: 1 対 1 の関係の例.
インデックス
通常、RDMBS では、主キー、外部キー、一意のキー、インデックス キーなどのインデックスを作成して、検索を高速化し、データベースのパフォーマンスを向上させます。データストアでは、種類ごとに少なくとも 1 つのインデックスを作成する必要があります (好むと好まざるとにかかわらず、自動的に生成されます)。データストアはこれらのインデックスに基づいてエンティティを検索し、それが最良の部分であると信じています。RDBMS では、次を使用して検索できます。しばらく時間がかかりますが、そうなるでしょう。Datastore では、非インデックス プロパティを使用して検索することはできません。
カウント
RDMBS ではカウントする方がはるかに簡単ですが(*)、データストアでは、1000 制限があり、エンティティと同じくらい小さな操作のコストがかかるため、通常の方法で考えることさえしないでください (カウント機能があります)。は良くありませんが、常に良い選択肢があります。シャード カウンターを使用できます。
Unique Constraints
RDMBS では、この機能が気に入っていますよね? しかし、データストアには独自の方法があります。プロパティを一意として定義することはできません:(。
Query
GAE Datatore は、GQLである SQL (データストアにはLIKEキーワードがありません) と同じくらい優れた機能を提供します。
データの挿入/更新/削除/選択
RDMBS では、RDBMS と同じように、挿入、更新、削除、選択に 1 つのクエリが必要です。書き込み、読み取り、小規模な操作(データストア呼び出しの読み取りコスト) に関するput または get であり、データ モデリングが機能する場所です。これらの操作を最小限に抑え、アプリを実行し続ける必要があります。読み取り操作を減らすには、 Memcacheを使用できます。