「データベース管理システム」(DBMS)は、データベースを作成して管理するためのシステムだ。基本的には、データベースそのものと、エンドユーザーまたはアプリケーションの間のインタフェースとして機能する。エンドユーザーはDBMSを使い、データベース内のデータの作成や保護、読み取り、更新、削除ができるようになる。DBMSは一定のルールに従ってデータを整理し、簡単にアクセスできる状態に保つ。(続きはページの末尾にあります)
RDBMSを含め、さまざまなDBMSの中から自社の用途に適したものを見極めるためには、それぞれの特徴を理解しておく必要がある。主要なDBMSの種類とそれぞれの長所、短所を解説する。
RDBMS以外にも、企業は用途に応じてさまざまなDBMSを選択できる。どの用途にどのDBMSが適するのかを判断するために、主要なDBMSの種類とそれぞれの長所、短所を知っておこう。
DBMSにはRDBMS以外にもさまざまな種類が存在する。どのDBMSを使用するかを決める前に、それぞれの長所と短所を知っておくことが大切だ。RDBMSをはじめとする主要DBMSを解説する。
GoogleはPostgreSQL互換のクラウドデータベース「AlloyDB」を発表した。クラウドデータベース「Cloud Spanner」との違いは何か。どのような用途に最適なのか。
フランスのCarrefourは脱Oracleによるコスト削減に着手した。しかしOracle DatabaseからPostgreSQLへの移行は容易ではなかった。同社はどうやって課題を解決していったのか。
MySQLとMySQL Analytics Engineを統合し、単一プラットフォームでOLTPとOLAPのワークロードを実行できるサービスが登場した。DWHを使わずにデータの分析が可能になるという。
OracleはDBMSのクラウドサービス「Oracle MySQL Database Service」に新機能として分析エンジンを搭載した。OLAP用途からデータ分析用途へのニーズの拡大に応える。
多様なデータモデルを一元管理できるDBMSが「マルチモデルデータベース」だ。なぜ登場したのか。従来のDBMSとは何が違うのか。
オンプレミスのインフラで稼働させているレガシーアプリケーションをクラウドサービスに移行させる際の課題が、DBMSの移行だ。移行先として「クラウドデータベース」を選ぶ場合、失敗しないためには何をすべきか。
データベース管理システムの機能をクラウドサービスとして利用できる「クラウドデータベース」への移行が適している企業は、どのような企業なのか。その条件を説明する。
IT技術者はデータベースに関連する多くの要素に悩まされてきた。これらはDBaaSによって解決するという。DBaaSは本当に有用なのだろうか。
データベース管理システムのコストとパフォーマンスを最適化する手段となり得るのが「クラウドデータベース」だ。Googleが提供する豊富なクラウドデータベースの中から「Cloud SQL」「Cloud Spanner」を取り上げる。
Oracleがさかんにアピールする自律型データベースにより、多くの管理タスクが自動化される。それはデータベース管理者の失業を意味するのか。それともデータベース管理者の進化の始まりなのか。
SQL Server 2019プレビュー版にHadoopとSparkが組み込まれ、「多目的データポータル」に位置付けられることになった。同時にAzure Cosmos DBもアップデートされる。
リレーショナルデータベースの役割がなくなるわけではないが、不向きな用途が増えてきたのも事実だ。多様化するデータ管理システムの特徴を理解しておこう。
Webスケールのデータセットを整理するデータベースの台頭に関わるサプライヤー、そして「NewSQL」と呼ばれる新興勢力の動向について紹介する。
データベースのパフォーマンス管理ツールを使用すると、ボトルネックと競合ポイントを特定し、ワークロードとスループットを監視できる。また、システムとデータベース管理システムのリソース使用状況も管理できる。
前編に引き続き、サポートが終了した「SQL Server」の移行先として、SQL Server 2012へのアップグレードをお勧めする理由を解説する。後編では残りの4つの機能を詳しく説明する。
大規模なアプリケーションを支えるデータベースは、ログやイベントデータが多くのトラフィックを占める。こうしたデータ量増大にも耐えられるデータベースを構築するにはどのような仕組みが最適か。
DBMSは、データの変更管理やデータベースの監視、調整、セキュリティ対策、データのバックアップと復元といった、データベースの管理に必要な作業を実行可能にする。DBMSによってはデータベース自体のアクティビティー(操作や処理)と、データベースにアクセスするアプリケーションのアクティビティーのログを取得し、監査する機能も備える。
エンドユーザーにデータの表示画面を提供することもDBMSの役割だ。複数のエンドユーザーが、複数の場所から同一のデータを利用できるようにする。IT管理者はエンドユーザーに表示するデータやその表示方法を制限したり、1つのデータベーススキーマ(データベースの設計)に対して、複数の表示方法を用意したりできる。
データベースに対する操作をDBMSが一手に担うので、エンドユーザーやアプリケーションは、データの物理的な格納場所やデータが配置されているストレージの種類を意識する必要がなくなる。DBMSが提供するAPI(アプリケーションプログラムインタフェース)を使用する限り、データベースに変更が加わるたびに、開発者がアプリケーションのプログラムを修正する必要はない。
DBMSの一つである「リレーショナルデータベース管理システム」(RDBMS)では、データベースの操作に「SQL」を利用する。SQLは、データの定義、保護、アクセスを実行するためのプログラミング言語だ。
RDBMSは「SQLデータベース」とも呼ばれる。データを固定のスキーマ(データ構造)を持つテーブル(表)の行として表現し、キー列の値によって関係性を定義する。高価な製品もあれば、「PostgreSQL」のようなOSS(オープンソースソフトウェア)の選択肢もある。
主なRDBMSには、IBMの「IBM Db2」やMicrosoftの「Microsoft SQL Server」、オープンソースの「MySQL」などがある。「SingleStore」は、AI(人工知能)技術を活用したアプリケーションやシステム運用データの分析用に設計されたクラウドネイティブデータベースだ。
NoSQL DBMSは、時間とともに変化するデータ構造に適する。ただしスキーマを管理するために、アプリケーションの改修が必要になることがある。NoSQL DBMSには主に4つの種類がある。
1.ドキュメントデータベース
ドキュメントデータベースは、半構造化データ(厳密な構造が決まっていないデータ)を保存するためのデータベースだ。一般的に、データを「JSON」形式のドキュメントとして保存する。コンテンツ管理やモバイルアプリケーションなど、さまざまなスキーマ要件を満たす必要があるシステムに適するデータベースだ。代表例としてはMongoDBの「MongoDB」や、OSSの「Couchbase Server」がある。
2.グラフデータベース
グラフデータベースは、データをテーブル(表)やドキュメントではなく、「ノード」と「リレーション」(関係)で表す。データ同士のつながり(関係性)を重視する特徴のために、SNSや予約システム、顧客関係管理(CRM)など、データの関連性を扱うシステムに適する。グラフデータベースの具体的な製品例として、Neo4jのOSS「Neo4j」がある
3.キーバリュー型データベース
キーバリュー型データベースは、「キー」(識別子)と「値」(データ)を1組として保存する。この単純さから、処理速度が速く、大規模なアプリケーションの開発に向いている。具体的にはWebアプリケーションのセッション管理やキャッシング、オンラインショッピングのカートの管理などの用途がある。Redisが開発した「Redis」やDanga Interactiveが開発した「Memcached」といったOSSは、主なキーバリュー型データベースの一例だ。
4.ワイドカラムストア
ワイドカラムストアは、一般的なRDBMSのようにテーブルとカラム(列)、レコード(行)でデータを表現しつつ、各行が異なるカラムを持つことができる。列ごとにデータを保存するため、特定の列のデータを素早く検索する処理に適している。この特徴から、レコメンデーションエンジンやカタログ管理、不正検出、イベントログ管理などの用途に適する。Meta Platforms(旧Facebook)が開発したOSSの「Apache Cassandra」やApache Software FoundationのOSS「Apache HBase」がその一例だ。
NewSQL DBMSは、SQLを使用する新しい種類のRDBMSだ。一部のベンダーはNewSQLという名称を使わず、「分散SQLデータベース」と呼ぶ。NoSQLのような拡張性を備えると同時に、ACID特性(原子性、一貫性、独立性、耐久性)によってデータの整合性を確保する。NewSQL DBMSは、RDBMSの仕組みを持ちながら、分散処理や耐障害性の向上が可能な設計になっている。インメモリ処理の機能を備えていたり、クラウドインフラで利用できたりする点も特徴だ。RDBMSよりも機能がシンプルで軽量なため、運用や管理がしやすいという利点もある。
代表的なNewSQL DBMSとして、Cockroach Labsが開発したOSS「CockroachDB」、Googleのデータベースサービス「Google Cloud Spanner」、NuoDBの「NuoDB」、YugabyteDBの「YugabyteDB」などが挙げられる。
インメモリDBMSは、データを主にメモリ(RAM)で処理するDBMSだ。一般的なDBMSはHDDなどのストレージにデータを保存し、必要に応じて読み書きを実行するが、インメモリDBMSはそのプロセスを省略し、メモリで直接データを処理するため、応答時間を高速化できる。そのためDBMSはリアルタイムでデータ処理が求められるアプリケーションに適する。特に向いているのが、データのトランザクション処理(OLTP)と分析処理(OLAP)を同じデータベースで同時に実行するHTAP(ハイブリッドトランザクショナルアナリティカルプロセッシング)を必要とするシステムだ。HTAPはデータ処理とデータ分析の両方を、単一のDBMSで実行するための技術を指す。ただしインメモリデータベースはメモリの消費量が一般的なDBMSよりも増えるため、サーバのリソース管理が重要になる。インメモリデータベースの例として、SAPの「SAP HANA」やRedisが挙げられる。
列指向DBMSは、データをカラム単位で保存するDBMSだ。一般的なRDBMSはレコードごとにデータを保存するが、カラム指向データベースは列ごとにデータを保存するため、特定の列のデータだけを素早く検索することができる。この特徴から、データウェアハウス(DWH)のように、大量のデータを効率よく分析する用途に適する。特に同じ種類のデータが大量に格納される場合、データ圧縮の効果が高く、ストレージの使用効率の向上が見込める。カラム指向データベースの代表的な製品としては、Snowflakeの「Snowflake」やAmazon Web Services(AWS)の「Amazon Redshift」がある。
マルチモデルDBMSは、単一のDBMSで異なる形式や構造のデータを扱えるDBMSを指す。ユーザー企業は異なるDBMSに切り替えることなく、1つのDBMSで複数のデータ構造を管理できる。IBM Db2はRDBMSだが、列指向でデータを処理する機能も提供する。OracleのRDBMS「Oracle Database」やMongoDBなどのDBMSも、拡張機能を適用することでマルチモデルDBMSとして使える。Microsoftの「Microsoft Azure Cosmos DB」やProgress SoftwareのNoSQL DBMSの「MarkLogic」などの製品は、最初からマルチモデルDBMSとして開発された。
クラウドDBMSは、クラウドインフラで実行されるDBMSを指す。RDBMSやNoSQL DBMSなどさまざまな種類のDBMSがあり、ユーザー企業が構築や管理をする形態のものと、クラウドベンダーが運用を代行するマネージドサービスがある。
必要に応じてリソースを拡張、縮小できる点が、クラウドDBMSの利点だ。インフラとなるハードウェアの管理が不要なため、システムの運用負担を軽減できる。Microsoftの「Microsoft Azure」やGoogleの「Google Cloud」、AWSの同名サービスなどのクラウドサービス群が、サービスの一つとしてクラウドDBMSを提供している。
ハイブリッドDBMSは単一の製品で複数のデータベースエンジンを利用できるDBMSを指す。一般的に、RDBMSと複数のNoSQLエンジン、APIを組み合わせた構造になっている。例えばAltibaseのDBMS「Altibase」はインメモリデータベースとディスクデータベースの両方が利用可能なハイブリッドDBMSだ。DataStaxのハイブリッドDBMS「DataStax Enterprise」は、ハイブリッドクラウド(オンプレミスインフラとクラウドインフラを併用する形態)で利用可能なことが特徴だ。
DBMSの関連技術は進化を続けており、データベースの構築方法やサービスの提供方法に影響を与えている。主なトレンドを紹介する。