絶品ゆどうふのタレ

ふと気づいたことを綴るだけのメモ

SQL Azure Databaseが公開!PHP拡張もついでに公開!

SQL Azureと対応するPHPドライバがCTPで今日から利用可能に:Azureの鼓動:ITmedia オルタナティブ・ブログ
http://blogs.msdn.com/ssds/archive/2009/08/18/9874133.aspx

ktkr!!!!

SQL AzureクラウドサービスにもかかわらずRDBMSとして動作する貴重なデータストレージなので、ぺちぺ的にはがっつり期待してよいところ。


Azure StorageについてはPHP SDK for Windows Azureの使い方をコネコネしてみたりしていて使ってみてたんだけど。。。*1
SDK自体結構よくできていて使い勝手は悪くないものの、単にストレージとしてだけ見ると、S3などと比べた時には特段のメリットが見えるわけではなく、あくまでもWindows Azureとセットで意味があるものだよなぁ、というのが印象。


でも、SQL Azureはそれ単体でかなり魅力があると思う。
プライベート・クラウドに向かったIBMと自前でインフラは持ちません!と言ってたOracleがいる中で、3大商用ストレージのうちの一つがそのままクラウド上に乗っかってるのは大きいだろうし、クラウドですべて完結させるつもりなら単にRDBMSという特徴だけで言っても結構大きい。
SQL Azure自体の説明は砂金さんのブログがくわしいのでそちらでぜひ。


あとは、このPHPモジュールがどこまで使えるものかだなー。
あんまりPowershellよろしくやたらとMS*2カスタムされてしまうと、過去のアプリとのインターフェースが互換しなくて、変更の手間が増えてしまうからなぁ。。。と思ってインストールしてみることに。


ただね。。。

SQL Server Driver for PHP CTP will include:

* Support for SQL Azure, PHP version 5.3, and UTF-8
* Support for Scrollable results and row count
* Migration to the SQL Server 2008 Native Client framework with enhanced performance

Try SQL Azure Database CTP Today - SQL Azure Team Blog - Site Home - MSDN Blogs

PHP 5.3以上ですかwwwwww
そのアグレッシブさwwwww逆にどうなのwwwww


。。。と思ってたら、インストールしてみたらちゃんとPHP5.2以上でした。*3
まぁ、冷静に読んでみれば「SQL Azure Driver」ではなく「SQL Server Driver」だもんね。Azure専用じゃなくて、もうちょっと前から元々ある奴っぽ。


で、一応インストールしてみて、付属になってたAPIリファレンス*4はこんな感じでした。説明もそのままコピペ

sqlsrv_begin_transaction
- Begins a transaction.
sqlsrv_cancel
- Cancels a statement; discards any pending results for the statement.
sqlsrv_client_info
- Provides information about the client.
sqlsrv_close
- Closes a connection. Frees all resources associated with the connection.
sqlsrv_commit
- Commits a transaction.
sqlsrv_configure
- Changes error handling and logging configurations.
sqlsrv_connect
- Creates and opens a connection.
sqlsrv_errors
- Returns error and/or warning information about the last operation.
sqlsrv_execute
- Executes a prepared statement.
sqlsrv_fetch
- Makes the next row of data available for reading.
sqlsrv_fetch_array
- Retrieves the next row of data as a numerically indexed array, an associative array, or both.
sqlsrv_fetch_object
- Retrieves the next row of data as an object.
sqlsrv_field_metadata
- Returns field metadata.
sqlsrv_free_stmt
- Closes a statement. Frees all resources associated with the statement.
sqlsrv_get_config
- Returns the value of the specified configuration setting.
sqlsrv_get_field
- Retrieves a field in the current row by index. The PHP return type can be specified.
sqlsrv_has_rows
- Detects if a result set has one or more rows.
sqlsrv_next_result
- Makes the next result available for processing.
sqlsrv_num_rows
- Reports the number of rows in a result set.
sqlsrv_num_fields
- Retrieves the number of fields in an active result set.
sqlsrv_prepare
- Prepares a Transact-SQL query without executing it. Implicitly binds parameters.
sqlsrv_query
- Prepares and executes a Transact-SQL query.
sqlsrv_rollback
- Rolls back a transaction.
sqlsrv_rows_affected
- Returns the number of modified rows.
sqlsrv_send_stream_data
- Sends up to eight kilobytes (8 KB) of data to the server with each call to the function.
sqlsrv_server_info
- Provides information about the server.

関数の数はDB系ネイティブモジュールにしては、けして多い方ではないけど、必要な物は押えてある感じ。
それに、PHPのネイティブドライバ系でよく見る関数ライクになってるので、「sqlsrv_」プレフィックスにすげ変えれば動くアプリも結構多くありそうな気がする。


現段階でのこいつの難点は、おそらくほぼ確実にWindows上で「しか」動かなそうな所。。。
CodePlexのコードを眺めてみたところ、.cppが混ざってて明らかに(;゚д゚)ァ....って感じだし、ほぼすべてのソースで環境と無関係にwindows.hをincludeしてるので、まぁ他では動きませんね。
MSから言わしたら当然なのかしら。
でも、ストレージ単品としてSQL Azureの価値を見たい自分としては、やっぱLinuxでも動いて欲しい。
こうなると、mssqlモジュールがSQL Azureにつながるか?ってところも見てみる必要あるなぁ。


さ、そんなわけでとりあえずInvitation待ち。。。
Azureもそうだったし、1週間もすりゃくるかなー(=゜ρ゜=)ボヘーー


追記:
なぜか砂金さんのブログにトラックバックが上手くいきません。。。(´;ω;`)ウッ…

*1:そのうち会社のブログに書く。

*2:だから砂金さんのブログはガンダムネタ多いのかと、今更気づく

*3:さすがMSというか、VCつかったコンパイルの種類も豊富にそろってました。

*4:chmでついてた。ページあるの?つか、一緒にchm中に付属してるExampleがかなりファンキーだったwww