【初心者向け】データベースとRDB

【初心者向け】データベースとRDB

データベースというと、住所録のようなデータの集合体のようなものを想像しがちですが、現在のシステムのほとんどでは、裏でデータベースが活躍しています。よく言われるRDBだけでなくNoSQLが使用される場面も増えています。

データベースとは

ソフトウェアは大量のデータを扱うときにデータベースを使用します。今日では、データベースを使わないサービスや、システムはないといってもいいほど、多くのシステムに使用されています。例えば、ブログやSNSはもちろんのこと、検査サイトやショッピングサイト、カルテのシステムやグループウェア、スマホゲーム、動画サイト、Webメールなど枚挙にいとまがありません。

データベースは、構造的に整理されているデータの集合体です。データが整理されていることで、データを検索したり、特定のデータだけを取り出し足りするなど、プログラムからデータを扱うことを容易にします。

データベースとDBMS

データベースは、あくまで「データの集合体」であって、それ自体にデータを操作するような機能はありません。実際に操作するのは、データベース管理システム(データベースマネジメントシステム=DBMS)です。DBMSは、データを格納したり、削除したり、検索したりといった、データベースを実際に操作する役割を担います。
 ただ、DBMSは、あくまで「実際に動く」ソフトウェアであり、AIのように自立した意思があるわけではありません。「このデータを書き込んで欲しい」「削除してほしい」「探して欲しい」などの意思は、人間やプログラムが命令する必要があります。その、データベースに命令する際に使われる言語の1つが、SQLです。

SQLには、命令する言葉(構文)や、命令の仕方(文法)が定義されています。SQLは、標準化されているため、多少の方言はあるものの、どのDBMSソフトを使用するときも、おおむね同じ書き方をします。
 SQLは、単独で使うものではなく、プログラムとセットで使用することが前提ないので、「データベースを使いたいから使う」というよりも「使いたいシステムやソフトウェアが、データベースを組み込んでいるので使用する」ケースが多いです。
一見そうは見えなくても、内部でデータベースを使っているシステムはとても多いです。

DBMS(データベースマネジメントシステム)

「データベース」といった場合、多くの場面では、データベースとDBMSをセットで意味します。
そのため、「データベースは何をやっていますか?」といった時に「MySQL」や「PostgreSQL」、「Oracle Database」などの名前が挙がりますが、それらは正確にはDBMSです。DBMSには、さまざまな種類があります。裕書のDBMSで有名なのは「Oracle Database」、「SQL Server」、無償のDBMSで有名なのは「MySQL」、「PostgreSQL」、「MariaDB」でしょう。
 それぞれのDBMSの機能に大きな違いはありません。ただ一部機能が違っていたり、速度重視なのか、安全重視なのか、スケール可しやすいかどうかなど、得意とする機能は若干違います。
 大規模なシステムの場合は、サポートを受けやすいことから、有償のDBMSを選ぶことが多く、小規模なシステムの場合は、コスト面から無償のDBMSを選ぶ傾向にあります。

RDBと非RDB

データベースは大きく分けて、リレーショナル型データベース(RDB)と、非リレーショナルデータベース(非RDB)があります。
 リレーショナル型は、住所録や台帳のように表形式を取り、データの種類を細部まで設定するため、準備に時間がかかりますが、その分、高度な操作ができます。データに対する操作には、SQLを使用します。
 非 リレーショナル型 は、構造が単純で決めることが少ないため、素早く構築できます。複雑なおkとはできませんが、アクセスも高速です。代表的な仕組みにキーバリュー(key-Value)型やドキュメント型があります。SQLを使用しないため、「NoSQLデータベース」とも呼ばれます。

AWSではRDB・非RDBのどちらも提供しています。RDBのサービスとして「Amazon RDS(Relational Database Service)」、非RDBのサービスとして「Amazon DynamoDB」、「Amazon ElastiCache」などがあります。