質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

6回答

2626閲覧

データベースにmysqlをつかうメリットは何ですか

YoSa

総合スコア49

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2016/06/17 00:28

mysqlを学習してるのですが
mysqlを使う利点って何でしょうか?調べている内に
書き方によってセキュリテイーが突破されるとか
クエリの書き方によって遅くなるとか聞いたのですが
じゃあなんのメリットがあるのかと思いました。
テキストファイルじゃ都合が悪いのでしょうか?
mysqlの文法を覚えなくて済むならそうしたいし
またc言語のように木構造やソートのアルゴリズムを
phpで構築できないものでしょうか?
よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

ベストアンサー

MySQLに限らず、DBと呼ばれるものが使われるのには理由があります。

処理速度がテキストファイルを読むより圧倒的に速い

小規模なら別に気にならないかもしれませんが、データ数が多くなれば多くなるほどその差は如実に現れます。
100万件の中から該当の1件を探すのも、テキストファイルを頭から読み込んで探すのに比べると数分かかる作業がDBを使えば0.1秒未満程度で終わります。

データのつながりを表すのが得意

人物、所有している書籍、住所等をテキストファイルで管理しようとすると、すごく煩雑になります。あとから得意料理、学歴などのデータを追加しようとするとよりカオスになるでしょう。
しかし、DBはそういったデータ管理や追加等が得意です。1つのデータに複数のデータを結びつけることが簡単にできます。

集計等を出す機能が備わっている

DBにはSUM、COUNTといった集計機能があります。人物の総合計、東京在住の平均年齢、カレーを得意料理とする人物の人数をデータから一瞬で求めることができます。テキストファイルで管理していた場合、それら全てを自分で実装しなければなりません。

とまああげたらキリがないほど利点があります。

またc言語のように木構造やソートのアルゴリズムを
phpで構築できないものでしょうか?

検索したらポンポン出てきますよ。
http://qiita.com/kiimiiis/items/ae931c9b5ff67085e7d2
http://php.net/manual/ja/array.sorting.php

投稿2016/06/17 00:41

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoSa

2016/06/17 00:54

100万件のデータから1件取るのに 1分もかかるんですね。そこまでのデータ量で調べたことが無かったもので・・・ phpの木構造もあるんですね。参考になりました。これについても調べてみます。 あちがとうございました
guest

0

テキストファイルじゃ都合が悪いのでしょうか?

数百件程度のデータなら、自前で扱うコードを書いてもどうということはないのですが、数十万件、数千万件、数億件とデータが増えていくと、一致するデータを探すだけで大変なデータ量を処理しないといけなくなってしまいます。

データベースサーバでは、データ構造を工夫したり、インデックスをつけたりすることで、膨大な量のデータに対しても現実的な速度で操作できるようにしています。

またc言語のように木構造やソートのアルゴリズムをphpで構築できないものでしょうか?

もちろん、PHPでできなくはないのですが、C言語と比較すると相当に速度が遅いので、大きなデータは実用的な時間では扱えなくなってしまいます。

投稿2016/06/17 00:34

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

じゃあなんのメリットがあるのかと思いました。

テキストファイルじゃ都合が悪いのでしょうか?

最初はテキストファイルで管理すれば十分です。
ところが、使っている内に満足出来なくなってくるのが人間という欲深いいきものです。

  • 毎秒何十人もの人間が同じファイルを同時に書き込もうとした時、どうするの?
  • 超大量になったファイルの読み書き遅くなりすぎ、なんとか速度を保て
  • 数値のInt型は4バイトなんだが、文字で管理すると12億は10〜11文字になっちゃうから効率悪い
  • よく読み書きするデータだけ高速なメモリ使って早く読み書きできない?
  • PHPでこれらの処理書くと遅いから、その部分だけC言語で書こう

これを実装する開発者としてはこんなこと気軽に注文されたら「ふざけんな!」と言いたくなるくらい身勝手な要望ですね。
…で、長い時間を掛けてこれらの問題を全て解決しました。
今度はそんな肥大化したシステム、どうやって管理してどうやって使うんだという問題が出てきました。

これらの機能全部オプショナルだよね?こんな馬鹿でかいシステム使い方わからんぞ。
分厚いドキュメントも必要だし、こんなシステム本当に他人が使えるのか?開発者の自分ですら1ヶ月したら忘れる自信あるぞ。

そこで、簡単な英文を流し込むと自動的に必要な機能を必要なだけ使ってファイルの読み書きしてくれる言語を作りました。
その名もSQL言語です!
つまり、テキストファイルでいいんじゃね?の終着点の一つがMySQLだったというお話です。


MySQLは世界一速い高級言語と呼ばれるCやC++で書かれているので超高速です。
MySQLはSQLという簡単な英文を使って、読み書きに必要な機能を必要なだけ使えます。
MySQLは100人が同時に読み書きしても、妥当な結果が得られます。
MySQLはファイル管理を頑張っているので、ファイルが何百MBに肥大化しても速度の低下を抑えられます。
MySQLはメモリ空間をうまく使っているので、よく使うデータはハードディスクにアクセスせずに瞬時に結果が返ります。

投稿2016/06/17 03:00

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoSa

2016/06/17 05:10

mysqlってc++で書かれてたんですね 確かに上の用件を書くとなるとかなり時間がかかりますね。 c言語畑で育ったのでphpの遅さに驚いてsqlが原因ではと思っていました ここはおとなしくsqlの文法覚えるようにします・・・
guest

0

テキストファイルで不都合なければテキストファイルでよろしいかと。
ユーザーの入力を受け取り、構文木を組み立て、それをシリアライズしてテキストファイルに書き、必要な時には読み取る、これで十分です。

しかし、構文木を使わなければならないということは、ある程度大きなデータですよね?
例えばそれを保存している最中に他のユーザーから読み取り要請や書き込み要請があったらどうしますか?
排他的ロックをかけて短時間に多数の問い合わせ(不正なものも含めて)に耐えるプログラムを書かなければなりません。
ユーザーはデータを取得してから加工し、出力するのに時間をかけます。
ユーザーは一人ではないのに、その間ずっとロックしておくわけにもいかないでしょう?

そして、それらにバグがあったら、データはすべて消え失せます。
データベースはそのようなユーザーが配慮しなければならない多くの機能を代わりに実装して楽をさせてくれます。

投稿2016/06/17 00:50

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

恐らく質問者様はデータベースというものを理解していないと思われます。
テキストファイルとは全くの別物です。
少量のデータではあれば、テキストファイルで扱って、自力で処理しても恐らく何の問題もないでしょう。
しかし何百万件というデータをいくつも連結させて検索したり、更新したりしようとするのには無理があります。
試しに自作してみるとわかると思いますが、100万行あるテキストファイルから1行のデータを取得するのにどれだけ時間がかかるか。
データベースはそういった処理を高速に行えるように高度な技術で作成されています。

そしてなぜMySQLを使うのかという理由ですが、
・前述通りデータの扱いが容易
・無料
・PHPとの親和性が高い

こんな感じではないでしょうか。

投稿2016/06/17 00:39

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問の趣旨がRDBとは何か・・・になっているので
参考書を読んでもらうのが一番ですがphpなどプログラムと絡める場合の
大きな役割は3点

(1)データを抽出する
(2)データを集計する
(3)複数のデータを連携する

これらのことを高速で堅牢に一定の書式で実行するがRDBです
プログラム自体がこれらの機能を持つことは可能ですが
実装することは無駄がおおくパフォーマンスも期待できません
ましてやテキストファイルでは効率が悪すぎる

投稿2016/06/17 00:37

yambejp

総合スコア114806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問