リレーショナルデータベースについてまとめてみた
どうも、koheiです。
さて今日はデータを扱ううえで欠かせない技術
「データベース」について書きたいと思います。
データベースとは何者なのか
さて、データベースって何者なんでしょうか
なんとなくデータを貯めてる箱?みたいなイメージがあります。
wikipedeia先生によると下記の通り
データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。
つまり、データが扱いやすいようになっていれば、それはデータベースというようです。さてここでは、この説明の後半「データベース管理システム」に該当しますが、
データを扱いやすくするソフトウェアについて述べます。
データのカタチ
データベースについて説明する前には、データベースが扱うデータについて触れておかねばなりません。データにはどんな種類があるでしょうか
ざっと思い浮かべただけでも
テキストデータだったり、画像だったり、システムのログだったり、決済、売上値
などなど...
その形式や形も様々です。
データベース的な観点で言うと、以下の二つに分かれます。
- 構造化データ:いわゆる表形式になるデータ。構造が決まっている。
- 非構造化データ:表形式にならないデータ。規則性の有無はある。
こうしてみると世の中の大半は非構造なデータですね。 昔から、構造化データに対してはデータベースソフトウェアが広く利用されていました。そもそも「構造化データ」という言葉も、もともとデータベースソフトから生まれた言葉と言われています。
近年では、データ活用の発展に伴い非構造なデータを扱うデータベースシステムも登場してきました。
構造化データを扱うRDBMS
データを整理する方法として、よく考えるのは表形式にまとめることです。
この「表形式にデータをまとめて管理する」という考え方から生まれたのがRelational DataBase Management System(RDBMS/RDB)です。
なんか難しそうですが、要するに行と列の二次元表(relation)形式でデータを整理してる、ということです。
世の中の一般的にはデータベースと言えば、こちらを指すと思います。
RDBMSはただ表形式でデータを持つだけでなく、様々なmanagement機能を提供してくれます。
- SQLによる容易なデータアクセス
データベースのデータにアクセスする際にはSQL ( SEQUEL [Structured English Query Language] が由来らしい)という言語を使います。
データベース製品はたくさん出ていますが、SQLはISO(国際標準化機構)で規格化されているので、同じSQLで他のデータベース製品にも(ほぼ)同じように使えます。
- トランザクション管理
複数ユーザが同時にデータの参照・更新しても、データの不整合が起きないように管理します。ACIDというデータの整合性を担保する性質に基づいています。
- セキュリティ
データを表形式のテーブルやその集まりであるスキーマなどの単位で管理し、それぞれのアクセス制御を細かく設定できます。
他にも不正なデータ登録を防ぐための制約機能や、障害時の復旧管理など。。。
RDBMSには、データの管理・利用を容易にするための機能が兼ね備えられています。
RDBの例
さて、世の中のRDBMSについてまとめてみました。
オープンソースソフトウェア(OSS)では一番有名どころ。OSSのDBMSでは世界シェア8割以上と言われる。 2010年にoracleに買収されてから、商用利用は有料になったので、派生した純OSSであるMariaDBが注目。
オープンソースのデータベースソフト。MySQLに次ぐ有名どころ。比較的日本のシェア高め。MySQLとよく比較されるが、postgreSQLのほうが機能も豊富で標準SQLの準拠度が高いと言われるが、性能面はMySQLのほうが良いともいわれた。(最近は…?)
他のDB製品に比べて軽量で、アプリとして動作できるパブリックドメインのDBソフト。他のDBソフトに比べて機能が少なく、大規模なデータ処理には向かないが、組み込みシステムなどに利用される。
ORACLE DATABASE
世界初の商用RDBMSであり、企業向けデータベースソフトの最大手。最大手過ぎてもはや、データベースソフトのデファクトスタンダードになりつつある・・・が、最近は他のDB製品と競争が激化している。他のDB製品と比べて、システムやSQLが独特。最新のoracleは機械学習を活用した、全自動運用、チューニングされる世界初の自律型DBとして話題。
microsoftの提供する商用DB。商用DBMSでは、oracleと人気を二分する。
microsoft開発ともあって、windowsとの相性がよく、GUIツールが充実。oracleよりコストパフォーマンスに優れる。Transact SQLと言われる独特なSQLを使う。
IBMの提供する商用RDBMS。oracle, microsoftに次ぐシェアを持つ。2017年にDB2からDb2に名前が変わった。oracleと比較してコストパフォーマンスがよい。(…というかoracleが高い)メインフレーム(企業の基幹システムに使われるような大型コンピュータ)の時代から利用され、安定感のある歴史の長いDBMS。
SAP HANA
SAPが提供する企業向けRDBMS。 (「HANA」はデータベース以外にも周辺のアプリも含めたデータプラットフォームを指す) すべてのデータをメモリー上に保有し、高速処理するインメモリーデータベース処理が売り。とにかく速い。2011年にリリースされたばかりで分析用DBとして注目。
まとめ
さて、ここまでデータベースとは何者か、そして主だったリレーショナルデータベースソフトについてまとめてみました。
今日はまとめきれませんでしたが、次回は非構造化データを扱うNoSQLについても触れたいと思います。
ではでは