タグ

ブックマーク / shin1o.blogspot.com (4)

  • #appengine でクエリの1000件超の結果件数を取得する方法

    先のエントリで書いた#appengine でクエリの結果件数を取得する方法(1000件超とか)の続きです。 どーしても動的な条件に対する結果件数を…ていうなら、最悪Low-level APIでsetKeysOnly()しつつページング(常に条件を変えつつoffset0~limit1000で)、で数えるという手もあるかもしれない。これもまた試してみよう。この方法なら1000件につき約110msなんで、7000件でも770msくらいで数えきれるはずだ。 気になって眠れないので引き続きこちらの方法も試してみた。 手法 AppEngineでのページング手法としてBest practices for writing scalable applicationsでも書かれているページング方法で、setKeysOnly()を使う場合、使わない場合のふたつのパターンを試してみた。どちらもasList()を使

  • #appengine JavaのLow-Level API(低レベルAPI)入門

    追記このエントリについては今後はWikiでメンテナンスしていきますので、最新の情報はWikiで確認して下さい。 追記スティルハウス社の佐藤さんよりコメントを頂いたので一部の表現を修正しました。取り消し線+青字にしたりしてます。 追記ひがさんよりコメントを頂いたので、最後のTransactionについてのソースコードのサンプルを一部修正しています。子Entityをput()する呼び出しの第一引数にTranscationを指定するように修正しました。 ここから GAE/JのLow-level API(主にDatastore周り)については基的にJavaDocしかなくて情報量が少ないと思ったので、それなりに使っていくための簡単な説明を書いてみる(@fumokmm氏の発言で思いつきました、Thx!)。 個人的な思いとしては、GAE/JのDatastoreについてJDOから入るのは間違いの元だJD

  • #appengine でクエリの結果件数を取得する方法(1000件超とか)

    今日ひがさんと「クエリの結果件数の取得方法」についてTwitterで少しやりとりした。 Low-level APIのPreparedQueryだと1000件の上限があるが、JDOのQueryだと上限が無い 確かに上限は無いけど、JDOでQuery#execute().size()はめっちゃ遅くて現実的ではない JDOでもQuery#setResult("count(this)")は速い。でも、こいつは実はLow-level APIに丸投げなのでやっぱ1000件の上限に引っかかる。 JDOでもQuery#setResult("key")するとLow-level APIでいうsetKeysOnly()と同じ、キーのみクエリになる。でも1000件の上限に引っかからない! 大体こんなカンジで、最後の件はひがさんが発見してGoogle App Engine for Java GroupのMLにPos

  • #appengine JavaのLow-Level API入門 Relationship編

    前回のエントリが結構好評だったのと、前回のエントリだけだと、JDOから入った人は「Relationshipどーすんの?」となりそぅな気がしたので、調子に乗ってlow-level APIとJDOでのRelationshipの比較等について書きます。 JDOの方はLLParentクラスがOneToOneでLLChildAを、OneToManyでLLChildBを保持するような構成です。一方low-level APIではJDOと同じ事をキーのみでEntityGroupを構成します。LLParentkindは子エンティティのためのpropertyを一切保持しないと言う事です。JDOの方でもキーのみでEntityGroupを構成する事ができますが、ListPropertyで保持する方が一般的というかORMっぽいかなぁと思いまして。 一見、データの保持の仕方が全く違うよね?と見えますが、実はどちらの方

  • 1