Google App Engineを搭載したiPhoneアプリ
-
22-09-2019 - |
質問
私は、(内部的に) SQLite をデータベースとして使用する iPhone アプリのプロトタイプを作成しました。最終的には、バックエンド データベースとして MySQL を使用する PHP 経由でサーバーと通信することが目的でした。
ただし、私は Google App Engine を発見したばかりですが、それについてはほとんど知りません。Python インターフェイスを使用してデータ ストアに書き込むのは良いことだと思いますが、GQL の機能についてはほとんど知りません。私は基本的に、MySQL を使用してすべての動作するデータベース コードを作成し、SQLite を使用して iPhone 上で内部テストを行いました。GQL は SQL と同じ機能を提供しますか?このサイトでは結合クエリをサポートしていないと読みました。また、それは本当に関係性があるのでしょうか?
基本的に私の質問は、通常 SQL バックエンドを使用するアプリが Google の App Engine や GQL と同様に動作できるかということだと思います。
それが明らかだといいのですが...どのような指導も素晴らしいです。
解決
確かに、Google App Engineが非常にクールな製品ですが、データストアは、通常のMySQLデータベースとは異なる獣です。それは何が必要GAEデータストアで行うことができないと言うことはありません。しかし、それはあなたの最後にいくつかの手直しがかかる場合があります。
あなたが正しいスタートをオフに気づくことが最も顕著に異なるがGAEは、そのデータ記憶方式のためのオブジェクト・リレーショナル・マッピングを使用していることです。本質的にオブジェクトグラフは、他のオブジェクトに存在する属性と関係を維持し、データベースに保持されています。多くの場合、ORM(オブジェクトリレーショナルマッピング)は、リレーショナルデータベースの上にかなりよくマップ(これはHibernateがどのように動作するかです)。マッピングはかかわらず、完全ではなく、あなたがあなたのデータを永続化するために変更を加える必要があることがわかります。また、GAEは、いくつかのユニークなcontraintsその複雑なものビットを持っています。一つcontraintは、その気に私に多くの属性パスのクエリにできないことがある。たとえば、 "選択...どこdog.owner.nameは= 'ボブ'"。それは力あなたが読んで、あなたがジャンプする前に、GAEデータストアがどのように機能するかを理解するために、これらのルールです。
私はGAEがあなたの状況にうまくいくことができると思います。それはちょうど仕様では一般的にはORMの持続性、そしてGAEデータストアを理解するためにいくつかの時間がかかることがあります。
他のヒント
GQLは、すべてのほとんどの機能を提供しています。それが唯一のSELECTクエリのために使われて、それが唯一のSELECTは、SQLプログラマのための簡単に照会する書き込みを行うために存在しています。 db.Queryは、オブジェクトへの舞台裏では、それはあなたのクエリを変換します。
App Engineのデータストアは、すべてのリレーショナルデータベースではありません。ルックスリレーショナルというあなたは、いくつかのものを行うことができますが、SQLの背景から来る人のための私のアドバイスは、データストアは、RDBMSのようにすべてのものである思考の罠を避けるために、すべてのコストでGQLを避けるために、データベースについてあなたが知っているすべてを忘れています設計。あなたのしている正規どちらかといえば具体的に、あなたはすぐにあなたがいないよかったよ。
私はこう思います 記事 あなたを助けるはずです。
まとめ: クラウド コンピューティングとハンドヘルド デバイス用のソフトウェア開発は、ハイブリッド ソリューションを作成するために組み合わせられる 2 つの非常に注目のテクノロジーです。この記事では、Google のクラウド コンピューティング製品である Google App Engine を Apple のモバイル プラットフォームである iPhone に接続する方法を学びます。また、オープンソース ライブラリである TouchEngine を使用して、App Engine クラウドに接続し、そのデータをオフラインで使用できるようにキャッシュすることで、iPhone 上のアプリケーション データを動的に制御する方法も説明します。
短い答え:はい。あなたのデータモデルの一部見直しを伴うために起こっている、しかし、はい、変更はGAEデータストアのAPIとそれをサポートすることができます。
あなたはPythonのモデルを作成する場合(私たちは外部キーを持っているので、今)、あなたは確かに他のモデルへの参照を定義することができます(表などこれらを考えます)。あなたがこのモデルを選択すると、参照モデル(参加かなりのように)戻って取得します。
これは最も可能性の高い仕事よ、それはMySQLサーバの代替の低下はありません。