• ベストアンサー

phpで使うデーターベースについて

今まで、MC-AccessのデーターをHTMLで1個1個書き出していたんですが、今では25万件以上のデーターが集まってしまい、更新に時間が掛かってしまいます。 そこでPHPを使ってページを作成しようと思っているのですが、色々なデーターベースが有り、どれを使用したらいいか分からず皆さんに聞きたいと思います。 本を見てソフトの種類は有るのですが、いい部分と悪い部分が書かれていません。 どれを使えばいいでしょうか、プログラム初心者ですがよろしくお願いします?

  • PHP
  • 回答数4
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

#3です。 ・トランザクション処理とは? データベースでは、複数の人が同時にアクセスしてもデータが整合性を保たないといけません。 また、データの挿入、更新、削除時でも、閲覧だけのユーザーを無視すべきでもありません。 さらに、データの挿入、更新、削除を複数のユーザーが同時に行った時でも、データが保つ必要があります。 そのために、データが挿入、更新、削除される際に処理を隔離し、正常に更新できた際に、データベースに反映することが必要です。 データ挿入、更新、削除される際に処理が失敗した場合は、データベースに反映しないようにすることも必要です。 大雑把ですが、こんなことです。 MySQL でも、InnoDBでは、できますが、MyISM ではできませんので注意が必要です。 (MyISM では、整合性を保つためにはテーブル・ロックしかない、この場合、データの挿入、更新、削除時には閲覧ができない) データが更新されることが頻繁であるならば必須といえます。(DBなら必須ともいえますが) ・VIEWとは? 単純に言えば、データがあるテーブルに条件を加えて、 閲覧やデータの更新ができるようにする仮想のテーブルです。 具体的には、 create table b_name (id int, name text); create table c_data (id int, b_id int, value text); という二つのテーブルがあり、c_data の b_id と b_name の id で結合するテーブルがあるとしましょう。 その場合 閲覧する場合は、 SELECT c.id AS id, b.name AS name, c.value AS VALUE FROM c_data c JOIN b_name b ON c.b_id = b.id という風に行うのですが、 CREATE VIEW bc_data AS SELECT c.id AS id, b.name AS name, c.value AS value FROM c_data c JOIN b_name b ON c.b_id = b.id と bc_data という VIEW を作れば、 閲覧する場合は、 SELECT id,name,value FROM bc_data とすれば、同じ結果が取り出せます。 これは単純ですが、あまりにも複数の条件があったり、さまざまな条件がある複数のテーブルを結合したりする場合には、毎回同じコトをしなくてすみます。 また、データの挿入、更新、削除も一応できます 考えれば色々と応用範囲もあるでしょう。

takataka7
質問者

お礼

返事遅くなってすいませんでした。 大変良く分かる解説ありがとうございました。 これから色々試してみようと思います。

その他の回答 (3)

回答No.3

PHP/FI 頃からの付き合いになりますが、結構昔からMySQL、PostgreSQL、Oracle...etc が既にサポートされてましたけど、当初から使用しているのは、 PostgreSQL になります。 私が、当時から使っている理由としては、 ・トランザクション隔離 が行える。 ・VIEW が使える。 ・フリーだった。 ・日本語が使えた。 という特徴です。 当時のMySQL は、検索は確かにエラク早いんですが更新時は、テーブル・ロックするしか、排他制御をできなかったので、更新の処理が多い用途では使えませんでした。 また、安心してDB を更新するにはトランザクションの隔離は不可欠です。 また、私は、VIEW をよく使うので、MySQL を使いませんでした。 MySQL も今では InnoDB を使えば、トランザクションができるそうですので、こちらは、十分に選択の対象になるでしょう。 しかし、VIEW は今でもないようです。 PostgreSQL の欠点としては、 ・適時にvacuum を行う必要がある。(インデックスの整理) テーブルがロックされることは今ではないので、あんまり問題にならないですね。 最後に LAMP/LAPP って言葉もあるくらい、Linux で使われるDBMS は、MySQL と PostgreSQL が多いです。 参照URL は、少し古いですが、比較がでています。

