分散データベースは、複数のデータベースをネットワーク上に分散させつつ、ひとつのデータベースのように活用する仕組みです。通信にかかる負荷が少なく、障害にも強いという特徴があります。本記事では、従来のデータベースが抱える課題を解説し、分散型SQLデータベースのメリットや、またMicrosoft Intelligent Data Platformにも認定されている「YugabyteDB」の特徴についても紹介します。
分散データベースとは?
分散データベースとは、ネットワーク上に複数あるデータベースを、まるでひとつのデータベースのようにして使う仕組みを指します。たとえば、工場や支社、店舗において、それぞれの場所にデータベースを設置し同期している状況が分散データベースということです。
分散データベースの特徴は、その透過性にあります。ユーザがデータベースの位置を気にすることなく利用できる位置的な透過性や、データの格納場所が変更されても影響がなく利用できるという移動における透過性などです。また、ひとつの場所で障害が起きても、ほかのデータベースは影響を受けず、代替することでデータベースを利用し続けることができるという特徴もあります。
従来のデータベースの課題
データベースと言ってもさまざまな種類があり、表形式のテーブルを使った構造化データのリレーショナルデータベース(RDBMS)と、それ以外のJSONやXMLなどを使った非構造化データのNoSQLデータベースがあります。
RDBMSは、ACIDトランザクションといわれる、いわゆるデータの一貫性とSQLの機能を持ち合わせてはいるものの、拡張性や可用性、地理分散を実現するためにはインフラシステムでのクラスタ構成やミドルウェアの導入を考慮する必要がありました。
RDBMSでは難しい部分を補ったのがNoSQLであり、拡張性、可用性、地理分散を強みとするものの、RDBMSが得意とする部分を持ち合わせておらず、SQLとnoSQLの両方をいいところ取りができるデータベースが、今必要とされています。
分散SQLデータベースとは?
先述のSQLとnoSQLの両方をいいところ取りができるデータベースとして登場したのが、『分散SQLデータベース』という概念です。現在、分散SQLデータベースの代表的なサービスとして、Google Cloud Spanner が挙げられます。これは、2012年に“Spanner: Google’s Globally Distributed Database(*1)”として論文が発表され、Google内部で利用されていたものですが、2017年からはGoogle Cloud Spannerとして一般ユーザも利用可能となっています。
このSpannerの一番の特徴は、「トランザクション処理の大規模分散処理」と実現したことにあります。いわゆるACID特性を実装しているということになります。また、SQLインターフェースを提供していることやC# 、 C++ 、 Go 、 Java 、 Node.js 、 PHP 、 Python 、 Ruby などのさまざまな言語に対応していることも大きな特徴になります。
分散型SQLデータベースのメリット
分散SQLデータベースの代表的なメリットを5つご紹介します。
SQLが利用可能
分散型SQL データベースでは今まで通りのSQL を利用できます。そのため、技術者の再教育が不要であり、これまでのデータベースからの乗り換えもスムーズです。
またデータの整合性の確保や検索性の観点からもSQL が使えることは大きなメリットです。
一貫性の確保
前述のとおりSQL を利用するためデータの一貫性を確保することができます。クラウド環境からあらゆるデータが参照され書き換えられる現在ではデータの一貫性は非常に重要です。
拡張性の確保
一方で従来型のSQL データベースは拡張性に課題がありました。これは、ビックデータの活用など大量のデータを処理しなければならない環境においては大きなデメリットでした。分散型SQL データベースはノードが追加されると自動的にデータを割り振る機能があるため、ノードを追加するだけで簡単かつ迅速にスケーリングが可能です。
地理的な分散
分散型SQL データベースはデータベースを地理的に分散させたうえでデータを同期することが可能です。これにより、あらゆる場所から高速にアクセスできるほか、大規模な災害にも対応可能です。
障害発生時の回復力
分散型SQL データベースは各データを地理的な分散も考慮したうえで複数のノードに割り振っています。障害発生時には自動的に他のノードのデータに切り替わることでサービスを継続します。
分散データベースのデメリット
分散データベースですが、運用にあたっていくつか注意点もあります。
個々のセキュリティ対策が必要である
データの漏洩や破壊を防ぐため、複数のコンピュータそれぞれにセキュリティ対策が求められます。加えて、ネットワーク上でやり取りが行われることから、ファイアウォールなども設置しなければなりません。
また、セキュリティ性を高めるには、分散システムであることを外部に知られないようにするという対策も必要です。もし分散システムであることが知られていたとしても、それぞれのコンピュータの所在やコンピュータのスペック、利用しているOSなどの情報が漏れないように注意しなければなりません。
管理の手間がかかる
分散型では、複数のコンピュータを扱うため管理の手間がかかります。ソフトウェアのインストールおよびアップデートもすべてのコンピュータで行う必要があり、ネットワークに異常がないかなどの監視も行わなければなりません。
こういった理由から、分散データベースを効率的に運用するには、インストールおよびアップデート、システム管理などを遠隔でできる環境やネットワークを監視できるシステムを導入する必要があります。
DX時代に最適な分散型SQL DB「YugabyteDB」とは?
YugabyteDBは、クラウドネイティブなオープンソースの分散型SQLデータベースです。Google Spanner の設計にインスピレーションを得て、アメリカのYugabyte社により開発されました。
YugabyteDB は、PostgreSQLと高い互換性があり、一貫性・拡張性も両立させています。特にアプリケーションの拡張に柔軟に対応し、アクセスパターンに合わせたシームレスな連携が可能です。さらに、必要に応じて柔軟に拡張できることから、大規模なデータも高速で処理できます。
ここからは、YugabyteDBの特徴を3つ解説します。
あらゆるデータインフラに対応
あらゆるデータインフラに対応できるのは、YugabyteDBの大きな強みです。クラウドやオンプレミス環境だけでなく、Kubernetes、OpenShiftといったコンテナプラットフォームや仮想環境にも対応しています。また、マルチクラウドおよびハイブリッドクラウドでも利用できるため、どのような環境下でも便利に利用可能です。
なお、YugabyteDBでは、アプリケーションの要件に応じて、環境や構成を選択できるデプロイメントパターンおよび構成オプションも用意されています。
高い耐障害性・一貫性
近年、多くの企業で事業継続計画(BCP)の一環として、自然災害などの緊急事態が発生した際の早期復旧など、事業を継続するための対策が重要視されています。
YugabyteDBは、ひとつの地点で障害が起きても、ほかの地点にあるシステムが処理を継続することが可能です。そのため、自然災害を含むさまざまな障害が起きても、すべてのサービスを中断することなく継続して利用できます。
また、BCPとして役立てられるだけでなく、個人情報を含む機密性のあるデータを国内や特定のデータセンターに保管するといった施策にも対応できます。
そして、SQLとの高い互換性を持ち、水平公の拡張性を備えながら、データの一貫性の両方を享受できるのが大きな特徴です。
柔軟な利用オプションと運用管理の自動化
より柔軟にYugabyteDBを活用するには、用意されたオプションを利用することで実現できます。YugabyteDBでは、「YugabyteDB Managed」および「YugabyteDB Anywhere」という2つのオプションが利用でき、それぞれの特徴は以下のとおりです。
- YugabyteDB Managed
フルマネージドのDBaaS サービスです。YugabyteDB の基本機能に加え、GUI管理コンソールやバックアップの自動化、自動アップグレード、モニタリング・アラートなどの機能が利用できます。また、YugabyteDBをわずか数分で稼働させることが可能です。YugabyteDB Managedの利用により、分散データベースの煩雑な運用・管理が効率化し、重要業務に集中できます。 - YugabyteDB Anywhere
広範囲にデータベースを管理できるオプションです。オンプレミスやクラウドなど、あらゆる環境下で容易に配置でき、運用・管理できます。基本機能に加えて、構築およびDay2運用の自動化機能が追加されており、GUI管理コンソールやバックアップの自動化、モニタリング・アラートが利用可能です。おもに大規模な企業に向いており、広範囲にわたってより便利なデータベース管理が実現できます。
また2.14のバージョン(最新のバージョンは2.15)では、証明書のシンプルで自動的な管理や、転送データの保護などセキュリティ面の大幅な向上が図られるなど、機能も強化されています。
まとめ
分散データベースは、複数あるデータベースをひとつのデータベースのように活用するため、ユーザがデータの場所を意識することはありません。分散データベースの利用により、通信負荷の軽減や自然災害などの障害への対策、コスト削減にも有効です。
「YugabyteDB」は、PostgreSQLと高い互換性を持つ分散型SQLデータベースです。一貫性・拡張性に優れ、高い可用性や処理性能も併せ持っています。オンプレミスやクラウド、マルチクラウドなどのあらゆるデータインフラに対応し、高い耐障害性からBCP対策としても有効です。また、YugabyteDB ManagedおよびYugabyteDB Anywhereなどのオプション利用により、分散データベースにおける煩雑な運用・管理の効率化が実現します。
また、YugabyteDB Managed on Azureが発表され、15のAzure regionを新たに利用できるようになっています。これにより、よりシームレスに他のAzureサービスの連携が実現され、YugabyteDB Managed on Azureは、Azure Marketplaceよりサインアップすることができます。