MySQL/MarinaDBのOSSって無料で使えるのがいいところと思っていましたが、大変お恥ずかしい。
本質的には、データベースの心臓部”ストレージエンジン”を選択できるところ、更にはそれをテーブルごとに選択できるのが特徴なのです。
What's ストレージエンジン
- データベースエンジンがクライアントからSQL文を受け取ると、まずそのSQL文の解釈を行います。これをSQL文のパースと呼びます。
- 次にどのようにデータを処理するかを決めます。プランナやオプティマイザと呼ぶ機能がこの仕事を行います。
- データの処理方法が決まると、はじめて実データへのアクセス処理が開始されます。ストレージエンジンは、実データがどのような形式で、ディスク上にどのように格納されているかといった情報を判別した上で処理を実行する。
What's kind of Engine
ざっくり下記種類があって、検索系(オンメモリ、ストレージ)orバックログ系など、様々な用途があり、目的に応じたストレージエンジンの選択が必要。
https://thinkit.co.jp/cert/article/0608/1/1/2.htm
ストレージエンジン | 概要 |
---|---|
MyISAM | MySQL標準のストレージエンジンとして使用される |
InnoDB | 行ロックとトランザクションをサポートする |
Memory | メモリ上にテーブルを配置する |
Merge | 複数のMyISAMテーブルを統合する |
Archive | 圧縮したデータベースを使用する |
Federated | リモートのデータベースを参照する |
NDB | クラスター構成にて使用される |
CSV | データファイルにCSVを使用する |
Blackhole | ダミーテーブルを使用する |
公式サイトにより詳細な情報がのってました。
https://mariadb.com/kb/ja/choosing-the-right-storage-engine/
My comment
仕事ではOracle使ってるし最近AWSやら便利なのがでてきて、あんまりこういったレイヤーを意識することがなくなってきてしまいました。
昨今は、”インフラを意識せずアプリに注力していこう”といった大きな潮流がありますが、そのいった中でもしっかり土台を理解していきたいですね。
Thanks,