データ移行やデータ操作を行うバッチプログラムをPHPで書こうと思ったのですが、
DBのストアドプロシージャで書く方が一般的なのでしょうか。
PHPでも同等のことが書けると思っているのですが、ストアドプロシージャを使って書くメリットはどんなことが挙げられるでしょうか
大掛かりなバックアップなどは、
そのデータベース用に用意されている専用ツールをバッチ起動しますね。
「処理速度が 速くなる」という回答がありますが、
phpからデータベースに対してSQLを投げてしまえば、
どのみちデータベース側の処理となりますので、
最近のサーバーであれば差はほとんど出てこなかったりします。
早さを問題視するならば専用ツールを検討すべきですから、
ストアドを選ぶ理由としては弱いものです。
逆に、phpなどを使う利点としては、
状況にあわせてSQLそのものを書き換えるなども容易であり、
さらにはトラブル時にメール送信するといったような仕組みまでも、
自由に構築しやすいってところにあります。
ストアドでもトラブルに対してはログを見るようにすればいいのですが、
直感的ではありませんし、データベース操作に長けている人でも、
データベースの運用管理に長けているとは限りませんので判り辛いでしょう。
(レンタルサーバーなんかだとログを見れない場合も多かったりしますよね)
ちょっと長くなりましたが、
一般的というならば「バックアップ用のツールを使う」が返答になるでしょう。
次に、phpなどからSQLを投げる方法。
最後に、ストアド登録しておいてバッチ起動あるいはphpなどから呼び出す方法。
処理速度が 速くなるということです。
いちいち PHP側と データのやりとりをしなくてすみますので
当然ながら その分 速くなります。
また PHP側のプログラムを作らなくてすむというメリットがあります。
PHP側で作るにしても まず DB上で 動くものを作ってから PHP側のインターフェースみたいな箇所の作成となりますからね。
大掛かりなバックアップなどは、
そのデータベース用に用意されている専用ツールをバッチ起動しますね。
「処理速度が 速くなる」という回答がありますが、
phpからデータベースに対してSQLを投げてしまえば、
どのみちデータベース側の処理となりますので、
最近のサーバーであれば差はほとんど出てこなかったりします。
早さを問題視するならば専用ツールを検討すべきですから、
ストアドを選ぶ理由としては弱いものです。
逆に、phpなどを使う利点としては、
状況にあわせてSQLそのものを書き換えるなども容易であり、
さらにはトラブル時にメール送信するといったような仕組みまでも、
自由に構築しやすいってところにあります。
ストアドでもトラブルに対してはログを見るようにすればいいのですが、
直感的ではありませんし、データベース操作に長けている人でも、
データベースの運用管理に長けているとは限りませんので判り辛いでしょう。
(レンタルサーバーなんかだとログを見れない場合も多かったりしますよね)
ちょっと長くなりましたが、
一般的というならば「バックアップ用のツールを使う」が返答になるでしょう。
次に、phpなどからSQLを投げる方法。
最後に、ストアド登録しておいてバッチ起動あるいはphpなどから呼び出す方法。
処理速度は優先度的にそれほど高くないので、PHPの方が使い勝手が良さそうだと思いました。
処理速度は優先度的にそれほど高くないので、PHPの方が使い勝手が良さそうだと思いました。
2012/06/19 13:22:10