Relational Databaseの世界から来たのですが、このDatastoreのものが見つかりました。それに慣れるまでに数日かかりました。よく私の発見のいくつかがあります。
Datastoreはスケーリングに合わせて構築されており、それがRDMBSから分離されていることをすでに知っている必要があります。大きなデータセットでより適切にスケーリングするために、App Engineはいくつかの変更を加えました(一部は大幅な変更を意味します)。
RDBMS VS DataStoreの
構造
データベースでは、通常、データをTablesで構造化します。Datastoreにある行は、種類とエンティティになります。
関係
でRDBMSは、人々のほとんどは、1対1、多対1、多対多の関係では、データストアは、それが持っていたようなものを「いいえ結合」が、それでも私たちは、「使用して、当社の正規化を達成することができfolllows ReferencePropertyを "たとえば、1対1の関係の例。
インデックス
通常、RDMBSでは、主キー、外部キー、一意キー、インデックスキーなどのインデックスを作成して、検索を高速化し、データベースのパフォーマンスを向上させます。データストアでは、種類ごとに少なくとも1つのインデックスを作成する必要があります(これにより、好みに応じて自動的に生成されます)。これらのインデックスに基づいてエンティティがエンティティを検索し、それが最良の部分であると信じているためです。RDBMSでは、インデックスフィールドではありませんが、少し時間がかかります。データストアでは、非インデックスプロパティを使用して検索することはできません。
カウント
でRDMBSを、(*)カウントする方がはるかに簡単ですが、データストアに、それが持っている(うんカウント機能がある)通常の方法でそれを考えても、いけないしてください1000年の制限をして、それは限り費用がかかります小さなopertionどのエンティティとして良い方法ではありませんが、常に適切な選択肢があります。シャードカウンターを使用できます。
RDMBSの一意の制約この機能は気に入っていますか?しかし、データストアには独自の方法があります。プロパティを一意の:(として定義することはできません。
クエリ
GAE Datatoreは、より良い機能もはるか提供LIKE(あーもう!データストアがLIKEキーワードを持っていない)であるSQL GQLを。
データの挿入/更新/削除/選択
これは私たち全員が関心を持っている場所です。RDMBSでは、RDBMSと同じように、挿入、更新、削除、選択に対して1つのクエリが必要です。置くかという点で取得書き込み、読み出し、小オペレーション(読み取りデータストアのコールのコスト)とのthatsデータモデリングは、行動に出番。これらの操作を最小限に抑え、アプリを実行し続ける必要があります。読み取り操作を削減するには、Memcacheを使用できます。