SQLと各RDBMSの特徴について
初めまして、ALTURA X エンジニアインターン生の目時と申します。
今回は、ALTURA Xのプロダクトでも使用されているデータベースについて、学び、各RDBMSの特徴などについてまとめさせていただきました。
前提として、元々の知識ですが、私は、この記事を書く以前は、SQLを含め、データベース関連については、初心者の状態で始めました。
SQLは、何のために使うのか?
構造化照会言語 (SQL) は、リレーショナルデータベースに情報を格納および処理するためのプログラミング言語です。リレーショナルデータベースは、情報を表形式で格納し、行と列は、さまざまなデータ属性と、データ値間のさまざまな関係を表します。
データベースとは?
データベースには、階層型データベース、ネットワーク型データベース、リレーショナルデータベース(RDB)、非リレーショナルデータベース(NoSQL)がありますが、SQLが扱うことができるのは、RDBだけになります。
リレーショナルデータベース(RDB)とは?
情報を保管するツールで、皆さんが一番最初に思い浮かぶのはエクセルや、スプレッドシートのようなものだと思います。では、前述した2つとRDBは何が違うのでしょうか?(エクセル、スプレットシートを表計算ソフトと以降呼びます)
私は、最初この違いについて悩みましたが、このようにデータの規模が違うことが大きな点です。この他にも相違点は存在しますが、一番大きく違うのは、このデータの規模です。表計算ソフトは、小規模なデータセット、主に個人使用に適しており、RDBは、企業などの大規模なデータセットを扱うのに適しています。
*ただし、これら以外にも重要な相違点があります。例えば、データの整合性維持、複数ユーザーによる同時アクセス、セキュリティ機能などの面でもRDBは優れています。
SQLを使用することによるメリット
SQLを使用することで、データベースから情報を検索、更新(登録、修正、削除)を行うことができます。データベースには、一般に数万、数百件ものデータが保存されているので、SQLを使うことでより効率的に扱うことができるようになります。
*ここで、SQLとは、あくまで、データベース言語(プログラミング言語のようなもの)であり、データベースとは別のものであるということに注意してください。私は、最初この部分を誤解してしまっていました。
SQLの使用することで、何ができるのか?
SQLを使うことで、上のようなデータベースを顧客番号を使って整理することで、データの整合性が取れます。
費用別、産業別、などによって使われるデータベース製品、ソフトウェアは様々です。それでは、どのような製品が世の中には存在するのでしょうか?
RDBMSにはどんな製品があるのか?
ここでは、それぞれの製品を、いつ作られたのか、かかる費用、強み、弱み、特に使用されている産業分野の観点から見ていきたいと思います。
MySQL
初期リリース: 1995年
世界で最も普及しているオープンソースのデータベースソフトウェア
費用: オープンソースで無料(商用サポートもあり)
強み:
高速でパフォーマンスが良い
オープンソースでカスタマイズが容易
広く利用されているため、豊富なリソースとコミュニティサポートがある
弱み:
スケーラビリティに制約がある
一部の高度な機能が不足
使用分野: 金融サービス、メディア/エンターテイメント(Youtube,Spotify)、医療/医薬、製造、小売
https://www.mysql.com/jp/why-mysql/case-studies/
感想:最大手として様々な分野で使用されていると感じました。
MySQLは、無料で使用でき(個人利用の場合)、扱いやすいため、実際に実行してみました。(別記事)
PostgreSQL
初期リリース: 1996年
費用: オープンソースで無料
強み:
高度な機能と拡張性
高い信頼性とスケーラビリティ
豊富なデータ型と拡張機能
弱み:
設定が複雑で初心者には難しい
単一のデータソースからのデータ取り込みに制限がある
使用分野: 製造(日立製作所)、メディア/エンターテイメント(レコチョク)、金融(三菱UFJインフォメーションテクノロジー(株))
Oracle Database
https://www.oracle.com/jp/database/
初期リリース: 1979年
世界初の商用リレーショナルデータベース管理システム
費用: エンタープライズ向けで有料(ライセンス費用が高い)
最近は、従量課金制を取り、使った分だけを支払うような仕組みOracle Cloudがある。
強み:
高度なセキュリティとデータ管理機能
大規模なデータ処理に適したパフォーマンス
豊富な機能とサポート
弱み:
高コスト
複雑な設定と管理
使用分野: 製造(日産自動車株式会社)、運輸サービス業(Uber)https://www.oracle.com/jp/customers/
感想:MySQLと同じOracle社が提供しているので、顧客の棲み分けはどうになっているのか気になりました。調べてみると、Oracle Databaseは、セキュリティ面が良いなどの反面、高コスト&操作が難しいので、小規模あるいは費用対効果を望む場合にはMySQLが使用される傾向にあるみたいです。
Microsoft SQL Server
初期リリース: 1989年
費用: エンタープライズ向けで有料(エディションによって異なる)
基本的に有料だが、一部無料のエディションあり
強み:
Microsoft製品との統合が容易
強力なデータ分析ツール
高い可用性と信頼性
データベースを視覚的に操作する「GUI」が利用できる。
弱み:
高コスト
ライセンス条件が複雑
使用分野:製造(宇部興産株式会社)
SQLite
初期リリース: 2000年
費用: オープンソースで無料
強み:
軽量でポータブル
サーバーレスで設定が不要
小規模アプリケーションに最適
データベースの準備不要で、アプリに組み込み可能
クライアント・サーバー型ではなく、組み込み型のライブラリ
弱み:
高い同時書き込み処理に制約がある
高度な機能が不足
セキュリティ機能が備わっていない
使用分野: iOS,Android、アプリケーション
DB2
初期リリース: 1983年
費用: エンタープライズ向けで有料
強み:
高度なデータ管理機能
大規模データ処理に強い
IBM製品との統合が容易
弱み:
高コスト
設定と管理が複雑
使用分野: 自動車分野(Audi)、小売(Nike)
まとめ
今回、このように各サービスをまとめ、実際にどのようなサービスに利用されているのかを調べていくうちにデータベースの理解が深まりました。ただ、プログラミング言語は実際に手を動かしていくことが大事であると思うので、色々実行して考えていきたいと思います。