ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Let's PHPコミュのPHP+Oracleで構築している方はいらっしゃいますか?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。

PHP + Oracleで構築されている方がいらっしゃったら、
質問させてください。

私は今まで、LAMP環境でしか開発していなかったのですが、
今回、クライアント様の要望で

WindowsServer+apache+PHP+Oracle

で構築してほしいという話が来ました。

Windowsサーバでの開発は、頑張ればなんとかなるかなと思っているのですが、
Oracleについては全く知識がなく、MySQLしか実績のない私は、
「できる」か「できない」かの判断ができなくて困っています。

私がMySQLでやっていたことは、
phpMyAdminでテーブル作成(MyISAMでリレーションなし)
SELECT
(集計関数は使わない。 テーブルとテーブルをINNER JOINしている。SORT と ORDERを利用。)
INSERT
UPDATE
DELETE
です。

そこで、PHP+Oracleで開発をしている方、

・phpMyAdminのようなブラウザで操作できる管理ツールがあるのでしょうか?
・上記程度のSQLは、Oracleでも同じなのでしょうか?
・上記程度の知識でOracleに挑むのは無謀なのでしょうか?

アドバイスいただければ幸いです。

なお、先方がOracleを要望されている理由は、他のサーバがその環境なので、
合わせたいという理由だけです。いろいろなDBがあるとバックアップが大変とのことです。Oracle特有の機能を使って欲しいという要望は特にありませんでした。

何卒よろしくお願いいたします。

コメント(26)

SQLの大まかなところは大して違いはありません。
リレーション時の書き方がちょっと違うぐらいかな。
MySQLでなら出来るという自信があるのでしたら問題ないでしょう。
#どちらかというと開発よりは運用の方が問題が出るかも
プログラムってよりも、環境面で大変そうですね。
私はOracle8で大変でした。。8iじゃなく8です。
なつかしい。。
開発でOracleを使うなら、Oracleの保守契約まわりが重要だと思います。MySQLとの大きな違いは、まさにそこにあるので。
問題が起こったときの対処方法がずいぶんと変わります。
テーブルの参照方法やlimiとが使えない(指定方法が違う)等の部分がありますが、
基本的なSQL自体は大差ありません。

英語版&ヴァージョンも1.0ではない(開発版?)なら
http://sourceforge.net/projects/phporaadmin/
以上からDLできると思います。

一応個人的に好きなツールとしては以下の通りです。
シェアウェア「SI Object Browser」
フリーウェア「a5m2」

みなさま

早速ご回答いただきましてありがとうございました。

なるほど、導入後の運用面が大変ということですね。
障害時の復旧など、MySQLのダンプから復旧するのとは訳が違うみたいですね。
保守契約等、十分に気をつけます。(基本、先方で管理するはずですが。)

プログラムで使用するSQL文は頑張ればいけそうな気がしてきました。

あと、テーブル構築でAUTO_INCREMENTを使っていたので、
シーケンスというのを覚えないといけないよと、どこかのサイトに書いてありました。
あとはPEARでかなり吸収してくれるようなので、なんとか頑張れそうです。

>ponta様
失礼いたしました。
私は、MySQL3.23とMySQL4.1の経験があります。
Oracleのバージョンについては確認していませんでした。
(恥ずかしながらOracleのバージョンの違いがわからないもので、
スルーしてましたが、MySQLの違いのようにOracleにもありますよね。)

>Hayate様
ツールをご紹介いただき、ありがとうございました。
参考にさせていただきます。
いえ導入後もそうですが、開発中で原因不明のバグを踏む抜くときがあって、そのときの原因調査するときなども、保守契約がないと調査不能になることがあります。>保守契約
PHP-DB の接続部分については十分に試さないといけないことと、ISAM での経験のみという事で
トランザクションの扱いをしっかりと理解していることが重要ですかね。
MySQL しかやってない方が Oracle に変更した時にかなりの確率で問題を起こす部分ですので。

接続を実際に試さずに来る方やトランザクション制御してなくてデータをぶっこわしまくる方が多いっす。。
※よく考えたらPHPコミュなのにDBの話をしてしまいました。すいません。

>kawai様
開発時の保守契約が必要ということですね。恥ずかしながら開発時に保守契約を結んだことがありませんでした。
「開発中のバグ調査は、クライアント様にもご協力いただきます」
みたいなことですね。

>みゃ様
なるほど。私もその一人になりそうです・・・。