参考URL:
http://www.atmarkit.co.jp/flinux/special/ctl_rdbms/rdbms01.html
takataka7
質問者

補足

返事遅くなってすいませんでした。 ホントに良く分かりやすい回答で助かります。 PHPを覚えている途中で、少しづつ簡単な処理をサイトに導入している所です。 まだDBに関しての知識が全然ありません。 すいませんが、トランザクション隔離とVIEWとはどのような事でしょうか? よろしくお願いします。

回答No.2

とりあえず、導入がしやすくて無料である、MySQLとPostgreの比較をしてみると、 ユーザ数がどちらの方が多いのか、詳しいことは知りませんが、MySQLの方がユーザが多いように思います。参考書も、MySQLの方が多いです。Amazonで検索すると、MySQLの方がPostgreの倍近い本(和書)が出ています。 また、LAMP(Linux + Apache + MySQL + PHP)という言葉もあるように、MySQLは、PHPや、Apacheとの相性が良いとされています。この組み合わせで組まれているシステムは世の中にかなりあると考えられるので、実用的なシステムも十分に組むことが可能だと考えられます。 これらの理由から、MySQLをお薦めします。 あと、SQLiteに関しては使っているという声をほとんど聞いたことがありません。

takataka7
質問者

お礼

SQLiteはダメなんですか? 買った本にはこれしか載っていなかったのですが LAMPとはそうゆう意味だったんですか、初心者で勉強になります。 回答ありがとうございました。

回答No.1

