COLUMN
2022年1月16日
ざっくり、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では、ユーザー・グループ・ロールの設定にしたがって、APIの戻り値を自動的にフィルタリングします。また、データベースのレコードごとに状態を設定でき、その状態遷移により柔軟なワークフローを実現できるんです。
Hexabaseデータストアの利点
こうした特徴により、Hexabaseを利用したシステムは、次の利点を得られます。
まず、データベースやシステム全体のキャパシティプランニングの手間を大きく減らすことができます。利用者の増加やアクセス量の増大により、データベースアクセスが増加しても、ボトルネックは発生しにくくなっています。
システム開発時には、システム全体のアクセス制御やワークフローをすぐに利用できるため、その分の開発期間やコストを大きく削減できます。これらの機能は、システムにあらかじめ組み込まれているので、設計ミスによるアクセス漏れなどなく、安心して利用できるでしょう。
さらに、こうした機能をマネージドサービスとして提供してます。多くのインフラエンジニアを確保しなくても、システムを開発・運用していけます。
リレーショナルデータベースとNoSQLデータベースと比較すると、その利点が分かりやすいでしょう。
現在、多くの企業がビジネスのDX(デジタルトランスフォーメーション)に取り組んでいます。そのとき、ビジネス開発に合わせて、システムも改善・成長していく必要があります。HexabaseのようなリレーショナルデータベースとNoSQLの特徴を備えたデータベースを利用することで、ビジネスの改善や成長に合わせて、柔軟にシステムを拡張していけるでしょう。