トランザクション制御ですね・・・。勉強します。
プログラマーなんて名乗れないな、こりゃ・・・。

OracleはMySQLやPostgreSQLとはだいぶ勝手が違いますよ。
機能が豊富な分、断然難しいですね。
SQLだとLIMITがないのが大きな違いですね。
それとPHP4標準のオラクル関数はバグバグで使い物になりません。
>sanayukimura様
なるほど。LIMITがないわけですね。Hayateさんも言ってました。
代わりの指定方法でカバーするかスクリプトでカバーしなければなりませんね。

機能は豊富なんですね。商用DBですものね。
その機能の10分の1も使わないんだろうな・・・。

PHP4はバグバグですか!
PHPはこちらからバージョンを指定できるので、PHP5.2.6を指定しようと思います。
私はPHP4.4.7までしか使ったことがないので、あやうく4系にするところでした。

PHP5系はオブジェクトのコピーが参照渡しになったんですよね。
気をつけなければ。

いろいろとアドバイスありがとうございました。


PHPでのドライバはOracleの人が作ってるんじゃなかったけ?
http://www.oracle.com/technology/global/jp/tech/php/index.html
>kawai様
PEARモジュールとは別にOracleがドライバを作っているということでしょうか。
いや、Oracleの作ったドライバをPEARが利用してるのかな?

そして、このサイトでトライアル版があることを知りました!!
自分のwindowsでテストができる!!すばらしい!!
ほかにもいろいろ役立ちそうな情報が載っていそうです!!

ありがとうございました!!
oracleの人が書いているのは OCI8 だったと思います。PEARライブラリにあるとしたら、それは OCI8 extension に依存して実装されているような気がします。詳しくはお使いの PEAR ライブラリの dependences を参照くださいませ。
Oracleは開発用途であれば無償だったんじゃなかったかなぁ。あと、エントリー版は用途を限らず無償になっていたような記憶があります。すみません、記憶がおぼろげなので、どなたかフォローいただけるとありがたく。
 開発用ライセンスを入手するのであれば、OTN Standardとか、OTN Proとかですね。どちらも有償です。また、トライアル版はその使用条件に試用のみに限る(開発は不可)と明記されています。
 運用ライセンス、開発ライセンスなどについては、(ごまかそうということではないのであれば)よくOracleの営業とかと話しておいた方が良いですよ。有償オプションや構成が結構ありますし、そのうえややこしいです。

いっそのこと、Oracle XE(エントリー版)を使用してしまえば本体のライセンスも含めて無償ですが・・・
Oracle XEの場合、UTF8になります。どーしてもShift_JISじゃなくちゃダメ・・・ということがないのであれば、そのまま使用すれば・・・・あれ?phpから使用する場合、utf8でも問題ないんでしょうか?そこに問題があるようであれば、OracleXEは選択肢になりません。
# さすがに、キャラクターセットを無理やり変えて業務で使おう ・・・とは、だれも思ってないのでは。
>みなさま

さらなるご回答ありがとうございます。

トライアル版は、私がコントロールできるかどうか試すために利用します。つまり、学習用途です。
開発はクライアント様に用意していただく環境で行います。(ライセンス契約とインストールは、すべて先方で行います。)

システムの機能はおおまか決まっており、いざMySQLで開発しようと思っていたらOracleでという要望が来たのです。なので、MySQLでやってたことをOracleで置き換えられるかなーということをテストしたいのです。
テーブルの設計やトランザクション制御というのがMySQLと根本的に違いそうなので、そのあたりをクリアできるかどうかが課題と思っています。

もうちょっと説明すると、先方(情報システム)はPHPは知らない。でも、Oracleは実績がある。私は、PHPでの開発実績はあるがOracleを使ったことがない。

なので、情報システムにOracleについてご協力いただければ、可能かなと考えています。
でも、背伸びして「できる」と言って、できないと問題になるので、もうちょっと勉強して「できなそう」と思ったら正直に伝えようと思います。

