IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

リレーショナルデータベースについてまとめてみた

どうも、koheiです。

IBMRedHat買収したビッグニュースがありましたね。

 

さて今日はデータを扱ううえで欠かせない技術

「データベース」について書きたいと思います。

 

f:id:go-mount:20181029214418j:plain

 

データベースとは何者なのか

 さて、データベースって何者なんでしょうか

なんとなくデータを貯めてる箱?みたいなイメージがあります。

wikipedeia先生によると下記の通り

データベースdatabase, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。

 

つまり、データが扱いやすいようになっていれば、それはデータベースというようです。さてここでは、この説明の後半「データベース管理システム」に該当しますが、

データを扱いやすくするソフトウェアについて述べます。

 

データのカタチ

 データベースについて説明する前には、データベースが扱うデータについて触れておかねばなりません。データにはどんな種類があるでしょうか

 

ざっと思い浮かべただけでも

テキストデータだったり、画像だったり、システムのログだったり、決済、売上値

などなど...

その形式や形も様々です。

 

データベース的な観点で言うと、以下の二つに分かれます。

  • 構造化データ:いわゆる表形式になるデータ。構造が決まっている。
  • 非構造化データ:表形式にならないデータ。規則性の有無はある。

f:id:go-mount:20181028234646p:plain

 

こうしてみると世の中の大半は非構造なデータですね。 昔から、構造化データに対してはデータベースソフトウェアが広く利用されていました。そもそも「構造化データ」という言葉も、もともとデータベースソフトから生まれた言葉と言われています。

近年では、データ活用の発展に伴い非構造なデータを扱うデータベースシステムも登場してきました。

 

構造化データを扱うRDBMS

 データを整理する方法として、よく考えるのは表形式にまとめることです。

この「表形式にデータをまとめて管理する」という考え方から生まれたのがRelational DataBase Management System(RDBMS/RDBです。

なんか難しそうですが、要するに行と列の二次元表(relation)形式でデータを整理してる、ということです。

世の中の一般的にはデータベースと言えば、こちらを指すと思います。

 

 

RDBMSはただ表形式でデータを持つだけでなく、様々なmanagement機能を提供してくれます。

  • SQLによる容易なデータアクセス

データベースのデータにアクセスする際にはSQL ( SEQUEL [Structured English Query Language] が由来らしい)という言語を使います。

データベース製品はたくさん出ていますが、SQLはISO(国際標準化機構)で規格化されているので、同じSQLで他のデータベース製品にも(ほぼ)同じように使えます。

複数ユーザが同時にデータの参照・更新しても、データの不整合が起きないように管理します。ACIDというデータの整合性を担保する性質に基づいています。

ACID (コンピュータ科学) - Wikipedia

  • セキュリティ

データを表形式のテーブルやその集まりであるスキーマなどの単位で管理し、それぞれのアクセス制御を細かく設定できます。

 

他にも不正なデータ登録を防ぐための制約機能や、障害時の復旧管理など。。。

RDBMSには、データの管理・利用を容易にするための機能が兼ね備えられています。

f:id:go-mount:20181029201916p:plain

RDBの例

さて、世の中のRDBMSについてまとめてみました。

MySQL

f:id:go-mount:20181029202929p:plainf:id:go-mount:20181029204053p:plain

オープンソースソフトウェア(OSS)では一番有名どころ。OSSDBMSでは世界シェア8割以上と言われる。 2010年にoracleに買収されてから、商用利用は有料になったので、派生した純OSSであるMariaDBが注目。

 

postgreSQL

f:id:go-mount:20181029203351p:plain

オープンソースのデータベースソフト。MySQLに次ぐ有名どころ。比較的日本のシェア高め。MySQLとよく比較されるが、postgreSQLのほうが機能も豊富で標準SQLの準拠度が高いと言われるが、性能面はMySQLのほうが良いともいわれた。(最近は…?)

 

SQLite

ãSQLiteãã®ç»åæ¤ç´¢çµæ

他のDB製品に比べて軽量で、アプリとして動作できるパブリックドメインのDBソフト。他のDBソフトに比べて機能が少なく、大規模なデータ処理には向かないが、組み込みシステムなどに利用される。

 

ORACLE DATABASE

ãoracle ãã¼ã¿ãã¼ã¹ãã®ç»åæ¤ç´¢çµæ

世界初の商用RDBMSであり、企業向けデータベースソフトの最大手。最大手過ぎてもはや、データベースソフトのデファクトスタンダードになりつつある・・・が、最近は他のDB製品と競争が激化している。他のDB製品と比べて、システムやSQLが独特。最新のoracle機械学習を活用した、全自動運用、チューニングされる世界初の自律型DBとして話題。

www.publickey1.jp

 

Microsoft SQL server

f:id:go-mount:20181029205644p:plain

microsoftの提供する商用DB。商用DBMSでは、oracleと人気を二分する。

microsoft開発ともあって、windowsとの相性がよく、GUIツールが充実。oracleよりコストパフォーマンスに優れる。Transact SQLと言われる独特なSQLを使う。

 

IBM Db2

f:id:go-mount:20181029210820p:plain

IBMの提供する商用RDBMSoracle, microsoftに次ぐシェアを持つ。2017年にDB2からDb2に名前が変わったoracleと比較してコストパフォーマンスがよい。(…というかoracleが高い)メインフレーム(企業の基幹システムに使われるような大型コンピュータ)の時代から利用され、安定感のある歴史の長いDBMS

 

SAP HANA

ãSAP HANAãã®ç»åæ¤ç´¢çµæ

SAPが提供する企業向けRDBMS。 (「HANA」はデータベース以外にも周辺のアプリも含めたデータプラットフォームを指す) すべてのデータをメモリー上に保有し、高速処理するインメモリーデータベース処理が売り。とにかく速い。2011年にリリースされたばかりで分析用DBとして注目。

 

まとめ

さて、ここまでデータベースとは何者か、そして主だったリレーショナルデータベースソフトについてまとめてみました。

今日はまとめきれませんでしたが、次回は非構造化データを扱うNoSQLについても触れたいと思います。

ではでは