Google Fusion Tables を少し触ってみた.
- 列の型には,number, text, date/time, location がある
- location 型を使うと map 上に点を打ったりできる
- 緯度と経度を別の列に number で入れ,それらを合わせて location 値とできる
- formula 列を作れる.各行で,ほかの列の値を式中で使える.
- RDBMS と違い,not null, unique, check 制約などはかけられない
- relation もない.ある table に別の table を merge して別の名前を付けて保存できる.merge するには行を照合するための列を 1 つ指定する.複数の列による merge はできない.
the first table dictates what rows appear in the merged table. (Database buffs will recognize this as a left-outer join.)
- merge して作った table の列名は変えられる.列順は変えられない.列の追加もできない
- merge して作った table をさらに別の table と merge できるようだ.行を照合するための列の指定は変えられない
- table から一部の列だけを選んで view を作れる.filter や aggregate をした結果の view は作れない.filter と aggregate はいっしょに使える
- 作った table の所有者は自分になる.ほかの人に譲渡できる
- 所有者は,table を private にするか誰でも読めるようにするか選べる.private にすると許可した人々にしか読めない.誰でも読める,にはさらに public on the web と anyone with the link の 2 つがある.検索可能かどうかが違うとのこと (試していない)
- table を読める人々のほか,所有者は table を編集できる人々を追加できる
- 所有者と編集者との権限の違いはこれらアクセス権の設定ができるかどうかだけのようだ
- table の定義を変更できずに table 内容の編集だけができるような人々を設定したいが,できないようだ
Fusion Tables API を使ってアプリケーションから tables を操作できる.
Fusion Tables API v1.0
を使うThe Fusion Tables SQL API has been officially deprecated as of June 26, 2012 and will be shut down on December 26, 2012.
Every request your application sends to the Fusion Tables API needs to identify your application to Google.
There are two ways to identify your application: using an OAuth 2.0 token (which also authorizes the request) and/or using the application's API key.
table を読むだけではなく書くには OAuth 2.0 を使う- APIs Console でアプリケーションを登録して,client ID を取る
Each API has a per-project usage limit. If your application tries to use more than its limit, additional requests will fail. You can see API usage limits on the Quotas pane.
見てみると 25,000 requests/day だったBefore your application can access a Google API, it must obtain an access token that grants access to that API.
they vary based on the type of application you are building.
(installed application のばあい)SQL
によって table を操作できる- 「普通の」SQL とは異なる
- 表の結合はできない
- シングルクォートで列名を囲んで列を指定できる.シングルクォートで囲まれた文字列は場所によって列名のことだったりそういう文字列だったりする
- WHERE のなかである列の値と別のある列の値を比較することはできない.列の値と定数値の比較ができる
- location 値を query するためにいろいろある (試していない)
- ROWID という列 (のようなもの) がある
- NULL は予約語ではない.is null, is not null は使えない.
= ''
,NOT EQUAL TO ''
を使う - 結果は JSON で得られる
- web で空にみえる number 型の列の値として,SELECT では空だけではなく
NaN
が得られることがある.0
もあったかもしれない
こんなときにいい (こうじゃないときはだめ) と思える.
- アクセス権を細かく設定しなくていい
- 全く更新しない
- 滅多に更新しない.ある程度の時間正しくない (整合性のない) データが入っていてもいい.更新する (した) ときにチェックして直せばいい
- いつも正しいデータが入っていてほしい table は (頻繁に更新する table とか),正しいデータしか入れられないアプリケーションを用いて更新し,Fusion Tables の web ではやらない.そして,ユーザがそのように言うことを聞いてくれる
- 関連する複数の tables が両方とも頻繁に更新されるということはない