最近はRDB(リレーショナル・データベース)が主流になっている上に、DB(データベース)とDBMS(データベース・マネジメントシステム)はセットで使われるため、DB(データベース)の種類を解説と言いながら、もはやRDBMS(RDBのDBMS)のことを指しているサイトも少なくありません。
そうすると当然、それに伴い、RDBMSの種類を列挙(+NoSQL型の紹介)くらいにとどまってしまうのが必然なので、初めてAWSとか専門的な内容を学ぶ人にとっては「?」となると思います。まあ、通常webサイトを構築する際はRDBを知っていれば困らないことが圧倒的に多いかと思うので、今までなかったんだろうけども。
DB(データベース)の種類=「じゃあ、RDB以外のデータベースって何があるの?」
この問いに真正面から答え、DBの全体俯瞰図を提供します。
そもそもDB(データベース)とは
そもそもデータベースとは?基礎から分かるデータベース入門から引用します。
「データベース」とは、ある特定の条件に当てはまる「データ」を複数集めて、後で使いやすい形に整理した情報のかたまりのことを表します。特にコンピュータ上で管理するデータをデータベースと呼ぶことが多いですが、紙の上で管理する「電話帳」や「住所録」なども、立派なデータベースです。
また、コンピュータ上でデータベースを管理するシステム(DBMS:Database Management System)のことや、そのシステム上で扱うデータ群のことを、単に「データベース」と呼ぶ場合もあります。
そもそもデータベースとは?基礎から分かるデータベース入門より
DB(データベース)の種類比較表(RDB, NoSQL, KVSなど)
DB(データベース)の種類の全体像を表形式でまとめてみました。
(私が今現在AWSを勉強している関係で、一番右の列も追加している点、ご了承ください。)
DBの形式 | 特徴 | DBMS(一例) | クエリ言語 | AWSで提供するサービス | |
1 | RDB (リレーショナル型) | 表・テーブル形式。 現代の主流。 データの種類を予め設定。 高度な操作が可能。 | – SQLite – PostgreSQL – MySQL – Oracle Database – Microsoft SQL Server | SQL | – Amazon Aurora – RDS |
2 | KVS (キーバリューストア型) | すばやく構築。 アクセスも高速。 ただし、複雑なことはできない。 | – Redis – Memcashed – Cassandra – Hbase | ? | – DynamoDB – ElastiCache |
3 | ドキュメント指向型 | 「BSON」形式。 ビッグデータ処理、 分散処理向け。 | – MongoDB | Mongoクエリ言語 | Amazon DocumentDB |
4 | グラフデータ型 | 要素だけでなく、 要素間の関係も記述可。 | – Property Graph – W3CのRDF | – Apache TinkerPop – Gremlin – SPARQL | Amazon Neptune |
5 | 時系列型 | 時間間隔で 取得することを 前提としたRDB。 IoT向け。 | – | – | Amazon Timestream |
6 | 台帳型 | 商取引や財務の記録、 監査を想定した Amazonオリジナル | – | – | QLDB |
2列目以降が、いわゆるNoSQL型(Not Only SQL)です。
NoSQL型と言っても、様々な種類があることがわかりますね! RDBしか使わない人にとっては、「世の中のDBにはRDBとそれ以外(NoSQL)がある」という理解で事足りるのかも知りませんが、DB(データベース)の全体を抑えようとすると、その理解では物足りないという気が致します。(人間誰しも、自分から遠い存在の解像度は低くなるものですね)
DB(データベース)は「階層型」「ネットワーク型」「リレーショナル型」の3種類と説明しているサイトも多く見ますが、前者2つのDBが現場で話に出てきたことがありません。このサイトでも、前者は今使われていないことが語られていますし、この分類に意味はないと考えています。
ストレージは見た目が「階層型」になっているものが多いですね。(中ではネットワーク型だったりするようですが。)「あれ?そもそもデータベースとストレージってどちらもデータを格納するけど、何が違うんだ?」と思った方、こっそりこちらの記事をチェックしておいてください。:【説明できる??】DB(データベース)とストレージの違い
この表があることで、
- 「RDB以外にはどのようなDB(データベース)があるのか」
- 「この初めて見たデータベースは、全体でどのような位置づけなのか」
という問いが出てきた際に、答えを出しやすくなれば嬉しいです。
私も、実際はRDBしか使ったことがないため、実務でNoSQLをやられている方からすると色々ツッコミどころがあるかもしれません。コメントでご指導・ご指摘いただけると嬉しいです。
参考文献
- データベース:そもそもデータベースとは?基礎から分かるデータベース入門
- 比較表の元にした本:AWSのしくみと技術がしっかりわかる教科書(技術評論社発行/小笠原種高著)
- KVS:いまさら聞けないKVSの常識をHbaseで身につける
- Mongoクエリ言語:第3回 MongoDBのクエリを使いこなそう
最後まで読んでくださってありがとうございました!
コメント