COLUMN
2022年01月17日
ざっくり、Hexabaseのデータベースを解説する
カテゴリー:システム開発, テクノロジー
タグ:データベース, バックエンド
Hexabaseは、多くのユーザーを抱えるWebサービスから、信頼性が求められる業務システムまで、幅広いシステムで利用できるバックエンドクラウドサービスです。
この記事では、Hexabaseの中核を担うデータベースについて解説します。
データベースとは
データベース(Database)とは、データを集中して管理・共有できるデータの集合体です。データベースを管理するツールを、データベース管理システム(DBMS)と呼びます。また、ネットワーク経由でリクエストに応答するDBMSをデータベースサーバーと呼びます。
多くのWebサービスや業務システムでは、データを管理するために、このデータベースサーバーを使っています。
ただし、どれもデータベースと呼ばれることがあるので、ちょっとややこしいですね。
データベース管理システムの種類
一般的に、システムのバックエンドで単一のデータベースとして使われているのがリレーショナルデータベースです。OracleやSQL Server・MySQL・PostgreSQLといったリレーショナルデータベース管理システム(RDBMS:Relational Database Management System)が有名です。
リレーショナルデータベースは、テーブル間を関連付けてデータを管理します。関連付けを変えることで、複雑な構造のデータを効率よく扱うことができます。また、トランザクション機能により、複数のデータの更新を確実にできます。
一方で注目を集めているのが、NoSQLデータベースです。これは、リレーショナルでないデータベースの総称です。キー・バリュー型、カラム指向、ドキュメント指向、グラフ指向など、用途に応じてさまざまな方式があり、膨大なデータの分散処理にも向いています。
リレーショナルデータベースとNoSQLを比較する
2つの方式を比較すると、次のようになります。
リレーショナルデータベースは、複雑なデータを効率よく管理しながら、トランザクションより、 データの一貫性を維持しやすいという特徴を持っています。
しかし、あらかじめデータベースの構造を決めておく必要があるため、システムを運用しながら、データ構造を変更していくのには大きな手間がかかります。また、多くのユーザーが同時にアクセスするような場合や、膨大なデータの分散処理に向かないといわれています。データベースの拡張にも大きなコストがかかります。
NoSQLは、分散型アーキテクチャと組み合わせることで、拡張性や耐故障性も向上させることができます。膨大なコンテンツとトラフィックを持つWebシステムのバックエンドなどで使われています。しかし、トランザクション処理を利用できない場合があり、 データの一貫性があまり求められない場合に使われています。
リレーショナルデータベースとNoSQLをどのように使い分けるか
こうした特徴から、リレーショナルデータベースは、あらかじめデータ構造が決まっていて変化の少ないシステムに向いています。変化が大きなシステムに利用する場合には、容量の増設や拡張に大きな手間がかかりますし、数十万人単位のユーザーがアクセスするとボトルネックになりやすい傾向があります。
一方、NoSQLデータベースは、システムが利用状況に応じて変化・成長していくシステムに向いています。
さらに最近では、NewSQLと呼ばれる、スケーラビリティや分散アーキテクチャを備えた新しい形のSQLデータベースが登場してきています。代表的なNewSQLデータベースに次のものがあります。
- Cloud Spanner
- CockroachDB
- TiDB
- YugabyteDB
—
Hexabaseデータストアの構成
私たちが2015年から開発してきたHexabaseも、こうしたデータベースの課題を解決することを目標のひとつにしていました。
そのために、複数のNoSQLデータべースを統合して、RDBMSライクな独自のデータストアを実現しました。つまり、NoSQLを元にしていながら、リレーショナルデータベースのように利用できるのです。
利用しているNoSQLデータべースのひとつは、スケーラブルなドキュメント指向データベースMongoDBです。そして、キャッシュにはインメモリベースのRedis、リレーションにはArangoDB、ユーザー情報と自動採番にはMySQ を採用しています。
どの機能にどのデータベース管理システムを利用するか、あらかじめ決まっています。アプリケーションの開発者は、どのデータベース管理システムを利用するか気にする必要はありません。
そして、このデータストアが、Kubernetes上で、Go言語で実装された独自のマイクロサービスフレームワーク上で稼働しています。
Hexabaseデータストアの特徴
Hexabaseのデータストアは、次の特徴を持っています。
Hexabaseデータストアの特徴
- スケーラビリティを確保
- リレーショナル機能とトランザクション機能をサポート
- アクセス制御とワークフローを統合
—
まずは、ドキュメント指向データベースMongoDBを中核にしたことで、スケーラビリティーを確保していることです。システムの成長・変更に柔軟に対応できます。
一方で、NoSQLデータベースでありながら、リレーショナル機能とトランザクション機能をサポートしています。そのため、リレーショナル機能により、システム開発時に、これまで培ってきたデータベース設計技術を活用できます。また、トランザクション機能により、データの一貫性を保ちやすくなっています。
なお、Hexabaseのトランザクションについては、開発ガイドのこちらのページで解説しています。
—
さらに、Hexabaseでは、アクセス制御やワークフローを統合しています。Hexabaseでは、ユーザー・グループ・ロールの設定にしたがって、APIの戻り値を自動的にフィルタリングします。また、データベースのレコード単位で状態を設定でき、その状態遷移により柔軟なワークフローを実現できるんです。
Hexabaseデータストアの利点
こうした特徴により、Hexabaseを利用したシステムは、次の利点を得られます。
まず、データベースやシステム全体のキャパシティプランニングの手間を大きく減らすことができます。利用者の増加やアクセス量の増大により、データベースアクセスが増加しても、ボトルネックは発生しにくくなっています。
システム開発時には、システム全体のアクセス制御やワークフローをすぐに利用できるため、その分の開発期間やコストを大きく削減できます。これらの機能は、システムにあらかじめ組み込まれているので、設計ミスによるアクセス漏れなどなく、安心して利用できるでしょう。
さらに、こうした機能をマネージドサービスとして提供してます。高度なセキュリティ対応をクラウド環境上で提供します。システム開発会社によるインフラの運用・保守の手間を大きく減らしながら、高い信頼性を確保できます。そのため、多くのインフラエンジニアを確保しなくても、システムを開発・運用していけます。
リレーショナルデータベースとNoSQLデータベースと比較すると、その利点が分かりやすいでしょう。
現在、多くの企業がビジネスのDX(デジタルトランスフォーメーション)に取り組んでいます。そのとき、ビジネス開発に合わせて、システムも改善・成長していく必要があります。HexabaseのようなリレーショナルデータベースとNoSQLの特徴を備えたデータベースを利用することで、ビジネスの改善や成長に合わせて、柔軟にシステムを拡張していけるでしょう。