SQLとGQLの違い
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/28 09:55 UTC 版)
「Google App Engine」の記事における「SQLとGQLの違い」の解説
GAEのデータストアはSQLのようなシンタックスを持ち、GQLと呼ばれる。GQLにおけるSelect句は単一のテーブルにのみ実行可能である。GQLは敢えてJoin句をサポートしていない。これはクエリが複数のマシンに及ぶ時に非効率であることが知られているからである。その代わりにReferenceProperty()を使用することにより、1-NおよびN-Nのリレーションが作成可能である。このshared-nothingのアプローチにより、ディスク障害時もシステムへの障害を防ぐことが可能である。 select句のwhere節は単一のカラムのみに対し、>, <=, <, <=操作を実行することが可能である。したがって、単純なwhere節のみが構築可能である。リレーショナルデータベースからデータストアへ移行する際に、開発者はデータ操作のパラダイムシフトを要求される。 GAEは各データストアセルから返される最大の行数を1000に制限している。結果のソーティング順序があるプロパティにより表せる場合において、この制約は人が読むために作成されたウェブアプリケーションには影響しない(単一ページに1000レコード表示することはまずないからである。なお、ページングや、キャッシングなどの機構は組み込み可能である)。アプリケーションが各オペレーションにおいて1000レコード以上必要な場合、独自のクライアントサイドソフトウェアを使用するか、Ajaxページを使用することにより無制限の行に対し操作が可能となる。この場合クエリの結果セットに対しオフセットを行うため、時間がかかるという制約を受けることになり、長い結果セットではリクエストタイムアウトが発生することがある。 DB2、Microsoft SQL Server、MySQL、OracleやPostgreSQLとは違い、データストアAPIはリレーショナルなSQLではない。 しかしながら、従来のリレーショナルデータベースに慣れたものからすれば対極に位置するBigTableは扱いに苦労するものであり、SQLライクに扱えるようにするフレームワークが幾つか作られている。Googleもこの点については問題点として認識しており、2011年秋にMySQL互換データストアであるGoogle Cloud SQLを発表し、GAEの内部データベースとして取り扱えるようにした。
※この「SQLとGQLの違い」の解説は、「Google App Engine」の解説の一部です。
「SQLとGQLの違い」を含む「Google App Engine」の記事については、「Google App Engine」の概要を参照ください。
- SQLとGQLの違いのページへのリンク