2

データベースとして(内部的に)SQLiteを使用するiPhoneアプリのプロトタイプを作成しました。最終的には、バックエンドデータベースとしてMySQLを使用するPHPを介してサーバーと通信することを目的としていました。

Google App Engineを発見したばかりですが、それについてはほとんど知りません。Pythonインターフェースを使用してデータストアに書き込むのは良いことだと思いますが、GQLの機能についてはほとんど知りません。私は基本的に、MySQLを使用してすべての動作するデータベースコードを記述し、SQLiteを使用してiPhoneで内部的にテストしました。GQLはSQLと同じ機能を提供しますか?結合クエリをサポートしていないことをサイトで読みました。また、それは本当にリレーショナルですか?

基本的に、私の質問は、SQLバックエンドを通常使用するアプリがGQLを使用するGoogleのAppEngineでも同様に機能するかどうかということだと思います。

それが明確であることを願っています...どんなガイダンスも素晴らしいです。

4

4 に答える 4

2

確かに、Google App Engineは非常に優れた製品ですが、データストアは通常のmySQLデータベースとは別の獣です。だからといって、GAEデータストアでは必要なことができないというわけではありません。ただし、お客様側で多少の手直しが必要になる場合があります。

最初から気付く最も顕著な違いは、GAEがデータストレージスキームにオブジェクトリレーショナルマッピングを使用していることです。基本的に、オブジェクトグラフはデータベースに保持され、他のオブジェクトとの属性と関係を維持します。多くの場合、ORM(オブジェクトリレーショナルマッピング)は、リレーショナルデータベースの上にかなりうまくマッピングされます(これがHibernateの動作方法です)。ただし、マッピングは完全ではなく、データを永続化するために変更を加える必要があることがわかります。また、GAEには、物事を少し複雑にするいくつかの固有の制約があります。私を悩ませている1つの制約は、属性パスを照会できないことです。たとえば、「select ... where dog.owner.name='bob'」です。ジャンプする前に、GAEデータストアがどのように機能するかを読んで理解することを強制するのは、これらのルールです。

GAEはあなたの状況でうまくいくと思います。ORMの永続性全般、およびGAEデータストアの詳細を理解するには、少し時間がかかる場合があります。

于 2010-01-23T21:03:25.950 に答える
2

GQLはほとんど機能を提供しません。これはSELECTクエリにのみ使用され、SQLプログラマーがSELECTクエリを簡単に記述できるようにするためにのみ存在します。舞台裏では、クエリをdb.Queryオブジェクトに変換します。

AppEngineデータストアはリレーショナルデータベースではありません。リレーショナルに見えることもできますが、SQLのバックグラウンドを持っている人には、GQLを絶対に避けて、データストアがRDBMSのようなものだと思わないようにし、データベースについて知っていることをすべて忘れることをお勧めします。設計。具体的には、何かを正規化している場合は、すぐに正規化していないことを望みます。

于 2010-01-23T23:59:37.160 に答える
1

この記事はあなたを助けるはずだと思います。

概要: ハンドヘルドデバイス向けのクラウドコンピューティングとソフトウェア開発は、ハイブリッドソリューションを作成するためにますます組み合わされている2つの非常にホットなテクノロジーです。この記事では、Googleのクラウドコンピューティング製品であるGoogleAppEngineをAppleのモバイルプラットフォームであるiPhoneに接続する方法を学びます。また、オープンソースライブラリであるTouchEngineを使用して、App Engineクラウドに接続し、オフラインで使用するためにそのデータをキャッシュすることで、iPhone上のアプリケーションデータを動的に制御する方法についても説明します。

于 2010-01-23T20:58:23.787 に答える
1

それはかなり一般的な質問です:)

簡単な答え:はい。データモデルの再考が必要になりますが、GAEDatastoreAPIを使用してサポートできるように変更されています。

Pythonモデルを作成するとき(これらをテーブルと考えてください)、他のモデルへの参照を確実に定義できます(したがって、外部キーがあります)。このモデルを選択すると、参照モデルが返されます(結合のように)。

ほとんどの場合は機能しますが、mySQLサーバーの代わりにはなりません。

于 2010-01-23T20:59:41.227 に答える