2

私はGoogleアプリケーションエンジンに入れたい、中規模(〜100MB)の読み取り専用データベースを持っています。私はそれをデータストアに入れることができますが、データストアは遅く、リレーショナル機能はなく、他の多くの不満があります(ここには入りません)。もう1つの選択肢は、すべてのデータをメモリに読み込むことですが、私はすぐにgoogleによって割り当てられたクォータにヒットしました。最終的な選択肢はdjango-nonrel + djangoappengineですが、パッケージはまだ初期段階です。Google App Engine上の読み取り専用リレーショナルデータベース

理想的には、データソースとしてブロブストアを使用する読み取り専用のsqliteデータベースを作成したいと考えています。これは可能ですか?

+3

どのような問題を解決しようとしていますか?どのようなデータベースが必要ですか?読み込み専用の場合は、データをオフラインで使用可能な状態に変換できないのはなぜですか?それがわずか100MBの場合、さまざまなクエリをサポートするために10種類の異なる方法で非正規化することができます。 –

+0

私は別の状態にオフラインに置くことができたら、何ですか?ブロブストアとしてアップロードして手動で検索しますか?それともデータストアに保存するのですか?また、すべてを非正規化すると、データは数ギガバイトの範囲に容易に拡大します。たとえば、場所の検索をサポートするためにカスタムモデルのジオモデルを使用しています。位置データだけを非正規化すると、位置データが爆発する可能性があります。 – speedplane

答えて

2

あなたはそういうものを見つける可能性は低いと思います...確かにブロブストアではありません。すべてのデータが1つのBLOBに格納されている場合は、データベース全体をメモリに読み込んで操作する必要があります。

データストアをバックエンドとして使用するほうがもっともらしいですが、それほど多くはありません。 SQLiteドライバを提供することの大きな問題は、トランザクションのセマンティクスを実装することであり、高可用性のためにGAEがあなたから離れていく重要なことなので、誰かがそのようなことを書くのに苦労することは想像もつきません。

+1

ブロブ全体をロードする必要はありません。 App Engineは、ランダムファイルアクセスと同様に、ブロブストアへのランダムアクセスを提供します。また、これは読み取り専用のデータベースです。私は取引が必要とは思わない。 – speedplane

1

BlobReaderクラスを使用してBlobstoreオブジェクトにファイル形式のオブジェクトとしてアクセスすることは可能ですが、ファイルストア全体をロードせずにそのようなファイルに対してリレーショナルデータベース操作を実行しようとすると、まずメモリに格納します。

+0

スマートなインメモリキャッシュで実現可能かもしれないと私は考えています。 – speedplane

2

django-nonrelは魔法のようにSQLデータベースを提供していませんので、実際には問題の解決策ではありません。

ファイルのようなブロブストアブロブにアクセスすることはできますが、SQLiteモジュールにはネイティブC拡張が必要ですが、これはApp Engineでは有効になっていません。

関連する問題