あと、文字コードはwindowsだからShift_JISで開発すると思います。
>kawai様
8でおっしゃられた「保守契約」について、
「保守契約がないと調査不能になることがあります。」
というのは、開発側では触れない部分があって、それを触る権限が与えられるかどうか?
ということでしょうか。
的外れでしたら申し訳ありません。
 そうすると、先方にはOracleの管理者(DBA?)がいるということですね。であれば、協力が得られれば可能かと思います。が、可能であれば、OTN Standardなどを利用して自社内にも確認/検証が可能な環境を用意することをお勧めします。
 ただし、チューニングについては気を付けてください。よく言われますが、効果があるのは、テーブルの設計>>>SQL文(アクセスパスとか)>>>索引などの作成>>>>>>データベースのパラメータ>>ハード性能 です。性能をある程度見越してテーブルの設計したり、SQL文を構築したりしていない場合、あとあとで性能を改善するのはかなり困難になります(リリース直前の連動テストで性能が問題になりいろいろ調べたり相談してみると、テーブル構造を変えないと、どーにもならないことがわかった とか、わりかしありがちです。が、通常はそこまできて設計まで巻き戻せません。)
# ハード用件(とくにメモリ)が全然足りない場合を除く。
※単純なものは大差ありませんがSQL文が複雑になるにつれ、効率よく処理されるSQL文というのは、データベースごとに大きく変わってきます。また、たいていの場合、固有実装の機能というのは性能に著しい効果があります。

 トランザクションについては・・・私の場合はOracleからいじり始めた関係から、基本的にMySQLでも有効(InnoDB?)にしているため、逆方向でどう苦労するのかは不明です。
# MyISAMに比べてかなり遅くなるのは確認しました。が、複数テーブルの整合性を考えた場合、トランザクションなしで保障する方法を思いつかなかったので(MySQLにおける、データベース設計を失敗している・・・とも言えます・・・)

 なお、Oracleの場合、.netやVBやc(Pro*C)やjavaからアクセスする情報は豊富ですが、PerlやphpやPythonやRubyなどについては、かなり少ない(掲示板とかで問い合わせても情報が得られない可能性もある)と思われます。なので、その部分については、自社内で十分に検証しておくことをお勧めします(先方もわかる人がいないということのようですし。)おそらく、Oracleのサポートに問い合わせても、Oracleのアプリケーションサーバ内のphpを利用しているのではない限り、情報が得られないのではないか と考えています。
>>21

 ユーザが、Oracle社と保守契約を結んでいるかどうか(契約してもらえるかどうか) ではないでしょうか。ユーザの方が分かっているのであれば、おそらく大丈夫かとは思いますが・・・
# Oracleを使用する場合のOracle社(もしくはその代理店)との保守契約の必要性(ない場合の手詰まり)は、調べるといろいろ見つかると思いますよ。必要性がわからないユーザに、この契約を結んでもらうよう説得すは恐ろしく大変です(毎年かかり続ける費用ですし、決して安くはないため)
>うぇいく様
PHP+Oracleの情報は少ないですね。事象がないんでしょうね・・・。
DBの整合性についてはいちおう理解しているつもりです。(一時期InnoDBでリレーション設定をして使ったことがあります。あと、Accessで遊んだときに学びました。)
テーブル設計については、第3正規化にするほうが性能が上がるのかなあ・・・。テーブルの合成が多いと性能が落ちると思って、MySQLのときは第3正規化までしませんでした。インデックスはすべて数値フィールドだからそんなに負担ないかなーと・・。

23について
なるほど!開発側とクライアントの保守契約ではなく、クライアントとOracle社との保守契約ですね!
これは考えていませんでした。保守の必要性については調べて、先方に確認します。ありがとうございました。
Oracleを使用することのリスクは環境や開発の経験がないということだけだと思います。
納期面でバッファが取れるなら挑戦してみるのが良いですね。

SQLの方言などはあまり心配しなくても大丈夫だと思います。
大抵は代わりのやり方が見つかります。
ただし、環境とトランザクションはしっかり勉強した方が良いと思います。

また、PHP5を使うなら抽象化レイヤはPearDBよりPDOの使用をオススメします。
前者の使用経験があるなら大した学習コストはかこらないですし、保守性や速度面が大幅に向上すると思います。

上手くいくと良いですね。
頑張って下さい!
>こたりんさん
ありがとうございます!

試用版インストールして、さてテーブル作ろうとEnterprise Manager開いたらさっぱりわからなかったので、Oracle超入門の本を買ってきました。
ナメてました。一から勉強します。

トランザクションはコミットとロールバックと一緒に理解できました。
(ほんとかな?)

PDOが良いのですね。今回PHP5なのでZendFrameWorkを使おうと本を買いました。
PDOを推奨と書いてあったので「おお!」と思いました。
windowsはPHPのモジュール追加楽だな・・・。

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Let's PHP 更新情報

Let's PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング