mysqlを学習してるのですが
mysqlを使う利点って何でしょうか?調べている内に
書き方によってセキュリテイーが突破されるとか
クエリの書き方によって遅くなるとか聞いたのですが
じゃあなんのメリットがあるのかと思いました。
テキストファイルじゃ都合が悪いのでしょうか?
mysqlの文法を覚えなくて済むならそうしたいし
またc言語のように木構造やソートのアルゴリズムを
phpで構築できないものでしょうか?
よろしくお願いします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア9206
0
テキストファイルじゃ都合が悪いのでしょうか?
数百件程度のデータなら、自前で扱うコードを書いてもどうということはないのですが、数十万件、数千万件、数億件とデータが増えていくと、一致するデータを探すだけで大変なデータ量を処理しないといけなくなってしまいます。
データベースサーバでは、データ構造を工夫したり、インデックスをつけたりすることで、膨大な量のデータに対しても現実的な速度で操作できるようにしています。
またc言語のように木構造やソートのアルゴリズムをphpで構築できないものでしょうか?
もちろん、PHPでできなくはないのですが、C言語と比較すると相当に速度が遅いので、大きなデータは実用的な時間では扱えなくなってしまいます。
投稿2016/06/17 00:34
総合スコア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
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
テキストファイルで不都合なければテキストファイルでよろしいかと。
ユーザーの入力を受け取り、構文木を組み立て、それをシリアライズしてテキストファイルに書き、必要な時には読み取る、これで十分です。
しかし、構文木を使わなければならないということは、ある程度大きなデータですよね?
例えばそれを保存している最中に他のユーザーから読み取り要請や書き込み要請があったらどうしますか?
排他的ロックをかけて短時間に多数の問い合わせ(不正なものも含めて)に耐えるプログラムを書かなければなりません。
ユーザーはデータを取得してから加工し、出力するのに時間をかけます。
ユーザーは一人ではないのに、その間ずっとロックしておくわけにもいかないでしょう?
そして、それらにバグがあったら、データはすべて消え失せます。
データベースはそのようなユーザーが配慮しなければならない多くの機能を代わりに実装して楽をさせてくれます。
投稿2016/06/17 00:50
総合スコア28660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
恐らく質問者様はデータベースというものを理解していないと思われます。
テキストファイルとは全くの別物です。
少量のデータではあれば、テキストファイルで扱って、自力で処理しても恐らく何の問題もないでしょう。
しかし何百万件というデータをいくつも連結させて検索したり、更新したりしようとするのには無理があります。
試しに自作してみるとわかると思いますが、100万行あるテキストファイルから1行のデータを取得するのにどれだけ時間がかかるか。
データベースはそういった処理を高速に行えるように高度な技術で作成されています。
そしてなぜMySQLを使うのかという理由ですが、
・前述通りデータの扱いが容易
・無料
・PHPとの親和性が高い
こんな感じではないでしょうか。
投稿2016/06/17 00:39
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/17 00:54