さて、私はvideoを見て、App Engineのドキュメント(Using the High Replication Datastoreを含む)の記事を読んでいます。しかし、私はまだ完全にそれの実用的な使用に混乱しています。私はビデオのメリットを理解しています。しかし、私が欠けているのは、実用的な例です。 Web上には多くのマスター/スレーブの例がありますが、高いレプリケーションデータストアを(適切なドキュメントとともに)ほとんど示していません。 Using the High Replication Datastoreの記事で使用されているゲストブックのコード例では、以前のゲストブックのコード例にはない新しい機能を追加して祖先のキーを示しています(ゲストブックを変更できるようです)。これはちょうど混乱に加わります。High Replication Datastoreの使用方法
多くの場合、GAEでdjangoformsを使用しています。誰かがこれらのすべてのクエリを高レプリケーションデータストア互換クエリに変換するのを手伝ってもらえるかどうか疑問に思っていました(すべてのクエリが必ず高いレプリケーションデータストア互換クエリ例そのものに焦点を合わせる)。
UPDATE:レプリケーションデータストアの互換性の高いクエリを使用しています。私は常に最新のデータを返し、失効する可能性のあるデータは返さないクエリを参照します。エンティティグループを使用する方法がここにあるようですが、前述のように、これを行う方法の実用的なコード例はたくさんありませんので、これが私が探しているものです!
だからthe queries in this articleは、次のとおりです。
この記事の主な定期的なクエリは次のとおりです。私たちはに変換されます
query = db.GqlQuery("SELECT * FROM Item ORDER BY name")
:
:フォームの検証query = Item.all().order('name') // datastore request
は次のように起こります
data = ItemForm(data=self.request.POST)
if data.is_valid():
# Save the data, and redirect to the view page
entity = data.save(commit=False)
entity.added_by = users.get_current_user()
entity.put() // datastore request
してフォームを埋めるためのデータストアから最新のエントリを取得は次のように行われます
id = int(self.request.get('id'))
item = Item.get(db.Key.from_path('Item', id)) // datastore request
data = ItemForm(data=self.request.POST, instance=item)
だから私は/私たちは高レプリケーションデータストアとの互換性、これらすべてのデータストア要求を作成するために必要な何をすべきか?
私にはっきりしない最後のものが1つあります。先祖キーを使用すると、データストア内のモデルに影響があります。例えば、彼らが使用するゲストブックのコード例では:
def guestbook_key(guestbook_name=None):
return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook')
しかし「ゲストブック」in the model存在しないので、どのようにあなたは、この上で「db.Key.from_path」を使用することができ、なぜこの仕事がしませんか?これにより、データを取得する際に考慮する必要があるデータストアのデータがどのように格納されるかが変更されますか(たとえば、djangoformを使用するときに除外する必要がある別のフィールドが追加されますか?
私が前に言ったように、これは私をたくさん混乱させ、あなたの助けが大いに評価されました!
HRデータストアをM/Sのように動作させるための魔法のレシピを探しているようです。そこには存在しません - あなたは単に失効したデータの結果がそれぞれのクエリにどのような影響を及ぼすのかを考え、それが問題であれば再構成するだけです。 –
こんにちはニック、私の質問に答える時間をとってくれてありがとう。私はHRがM/Sのように行動するという魔法のレシピを得ようとはしていませんが、私はあなたがそれを考える理由を理解していると思います。私が得ようとしているのは、これらの例を使用して、実際にHR互換のリクエストを書き込むことができるコードスニペットです(メモ:古いデータなし)。過去数年間、私はM/Sと仕事をしていましたが、今はHRと仕事をしたいと思いますが、どのように考えているのかわかりません。実際のコード例では、GAE Webサイトのドキュメントはごくわずかです。私はdjangoformsの例を選択します。これは、これをたくさん使って、新しいコードに集中することができるからです。 – reallife
"メモ:古いデータはありません" - HRをMSに切り替える方法を求めています。 HRで作業するためにクエリを変更する必要はありません。最終的に一貫していることを受け入れるだけで、必要に応じてそのことを考慮に入れます。 –