データベース選択と私が思う代表的なRelational Databaseについて
初めまして、Junior Back-end Developer、SIMOKITAZAWAです。
色々と足りないところがあるかと思いますがよろしくお願い致します。
私がZENNを始めた理由は、
- 私が勉強したことをまとめたい
- 勉強の内容を共有して一緒に成長したい
- 私が間違って理解している部分について先輩たちに教えてもらいたい
このような理由で始めることになりました。
たくさんの教えをお願いします。
Database
Databaseとは、本棚を本や書類を保管するために使用します。これと同様に、データという本または書類を保管するための本棚です。
例えば、あるServiceを利用するためには、会員登録をするとします。
ID、PASSWORD、NAME、、などを入力しますね。この入力されたものがデータです。
一人のUserではなく、人気なServiceは何百万が会員登録します。その何百万人を情報を保管または管理するためには本棚みたいなDatabaseが必要です。
Databaseの種類は様々です。
Key-value Database
Key-valueでDataを管理するDatabaseもあります。
Key value
name Tro
age 20
簡単ですよね、簡単すぎるなので実用性はあまりありません。そのため、サブ用DBとしてよく使われます。しかし、Key-value DatabaseでRedisというDatabaseがあります。
RedisもKeyーvalueの方式ですが、たくさん使われています。その理由は、データをRAMに保存するためです。Main DBと別に置いて頻繁に必要なデータはRedisに追加で保管します。
- よく使うデータキャッシング
- Chat
- ログイン記録を保存 ... などに使われます。
Graph Database
Relational Databaseよりも関係を示したいときに使用するデータベースです。
上の絵でみると様々なDataが繋いでいます。絵のようにデータの関係を示したいときよく使います。
このDatabaseはGraph Query Languageを使って入出力します。
このDBはデータ間の関係または方向を重点的に保存したいときに使用します。
- 飛行機路線
- SNS友達関係
- おすすめサービス... などに使われます。
Document Database
collectionというフォルダを作り、その中にdocumentと呼ばれるファイルを作ります。
このdocumentにはJSON形式でデータを保存します。JSONを知らなければKey-valueと同じ形式だと思ってください。
このデータベースは、突然データの構造が変わってもエラーは発生しません。
重複を取り除かないです。簡単で分散処理をよくしてくれますが、Dataの正確度が他のDatabaseにより良くないです。
また、データ入出力の多いサービスに使われます。
- SNS
- リアルタイムチャット
- オンラインゲーム... などに使われます。
これ以外にもっといろんなDatabaseがありますが、今回はここまで紹介します。
今日話したかったRelational Databaseを始めます。
Relational Database
SQL文でデータ入出力をしなければならないためSQLを勉強しなければなりません。またTransaction機能があるため、入出力速度よりも正確度が非常に重要なサービスによく使われるデータベースです。
一般的に一番使っているDatabaseです。
そのRelational Databaseで私が考える代表的なDatabaseについて紹介します。
MySQL
Mysqlの特徴を紹介します。
- まず、1等のOracleは有料ですが、Mysqlは無料で使用できます。もしMysqlを商業的に使用すると有料になりますが、そうでなければ無料で使用できます。
- Windows、UNIX、LINUXなどほぼすべてのオペレーティングシステムで使用できます。
- 処理速度がかなり速く、大容量のデータ処理にも適しています。
- 設置方法も簡単で学びやすいです。
- セキュリティに優れています。
Oracle
Oracleは世界のDatabaseシェア1位です。その理由は
- UNIX、LINUX、WindowsなどのほとんどのOSに対応しています。
- DBMS実行コンピュータ/サーバ役割コンピュータ/DBアプリケーション実行コンピュータが異なる分散処理を行います。
- テラバイトサイズのデータを保存できます。
- 高性能Transactionをサポートしているため、迅速なデータ処理速度を経験できます。
- 多くのユーザーが同時にOracleデータベースにアクセスできます。
PostgreSQL
PostgreSQLで一番重要だと思うのは、INSERT中心の大規模サービスの場合に性能が良いです。
しかし、UPDATEが頻繁に必要な時は性能が不安定だという短所があることです。
そして、様々なJOIN方法を提供するため、複雑なQueryを使用する際に良いと思います。
MariaDB
MariaDatabaseはMysqlから出たDatabaseです。
なぜなら、Mysqlを作った開発者が作ったデータベースだからです。
そのため、Mysqlと同じ点が多いです。Mysqlと違う点はMariaDBは商業用としても無料で使用できます。
まとめる
世界1位であるOracelは料金が高いので、大量なDataを保管または管理するときに使えば良いと思います。実際に大手の企業はOracelをよく使っていますね、2位であるMysqlは商業的な目的でなければ無料で使えるます。また、簡単にSQLを学んで使えるのでスタートアップでよく使っていると思います。
私の場合は、ショッピングモールプロジェクトで入出力よりもデータの精度が重要だと思いました。
この理由で、関係型データベースを選択しました。
そして、紹介した4つの関係型データベースの中でMysqlを選択しました。
その理由は、無料で利用でき、プライベートプロジェクトであるため、大容量データを管理していないからです。また、簡単な動作のみのウェブサイトなので選択しました。
「どのデータベースが一番良い」こういうのはないと思います。
環境に合わせて使用することが最良のデータベースであることを学びました。
Discussion