MySQLというデータベースについてはIT系の職種についている方は一度は耳にしたことがあると思います。
またエンジニア職であれば実際に使われた方も多いでしょう。
ただ使ったことがあると言ってもデータベース環境から構築したことがある人は少ないのではないでしょうか?MySQLは利用したことがあるけど詳しくは知らないという方も多いものです。
ですので今回は非エンジニアの方にはMySQLの紹介として、エンジニア職の方にはおさらいと言う意味でMySQLに関する説明をさせていただきたいと思います。
ドンピシャ案件の探し方
「案件はたくさんあるはずなのに、なかなか自分の望む案件が見つからない…」
エンジニア市場は売り手市場であるものの、いまだに正しいマッチングノウハウが確立されておらず、多くの方が案件探しに苦労されています。
ですが、現在の市場感や企業側に刺さる経験・スキルを理解し正しく案件探しをすれば、誰でも自身のバリューを活かし単価を伸ばすことができる、というのも事実です。
ITプロパートナーズでは、
・9割がエンド直案件のため、高単価
・約6割が週3-4案件のため、柔軟に働ける
・事業会社の自社開発案件が多い
などの魅力的な案件を数多く保有し、マッチング能力の高い即戦力エージェントが完全サポートします。
初めてのフリーランス、情報収集段階でも大丈夫です。あなたの働き方にマッチし、単価も高く、最もバリューを発揮できる案件を探しませんか?
目次
MySQLとは?
MySQLはオープンソースで提供されているデータベース(RDBMS)の一つです。
そもそもはMichael “Monty” Widenius氏という個人が作成したもので最初に公開されたのは1995年でした。
ただそれはクローズオープンという形で一部の人たちを対象にしたおり、翌年にバージョン3.11.1として公開されました。
この当時はMonty氏が所属するTcX社がMySQLのライセンスを保持しており、いわゆるオープンソースでの提供ではなく独特のライセンスでの提供だったようです。
(単体での配布は無償だが製品とバンドルする場合は有償)そしてライセンスがMySQLAB社に移り、2000年に個人使用、非営利使用であればオープンソースでの利用、商用の場合はライセンス販売と言うデュアルライセンスモデルが採用されました。
ちなみに現在のMySQLは2003年の製品版(MySQL4)をベースに発展してきたものとされています。
※TcX社、MySQLABともにMonty氏が共同創業者なのでこの時点では個人所有のライセンスのようなものと考えてよいでしょう。
このオープンソース化をきっかけにWeb系での利用を中心として広く使われるようになりました。
そして現在では世界中でオープンソース系のDBとしてはディファクトスタンダードに近い位置を確立しています※。
先ほど述べましたようにMySQLは非商用利用なら無償で入手し使うことができるため、WordPressなどのような個人向けのCMSなどのシステムを中心に広く利用されてきました。
※日本国内ではフリーのデータベースはPostgresの方が主流なのですが世界的にはMySQLがシェアの8割を握っています。
もちろん商用としても様々な企業で使われています。
それこそ世界的な大手企業から街の中小企業まで様々です。
Web系のサイトではLINUX(OS)+APACHE(WEBサーバ)+PHP(プログラム言語)+MYSQL(データベース)という組み合わせをLAMPと呼び、この組み合わせでサイト構築するケースが大変多いため、MySQLの利用もWeb系のサイトを利用する企業では広く使われていると言ってよいでしょう。
しかしMySQLはあくまで個人利用、非商用利用の場合はフリーと言うことで、商用利用ではライセンスの購入が必要となりますので注意が必要です。
この点を誤解している人が非常に多く「MySQLはタダで使える」と思って商用に無断利用しているケースが蔓延しています。
まあ実際には無断で利用しても調査されることはめったにないのですが、万一世間に公表された場合、企業として不名誉な事態になることは知っておいた方がよいでしょう。
MySQLできる事とは?
MySQLはリレーショナルデータベース(RDBMS)ですから、その範囲の機能はすべて備えています。
たとえばRDBMSの基本的な機能としては以下のようなものとなります。
・SQLを持ちいてデータの検索、追加、更新、削除ができる。
データ自体はDDLで定義されたテーブル内に格納される。
・データベースはハードウェアに依存しない
・アプリケーションとデータベースは独立しており、アプリケーションに依存しない
・データの整合性を確保する(型定義、ユニークキー、プライマリキー、フォーリンキーなどの定義)
・トランザクション処理(複数ユーザで同一データを更新しても矛盾を起こさない)
・アクセス権の制限(ユーザによって参照権、変更権を設定できる)
・バックアップ、復旧のシステムの提供
・データベースの分散化
これらはORACLEでもマイクロソフトのSQLサーバーでも提供されている機能ですが、MySQLの場合は非商用のオープンライセンスでもこれらの機能が利用可能となり、Web系を中心に爆発的に普及が進んだのではないかと思います。
なぜならORACLEやSQLサーバは安くても数十万円、高いライセンスでは数百万円というものもあり、とても個人が利用できるデータベースではなかったためです。
MySQLの特徴とは?
さて、ここではMySQL独特の機能や特徴についておさらいしてみましょう。
ストレートエンジンが選択できる
ストレージエンジンとはデータの読み込みや書き込みに使われるアルゴリズムのことです。
トランザクション処理が可能なInnoDBとトランザクション処理は出来ないが処理が速いMyISAMなどが使われます。
以前は参照がメインのWebサイトではMyISAM、情報の書き換えが行われるサイトではInnoDBと言う風に使い分けがされていましたが現在ではInnoDBでもそこそこ処理が早くなってきていますので、サイトのディフォルトはInnDBとし、参照が非常に多く更新が無いテーブルのみにMyISAMを適用するという使い方が多くなってきました。
レプリケーション機能
レプリケーションとは、データーベース(マスター)への更新を別のデータベースサーバー (スレーブ) に複製することです。
通常のWebサイトでは参照処理がほとんどでありデータ更新されるポイントは意外に少ないものです。
なのでデータベースは1つのマスタとしてスレーブを複数立て、参照系のアクセスはスレーブに寄せることで負荷を分散させることができます。
またスレーブはそのままバックアップのデータベースにもなります。
もちろん他の商用データベースでも分散化の機能は存在します。
しかし非商用の場合は無料で、しかもわりあい簡単にデータベース分散が機能が利用できるという点はMySQLの大きな特徴と言ってよいでしょう。
また、レプリケーションの方法に関しても、マスターとスレーブ間のデータ同期を保証する、しないを選べる点も特徴だと言えます。
(スレーブ側の受け取り確認をマスター側にフィードバックするかどうかということです)
Oracle社からのバックアップ?
もともとMySQLは個人の開発から始まりましたがMySQLAB社はSunに買収され、その後Sunを買収したORACLEが現在MySQLのライセンスを所有しています。
但し今でも非商用利用では無償と言う形態は変わっていません。
ORACLEの買収は当初、Oracleデータベースとライバル関係にあったMySQLをつぶすための策略とみる向きも多かったのですが、買収から7年経ってもMySQLを破壊する意図はなさそうで、Oracle社もMySQLとOracleデータベースは利用者層が異なると宣言していることもあり、おそらく今後もMySQLコミュニティへのバックアップは続くと思われます。
オープンソースにとって企業からの資金援助は貴重なのですが、あくまで営利企業のやることですので利益が背反すればMySQLに対してネガティブな圧力がかかる可能性もあります。
なのでバックアップはあるのですが、最後に「?」をつけさせていただきました。
結局MySQLは使ったほうがいいの?
Accessから始まりPostgres、Oracle、MySQLと使ってきた筆者の個人的な意見となりますがMySQLは非常に使い勝手がよいデータベースだと思います。
今もメインで使っているデータベースはMySQLです。
特にWeb関連のソフトウェアではMySQLを前提にして構成されているものが多数あり、触らないという選択肢はないでしょう。
但し、MySQL万能論でもありません。
レプリケーション機能も結構便利なのですがやはり商用データベースのほうが保守性の観点から優位にあると言えるでしょう。
ストレージエンジンの特徴は使い分け自体の必要性がなくなってきており、筆者も最近は何も考えずにInnoDBで作成することが多くなってきています。
そして最大の懸念はMySQLがOraleのライセンスに支配されている点です。
明日から個人利用に関しても課金するとは言わないでしょうが、次のメジャーバージョンからは個人ユースでも数千円の課金をすると言い出す可能性がゼロではありません。
この点、OracleがMySQLに対してどのくらいの距離感で接するか明確に宣言する必要があるような気がしています。
実は筆者はPostgesを使っていたときにはVacuumという操作が結構めんどくさくMySQLに移転した組なのですが、最新のバージョンでは内部処理化されているようなのでもう一回使ってみようかという気持ちがあります。
その部分以外はPostgresでもさほど不便を感じませんでしたし、そもそもライセンスの縛りが無いのが大きいです。
なので個人的には
- 大規模案件の場合はOracle一択
- お金が無いお客さんの場合はPostgresで構築
- お金があるお客さんの場合OR必要性があればMySQLライセンスを購入
- 個人的にはなんでも
という感じで使い分けをするつもりです。
まとめ:MySQLとは「非常に使い勝手の良いデーターベース」
いかがでしたでしょうか。
今回はMySQLの歴史からその特徴まで説明をさせていただきました。
私自身もMySQLを使用する中で疑問に思っていたこと(デュアルライセンスなど)を本記事を書く際に調べることで、改めて勉強することができました。
特にオープンソースというものは基本はボランティアによって運営されるべきものなのか、企業によって援助されるべきものなのかについては考えさせられました。
(例えばオープンソースで貢献しているエンジニアも、よい就職先やコンサル契約などそれなりの見返りを考えて動いているので企業からのサポートが一概に悪とは言えない)
ただMySQLにせよPostgresにせよOracleにせよ、RDBMSという枠の中のソフトの差でしかないので、どれかに固執したり、特定のソフトの知識に特化してしまうのことにはあまり関心できません。
確かにそれらも重要ですがマニュアルを読めばわかることでもあります。
それよりも重要なのは、SQLやRDBMSの基礎知識、DB設計経験、保守・運用システムの構築経験などのようなより現場に沿った知識だと思います。
そうゆう意味ではあまり何かにこだわらずに機会があればどのようなデータベースでも触ってみる好奇心が大切ではないでしょうか。
- 高額案件を定期的に紹介してもらいたい
- 週2日、リモートワークなど自由な働き方をしてみたい
- 面倒な契約周りはまかせて仕事に集中したい
そのような方はぜひ、ITプロパートナーズをご利用ください!
まずは会員登録をして案件をチェック!