僕はMySQLしか使っていないのでMySQLの事を書きます。 DBの選択を考えた時、有料のものは考えにありませんでした。また、できるだけメジャーなものを使わないと、情報面で不利になると考え、postgreかMySQLを比較検討しました。その結果MySQLを選択しました。 機能的にはpostgreの方が充実していると思います。が、速度、特にデータ読み出しの速度はMySQLの方が上のように思います。また、構造がシンプルで導入がしやすかったというのもあります。今となってはMySQLの使い方のノウハウが結構蓄積されたので、容易に別なDBに移れないです(^^;。 以上参考までに。

takataka7
質問者

お礼

早速の返事ありがとうございました。 私も出来たら無料の物で作ろうと思っています。それも制作サイトが無料を合言葉で作っていますから。 MySQLを一度導入しようと思ったのですが、知識不足で・・・ これから本などを買って見てみたいと思います。 とても参考になりました。ありがとうございました。

関連するQ&A

  • PHPで外部サーバーのデータベースにアクセスは可能でしょうか?

    PHPで外部サーバーのデータベースにアクセスは可能でしょうか? データ量が多すぎて複数のデータベースに分けております。 またサーバーも変える必要があるためサーバーも複数に分けております。 サーバー1にデータベース1 サーバー2にデータベース2 サーバー3にデータベース3 がある状態で、サーバー4からPHPプログラムでデータベースにアクセスして、サーバー4に設置してあるホームページにデータを表示するプログラムを作りたい。 このような事が出来るのでしょうか? PHPプログラムが置いてある同一サーバー上のデータベースへのアクセスは出来たのですが、外部サーバーへのアクセスの仕方が解りません。。。 サーバーはXrea、さくらインターネットを使用しています。 PHPとMySQLを使用。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • データベースのSEO対策?

    多くの物件データを扱う企業ページを作成しています。 今のところ、SEO対策にと言われ、全てのページを手作業でHTMLで作っているのですが、データが増えてきて(数千件)なんとか更新の手間を減らせないか検討しています。 データベースとCGIを使ったページだと、検索に引っかからないと聞いているのですが、このようにたくさんのデータを扱うページを作るのによい方法はありませんでしょうか。 PHPだと検索にひっかかるとかXMLを使うといいとか、断片的な情報を聞くのですが、私自身あまり詳しくないのでよくわかりません。 どんなことでもいいので、教えていただけますか?

    • 締切済み
    • CGI
  • PHPとポストグレーSQLでデータベース検索システムを作っているのですが

    当方タイトル道理ポストグレーSQLを用いてHTMLとPHPで 検索フォームを作ってデーターベースを作っているのですが現在の方法では検索結果がひとつのページに全部出てしまい非常に処理が重くなってしまいますので10件づつ表示したいのですが当方まったくの初心者でうまく出来ずにいます。どこをどのようにすればうまくいきますでしょうか?一応LIMITとOFFSETというのを使えば出来ると調べることができましたができずじまいです。一応検索部分のプログラムを貼り付けておきます。ここは文字制限があるので 分割して貼り付けます

    • ベストアンサー
    • PHP
  • PHPでBBSを作りたいのですが・・・。

    初心者の初心者です・・・。 使っているサーバーがPHPが出来るので、意外と簡単と噂のPHPを勉強しています。 今使っている本はMYSQLなどのデータベースと関連付けているもので、サーバーではMYSQLは使えないそうなのです。 データベースがなくても、なにやら空のファイルを作ってそこにログを蓄積、HTMLとして出力すればBBSは出来るらしいのですが、じっさいPHPのプログラムの中ではどういった文を書けばよいのでしょうか・・・。 配布されているスクリプトのソースを何回かみて、なんとなく・・・これかなー??みたいのはわかるのですが、完成されたプログラムは長いし複雑すぎてちょっと辛いです。お願いします、助けてください(;;) たとえば、フォームに入力した1文字を送信ボタンのようなものを押すことで、ページに出力。 ログを残しながら次々に出力できるようにするプログラムの例とかを教えていただけるとうれしいです。

    • ベストアンサー
    • PHP
  • HTMLとデータベースの連携

    プログラム初心者です、宜しくお願い致します。 現在、ネットショプを作成しているのですが HTMLのページで 表示する商品をデータベースで管理しようと頑張っていますが、分からないことだらけで困っています。 <したい事> ・TOPページにはデータベース内商品の更新日時、最新から○個取得表示 ・商品クリック時にINSERT文使用 自分なりに調べた結果、ACCESSを用いるのが最適と判断し作成していますが、HTMLからACCESSに接続方法。及びSQL文をHTMLに記述するのかACCESSにメソッド的なものを登録してHTMLからは呼び出すのか等基本的な事が分かりません。 ちなみに無料のレンタルサーバーを用いているのでHTMLファイルとACCESSファイルは同じフォルダ内に設置されます。 以上の事をインターネットで調べてみましたが欲しい回答が見つかりませんでした。宜しくお願い致します。

    • ベストアンサー
    • HTML
  • PHPでMySQLのデーターベースが書込み出来ない

    PHPとMySQLとJAVAスクリプトで作成しましたデーターベースについてお尋ねします。 PHPとMySQLで作成したデータベースの検索したり、読み込みを普通に可能ですが、書き込み及び、削除が出来ません。 PhpMyAdminでは書けます(データー入力出来ます)が、PHPプログラムからはデーターを入力したり、削除を行うことが出来ません。 そして、全くエラーも出ません。 PHP上では「書き込みました」と、いかにも正常なようなメッセージが返ってきます。 が、中身は空です。 システムが出来上がって問題なく3年以上使用していたのですが、自宅のLINUXサーバーのHDDが壊れましたので、再度システム構築をやり直しました。 MySQLとPHPも再インストールを行い再構築を行いました。 その後上記症状が出て書き込み、削除が出来なくなりました。 PHPのプログラムは全く触っておらず、変更も更新もしておりません。 念のためプログラムのチェックも何度もしておりますが、勿論これといって問題は見あたりません。 PHP.INI等の設定ファイルに問題があるのでしょうか。 それとも、MySQLに問題が有るのでしょうか。 宜しくご教授の程お願い致します。

  • データベースにアクセスするWebページ

    どちらに質問してよいかわからずこちらに質問させていただきます。 私が担当しているのは、既に公開されているWebページの変更です。 写真や文字列など、変更があるたびにHTMLファイルを開いて 手作業で更新作業をしているところに、データベースにアクセスして データベースの情報を表示するように変更することになりました。(←ここが私の担当です) ※既存のWebページは私が制作したものではありません。 「困っているのは既存のWebページへの実装方法」で、 既に試した方法は 1. データベースの情報を表示する箇所を、まるまる   別HTMLで作成し、JavaScriptでajax通信にて動的に項目を作成するページをつくって   IFRAMEにて既存のページに埋め込む方法をしてみました。   見事動作したのですがこれには問題点がありました。   それは私が実装したIFRAMEの中のHTMLは、JavaScriptが読めない人には   扱えないということでした。   また、JavaScriptだけでなく、CSSも既存ページに合わせて作り直す必要もあり、   他のページに同じようにデータベースの内容を表示して!と言われたら大変な手間がかかります。 2. 既存のHTMLファイルにオリジナルのスクリプトを埋め込む方法。   たとえば<span>#todays_news;</span>のような感じです。      この方法で記述して、http://xxx.jp/解析.php?url=HTMLファイル   にアクセスすると解析.phpがオリジナルスクリプトの埋め込まれたHTMLファイル内の   スクリプトを、データベースから取得したデータに置き換えて出力します。   これの問題点は   サイトのindexからリンクをクリックしてもらえれば解析.phpを通して   データベースの内容で置き換えたページが出力されますが、   直接、HTMLファイルへアクセスされるとオリジナルスクリプトが丸見えになってしまいます。   またSEO対策で不利になるのではと考えています。 そこで、データベースの内容を変更すると、すべてのHTMLファイルを解析.phpに通して出力してしまおう、という考えです。しかしこれだとデータベースの内容を変更するたびすべてのHTMLを書き換えることになり、なんとも効率的ではない気がするのです。 データベースの内容を表示するのに、 HTMLをロードしてからJavaScriptにて動的にコンテンツを生成するのか、 なにかしらの方法で、データベースの内容を反映させたHTMLファイル(静的)を置くのか はたまた、違う方法なのか、 とーっても悩んでおります;;;;;;;; 職場にはJavaScriptやPHP,MySQL等を理解しているものはおらず、 だれにも聞けなくてここで質問させていただきました。 どうかアドバイスお願いいたします><。

  • Webデータベースを作る際に最適なソフトは何ですか?

    こんにちわ, 今,WebデータベースをPHPでアクセスしてそれをHTMLかXMLで表示しようと考えています。 仮にユーザーが1000人以上になる場合,PostgreSQLでは落ちてしまうのでしょうか。 本で「あまりたくさんのユーザーが同時に使用しない(32ユーザー以下),データもさほど多くない(数十万レコード以下)だと十分実用になります」とあったので,気になって質問しました。 もちろんOracleが一番いいのですが,もっと手軽に構築したいので,PostgreとまたフリーのPHPを使用しようと思いましたが,弊害はあるのでしょうか。 上記の2つの件,よろしくお願いします。

  • 携帯用サイトをデータベースとPHPで作成する際に静

    携帯用サイトをデータベースとPHPで作成する際に静的ページを持たずに、アクセスがあるたびDBから情報を読み込んでページを生成する方法を教えてください。 携帯用サイト作ってみようと思いまして、色々調べているとデータベースを使用して指定したアドレスにアクセスがあるたびにデータベースから情報を読み込んでページを生成すれば、静的ページはいらないという記述を見ましたが、その仕組みをどなたか教えていただけますでしょうか?、またその様なやり方がのっている本やホームページがあればおしえてください。 ちなみにPHPとMYSQLを使用してサイト作成を行おうと思っています。 補足説明いたします、ここで記載しているアクセスのたびに生成されるページはJavaやFlashは使用しないで画像やテキストのみのページにする予定です。

    • ベストアンサー
    • PHP
  • phpとデータベース

    書籍のサンプルを実行しても表示されません pearのインストールが怪しいですが、どこを直せばいいかわかりません。 ご教授お願いいたします。 <HTML> <HEAD> <TITLE>PHPのテスト</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "sample"; // ユーザー名 $dbPass = "password"; // パスワード $dbHost = "localhost"; // ホスト名 $dbName = "sampledb"; // データベース名 $dbType = "mysql"; // データベースの種類 // MySQL="mysql", PostgreSQL="pgsql", MS SQL-Server="mssql", ODBC="odbc" などを設定 // 接続文字列の作成 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)){ die($conn->getMessage()); } print('接続に成功しました。'); // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

専門家に質問してみよう