commentAppEngineのDataStoreでインデックスを無効にした場合、書き込みコストが下がるか調べてみました。全てのModelの全てのフィールドにてindexを無効にしました。indexed=False)上記の設定にてAppEngine上のサービスを起動。結果:各フィールド毎のインデックスは作成されなくなった。よって書き込みオペレーションの回数が減り、コスト削減。DataStoreのエントリーの数と同数のインデックスが作成されている。よって、書き込みオペレーションの回数は書き込んだ(Put)エントリーの2倍発生。考察:キー(Key)でしかデータを参照(Lookup)しないので、なんとかインデックスを完全に無効にしたい。推測であるが、もしかしたら、このインデックスはキーでの参照用に作成されているのかも?自分のアプリのコストは、書き込みオペレーションからくるので、どうにかしたい。AppEngine上で動作する、単純なFacebook個人コンテンツ検索エンジンを開発している。現在幾つかの問題点にぶつかっているので、その問題点を列挙しておこうと思います。APIを利用しています。自分のユーザー権限を利用して取得できるアップデート(ポスト)の数は約50,000件になります。1度のAPI呼び出しに25件取得出来るので、データを全て取得する為には、2,000回APIを呼び出す必要があります。1度のAPI呼び出しに約数秒かかり、遅いケースでは5秒以上かかるケースもあります。(GAE))ユーザーがサインナップしてから、検索を始める事が出来るようになるまでに、1時間とか2時間とか待たなければならない事は避けなければなりません。コンテンツにプライオリティを付けて重要なものから取得するなどの工夫が必要です。AppEngineのDB(DataStore)への書き込みが遅い検索エンジンには、転置インデックスというデータ構造を用いています。転置インデックスはKey-Valueのデータ構造を用い、Keyにはキーワード(単語)、Valueにはキーワードを含むドキュメントのリストが保持されます。キーワードの種類はインデックスするドキュメントにもよりますが、ロングテイルとなります。実装にも依存しますが、同じキーワードに対して何回かの更新がかかります。現在共有出来る数値はありませんが、大量の書き込みがある場合はAppEngineのDataStoreは遅いように感じます。(HRD)は、信頼性を上げる為に書き込み速度を犠牲にしています。」によると、HRDの書き込み速度は45ms、Master-Slaveの書き込みは20msかかるようです。AppEngineのDB(DataStore)への書き込みコストが高い自分のケースでは、アップデート(ポスト)の件数が、約50,000件、転置インデックスインデックスのデータ数が約25,000件あります。書き込みオペレーションのコストは$1なので、実際に77セント課金されています。プラス読み込みoperationにも課金され、読み込みには57セント課金されています。1人分のインデックス作成(約180人の友人がいるケース)に$1は個人サービスとしては高すぎると感じる。補足あまりに書き込みオペレーションの回数がデータ数に対して大きいので、もう少し調べた結果、DataStoreがサポートするインデックの為に作られるデータの書き込みもカウントされているようです。自分のデータでは、74,608のデータに対し、977,995のインデックの為のデータが作成されています。上記のデータと一致しないのは、情報取得時のタイミング?インデックスを自動的に作成されないように、インデックスを無効にすることにより、書き込み速度の向上、および書き込みコストが下がるか調べようと考えています。プロトタイプ現在のバージョンは自分のアップデートしか検索できませんが、下記から試す事が出来ます。comment今(今年)、オンライン学習が熱いと感じています。現在どんなオンライン学習サイトが立ち上がって来ているのか紹介したいと思います。新しいサイトを紹介する前にまずは、「今までのインターネットを利用したオンライン学習ってどんなだっけ?」と言う所を見てみたいと思います。1)大学の講義を受講する手段としてビデオ聴講が選択肢として提供されている。大学の講義に参加する代わりに、ビデオを見て学習し、宿題・課題を提出し、テストを受け、クレジット(評価)をもらう。Extensionでコースをとった時には、既にビデオによる聴講手段は提供されていたので、かなり歴史が長いですね。コンピューター関連のクラスの殆どはこの方式をサポート。大学から遠い、仕事が忙しい人に学びの手段を提供していて、多くの学生が恩恵にあずかっている事と思います。昨年、同僚がStanfordのコースを取っていたが、仕事もある為、ビデオ学習していた。大学の講義なので授業料は安くないです。2)大学が、講義のビデオを無料公開。大学に属する学生以外が、講義のビデオを見ることが出来る。MITやStanfordのクラスなど。大学側は、教授、学友とのインターラクションに価値を見出している為、講義のビデオを無料公開に踏み切った。ウィキペディアによると2002年に試験プログラムを開始したようですね。この方式も歴史が長いですね。1コースは大体、1回1時間から2時間程のクラスを10回又は20回分です。全てのビデオを集中して見続けるのは大変な為、自分には合わない方式です。探している人が、検索し知識を得る方式。インターネットを利用している人が既に毎日利用している方式ですね。知識共有サイトには、StackOverFlowなどがあります。最近流行りのQ&AサイトにはQuoraなどがあります。群衆の知恵+Google検索により多くの問題を解決出来るので大変素晴らし方式なのですが、体系的な知識をつけるには(100%じゃやないけど)向かない方式だといえます。他にも色々あると思いますが、ぱっと思い浮かんだのが上記の3方式です。今年(2012年)の熱い状況1)新年早々、スタートアップである、Codecademyがオンライン学習サイトを開始。現在はJavaScriptのクラスを週1回のペースで提供。何が凄いって?新年早々、40万人がサインアップして、JavaScriptの学習を開始。実際に勉強している人の数はかなり少ないとは思います。立ち上げたばかりのプログラミング学習サイトに40万人集めるのも凄いのですが、40万人もの人がJavaScriptを学ぼうと思った所がもっと凄い!。特徴として、課題などを終わらせる事に、バッジなどがもらえ、ゲーム感覚でプログラミング言語を学べる。現在はJavaScript入門的なコースなのですが、内容もしっかりしていて、学べるサイトだと感じています。2)先週コースの第一週目が始まったのが、Stanfordの有名教授が始めたUdacity。ロボティクスのクラスを担当しているセバスチャンは本当に有名な大学教授らしいです。内容としては、大学と同クオリティーの授業をインターネットで提供。現在は2つのコースを提供しています。一つは、コンピューターサイエンス入門、入門ながら最終的には、検索エンジンを作ってしまおうという超野心的なコース。GoogleのFounderも紹介ビデオに出てきます。一つは、自動運転自動車のプログラミングコース(ロボティクス入門)。ロボット・人工知能の基礎が学べてしまいます。コンピューターサイエンス入門にはCS101の番号が付いていて、101の番号が付くものはアメリカでは、入門クラスという意味なのですが、Pythonをアカデミックな観点から勉強でき、かなり為になります。ロボティクスクラスはCS373と番号が付くだけに、コンピューターサイエンスの中ではアドバンス(ハイレベル)なクラスなのですが、ロボット(AI・人工知能)の基礎は統計(特に確率)で、基礎をしっかり学べます。いつかロボット作ってみたいなどの夢を持てるコースです。3)まだ始まっていないのです(何らかの理由で延期)が、Stanfordも無料オンラインコースをはじめるようです。NLPのクラスに大変興味ありです。コンピュータサイエンス以外のコースもいくつかあります。リンク先の一番したに提供予定のコースリストがあります。コンピューターサイエンス以外のコースもあり。Academyの為に働き始めたりして自分のレーダーに引っかかり始めました。Academyはコンピューターサイエンス以外のコースも多く提供しています。5)上記4つとは少し違うのですが、tuts+のコースがプラクティカルでオススメ。自分が勉強しているのはjQueryの30日コース、毎日10分から30分程のビデオがアップされ毎日少しづつ学ぶ事ができます。仕事でjQueryを使っているのですが、体系的に学んだ事がなかったので、大変助かっています。一日分が短いため、継続できるのが凄く良い。