質問

GQLは、SQLを知っている誰かのために学ぶのは簡単ですか?ジャンゴ/ Pythonはどうでしょうか? App Engineは本当に簡単なスケーリングがありますか? 「GQL注射」に対する任意の組み込みの保護はありますか?そしてそうで...

私はアプリのエンジンを使用してのそれほど明白ではない浮き沈みを聞いてみたい。

乾杯!

役に立ちましたか?

解決

最も明白なとイライラする問題は、「偉大な外観と非常によく考え抜か、あなたがSQLに使用されている場合で動作するように簡単にされ、データストアのAPIですが、すべてのクエリの結果セット全体で千行の制限があり、次のことができますそれを超えトンのアクセス回数またはオフセット。私は実際にそれが1000行を超えたら、モデルのデータを追加したり、アクセスすることができないと、奇妙な問題に遭遇しました。

1000年行制限スタックオーバーフローの説明を参照してください>

アラルバルカン

この本の本当に良い要約やその他の問題を書きました

は、アプリエンジンがものの処分で持っている本当に素晴らしいツールである、と私は本当にそれで働くのが好き、と述べました。これは、マイクロWebサービス(例:JSONのAPIを)展開するための最適です。他のアプリケーションで使用するために、

他のヒント

GQLは非常に簡単です - それは声明、何よりも「選択」は、SQLのサブセットです。これは、しかし、低レベルAPIの上にのみコンビニエンス層だし、すべての解析はPythonで行われます。

(彼らはとにかく適切に書かれたGQLでは不可能ですが)

その代わり、私は、手続きでクエリAPIを使用することをお勧めします、何の実行時の解析を必要としない、と「GQL注射」の脆弱性は完全に不可能になります。クエリAPIは非常に単純です:Modelクラスに.ALL()を呼び出し、またはdb.Query(モデル名)を呼び出します。クエリオブジェクトは、GQLオブジェクトが(に.get()、.fetch()、.count())を持つすべての設備に加えて、.filter(field_and_operator、値)、.ORDER(field_and_direction)と.ancestor(エンティティ)メソッド有しますなど)クエリの各メソッドは、便宜のために、Queryオブジェクトそのものを返すので、あなたはそれらをチェーンすることができます:

  

結果= MyModel.all()フィルタ( "FOO ="、5).ORDER( " - バー")。フェッチ(10)

と等価です

  = MyModel.gql( "FOO = 5 ORDERバールDESC LIMIT 10 BY")

の結果。フェッチ()

奇妙なの一種今、私はいくつかのためにそれで働いてきたこと、など1000の以上の行を数える合流行うことができないために -

まず私はGQLにSQLから移行し他と同じ経験をしました数ヶ月は、私は絶対にApp Engineのが大好きです。私はそれに私の古いプロジェクトのすべてを移植しています。

私はいくつかの高トラフィックのウェブアプリケーションをホストするためにそれを使用する(そのうちの一つは、50Kの分を打つ取得するピーク時に。)

Google App Engineが、実際のデータベースを使用して、明らかに分散ハッシュマップのいくつかの並べ替えを使用していません。これは、単にSQLに慣れている人は、最初に見に行くされていないいくつかの異なる振る舞いに自分自身を貸すだろう。だから、例えば高速動作をすることが期待され、通常のSQL内の項目の数を取得、しかしGQLと、それだけで同じように仕事に行くのではない。

ここではいくつかのより多くの問題があります:

http://blog.burnayev.com/2008/04/gql -limitations.htmlする

私の個人的な経験では、それは調整だが、学習曲線が細かいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top