データベース(DB)とは何か?代表的な管理システムと運用の注意点を解説

    test

    システム運用において、データを効率的に管理するデータベースはなくてはならない存在です。しかしデータベースにも様々な種類があり、それぞれがどのような特徴を持っているのか分かりづらいのではないでしょうか。

    そこでこの記事では、データベースの基礎的な説明と代表的な管理システム、また運用に際して注意すべき点を解説します。

    データベース(DB)とは?

    データベースとは決まった形式で情報を集めて整理したもので、特にコンピュータ上で情報を集積したものを指すことが多いです。データベースには、情報の「集積」「整理」「加工」といった主に3つの役割があります。まず情報を集積することはデータベースの最も基本的な機能となりますが、単に集めるだけではデータベースとはいえません。それらの情報を扱いやすく整理して、必要な時にはすぐに取り出して加工できるようにすることが求められます。

    データベースの具体例としては、表計算ソフトなどを使って顧客情報を管理し「氏名」「会社名」「連絡先」などの各項目ごとに情報を整理したものが挙げられます。情報を集積し整理しており、必要な時には表計算ソフトの検索機能・抽出機能などで必要な情報を取り出すことができる状態です。しかし大規模なシステムでデータを扱う場合は、表計算ソフトを使って手作業で情報を管理するのはとても追いつきません。そこでデータをより効率よく自動的にデータベース化するシステムも多く存在します。

    データベースの種類

    効率よくデータを集めて整理する仕組みは、様々な種類のものが考案されてきました。それぞれにメリット・デメリットがあり、用途に応じて使い分けられているのです。ここでは主なデータベースの種類を3つご紹介していきます。

    リレーショナルデータベース

    リレーショナルデータベースとは表計算ソフトのような行と列の表形式でデータを管理するデータベースで、最も広く使われている方式です。DB-Engines rankingによるデータベース管理システムの人気ランキングでは、2022年3月時点でトップ10のうち7つのシステムがリレーショナルデータベースを採用しています。

    リレーショナルデータベースの特徴は、表形式であるため人間が視覚的に理解しやすいことと、柔軟に情報の整理ができることです。データの構造が単純であることからデータベースを処理するSQL言語を用いることで幅広い処理に柔軟な対応ができます。また、複数の表を組み合わせることで複雑なデータを取り扱うことも可能です。

    一方でデメリットもあります。まず、構造が単純であるがゆえに他のデータベースの種類と比較すると必ずしも効率的とはいえません。柔軟な対応ができる反面、大規模なデータベースになるとプログラムが複雑になり処理速度が落ちてしまう場合もあるのです。

    分散データベース

    分散データベースとは、複数のデータベースを1つのデータベースのように扱う仕組みです。この仕組みにより、サーバーへの負荷を分散して処理速度を向上することが可能になっています。また、可用性を高めることができるのもこのデータベースの大きな特徴です。例えばデータベースが格納されたサーバーを複数地域に置いてそれらを分散データベースとして扱うことで、1つのサーバーに問題が発生してもすぐに復旧することができます。

    分散データベースには、それぞれのデータベースで情報を同期するために「レプリケーション」「デュプリケーション」という2つの仕組みがあります。
    レプリケーションでは、データベースの更新をほかのデータベースが発見次第、それをコピーして更新するという仕組みです。しかしこの方法は、分散しているデータベースの数によってはすべての同期に時間がかかる場合もあります。
    一方でデュプリケーションは、分散されているデータベースの中からマスターを決めておき、更新されたマスターをもとにほかのデータベースが同期する仕組みです。こちらは処理速度が高く正確な同期ができる一方で、マスターがダウンしてしまった際に影響が大きくなりやすいというデメリットもあります。

     

    階層型データベース

    階層型データベースとは、データをツリー構造に階層化して整理する仕組みです。1つの親データに複数の子データが結びつき、それが何段にも重なっているような状態です。このデータベースでは、特定のデータを検索する際の速度がとても速いという特徴があります。データが特定できれば、そこへつながるルートを辿るだけですべての情報を網羅できるためです。

    一方でデメリットとしては、データの編集が難しいという点が挙げられます。一つのデータを修正する場合、それにつながるツリー全体のルートが変わってしまうのです。頻繁にデータが更新されないシステムの方が、階層型データベースは向いているといえます。

    代表的なデータベース管理システム3選

    データベースは規模が大きくなるほど手動で管理するのは困難です。そこで、データベース管理システム(DBMS)を利用すると効率よく管理を行うことができます。DBMSに含まれているのは、データベースを管理するための言語や、データの破損を防ぐ仕組みなどです。DBMSは各社からサービスが展開されており、それぞれに特徴があります。ここでは、特に代表的な3つのDBMSを見ていきましょう。

    Oracle Database

    Oracle社が販売しているOracle Databaseは、世界中で最も利用されているDBMSのうちのひとつです。1979年に世界初の商用データベースとして開発され、他のDBMSと比較すると高価ながらも高機能・高セキュリティで広く信頼されています。ベンダーによる様々なサポートを受けることができ安定性も高いことから、高可用性が求められる大規模なシステム運用によく用いられています。

    MySQL

    MySQLはOracle社が管理しているオープンソースのDBMSです。商用利用にはライセンスを購入しなければなりませんが、基本は無料で利用することができます。ほかの有償DBMSと比較しても遜色ない性能を誇っており、多くのレンタルサーバなどに採用されています。

    MySQLの特徴は、先述の通り基本無料で利用できるためコストを下げることが可能な点と、様々な環境に適用することができる点です。様々なOSに対応しているためプラットフォームを問わず、オープンソースであるため自由なカスタマイズができます。このような特徴から幅広い用途で使われるMySQLですが、特にwebサービスやクラウドサービスで利用されています。

    PostageSQL

    PostageSQLは、MySQLと同じく基本無償での利用が可能なオープンソースのDBMSです。基本的な特徴はMySQLと変わりませんが、機能性が高いことが特徴となっています。例えば関数の定義ができるようになっており、C言語などで作ったカスタム関数を導入することも可能です。よりシンプルで幅広い用途に使いたい場合はMySQLを、複雑な関数を組み込むなど多機能性が必要な場合はPostageSQLを使用するといった使い分けが考えられます。

    DBMSの可用性を高めるには

    データベースを管理する上でDBMSは欠かせないシステムですが、どのようなシステムも障害対策は避けては通れない問題です。システムの種類によってはデータベースは常に更新され続けている場合も多く、DBMSの障害はそのままビジネスの損害に繋がります。そこでここでは、DBMSの可用性を高める方法を2つ紹介していきます。

    標準HA機能の利用

    1つ目は、それぞれのDBMS自体に備わっている機能で高可用性を担保する方法です。
    例えばOracle Databaseには「Oracle RAC」という機能があります。これは複数台のサーバーを用いて負荷分散を行うシステムです。この機能を利用することで、あるサーバーで障害が発生した際に別のサーバーへとシステムを切り替えてサービスを継続することができます。またサーバーへの負荷を分散することができるため処理速度の高速化にもつながります。
    ただしOracle DatabaseはほかのDBMSと比較すると価格帯が高く、Oracle RACの利用には決まったライセンスを取得する必要があります。

    また、基本無償のMySQLにも障害対策機能は備わっています。例えば先述した「レプリケーション」機能です。
    メインとなるサーバのデータベース情報をほかのサーバへバックアップしておき、必要に応じてそれらをリストアしたり、サーバー障害の際にはコピーされたデータのあるサーバを代わりに稼働させて代替します。ただし、Oracle RACのようにシステムを分散する機能ではなくデータベースを丸ごとバックアップする必要があり、比較すると非効率的であるともいえます。

    HAクラスタリングソフトウェアの利用

    基本的な障害対策は各DBMSにあらかじめ備わっている場合が多いですが、特に無償のDBMSはサポート体制が必ずしも充実しておらず、システムダウンなどに対応しにくい場合もあります。そこでHAクラスターと呼ばれる高可用性の連携構成を利用するという方法も効果的です。

    LifeKeeper」などに代表されるHAクラスターは、複数のサーバーを1台のサーバーのように扱って負荷分散を行うシステムです。障害が発生した際にシステム稼働を別のサーバーに移すことでサービスの継続を実現し、可用性を高めます。サービス待機状態のサーバーを予備として用意しておく「アクティブ/スタンバイ構成」、複数のサーバーで別々のサービスを稼働しつつお互いを予備のサーバーとする「アクティブ/アクティブ構成」など用途に応じて多様な構成が可能です。

    HAクラスターの機能はOracle RACシステムと似ていますが、費用対効果で優れている場合があります。Oracle DatabaseはDBMSの中では高価な部類であることに加え、その費用がさらに増加しているという問題があるのです。Oracle Databaseは保守費用が年々増加していたり、ライセンス体系の変更によりサポート可能なCPUソケット数が減少したり、クラウド環境やVMwareなど仮想環境での利用コストが増加したりと、実質的な費用負担が大きくなっています。そのため構成の仕方によっては、その他の低価格帯DBMSとHAクラスターを組み合わせた方がコストを抑えられるのです。

    可用性を十分に考慮した上でデータベースを検討しよう

    データベース管理システムは無償・オープンソースのものも多いですが、それらは必ずしも安定してシステムを稼働できるとは限りません。運用するシステムに求められる可用性を十分に考慮した上で、データベースの構成を考えることが大切です。DBMSにどのような可用性が求められているのかについては最新の調査資料を掲載しますので、こちらもぜひ参考にしてみてください。

    最新のユーザー調査から見えてきた「DBMS(データベース管理システム)に求める可用性」

     

    SNSでもご購読できます。