HarperDB とは
HarperDBとは、SQL、NewSQL、および MongoDB などの NoSQL 製品の機能を拡張および融合するためにゼロから構築されたDistributed Edge Databaseです。
Akamai Cloud Computing上で展開することができ、HarperDBのインスタンスは複数のリージョンに跨いで構成することができるため、グローバルに分散されたデータベースを簡単に用意することができます。
また、HarperDBは単なるデータベースだけではなく、HarperDBインスタンス上にクラスタリングされたアプリケーションの展開も行うことができます。
そのため、グローバルで同一のデータを利用して低レイテンシーでAPIを提供したいサービスなどの基盤に最適なプラットフォームです。
Akamai Cloud Computing に展開できるHarperDB
HarperDBは、Windows, Linux, Mac 上でも構築することができ(Install HarperDB
)、ネットワークを意識せず、様々な基盤を跨いだデータベースを構築することができるのが特徴です。
AkamaiとHarperDBはテクノロジーパートナーであり、Akamaiにて提供するHarperDBでは HarperDB Cloud としてAkamai Cloud Computing 上に展開されるマネージドサービスとして統合されております。
HarperDB Cloud はマネージド・サービスなのでインストールスクリプトを実行したり、OS等のメンテナンスを行う必要がありません。HarperDB の管理はHarperDB Studioから行うこともできます。。
HarperDBの仕組み
HarperDBのストレージアルゴリズムは、HarperDBのコアの要素となり、ダイナミックスキーマやその他すべてのユーザー向け機能を実現しています。HarperDBは、キーバリューストアであるLightning Memory-Mapped Database (LMDB)の上に構築されており、ストレージアルゴリズムによってデータを行/オブジェクトとしてテーブルに格納することができます。
このアルゴリズムは、個々のクエリ言語に対応できるようデータベースを抽象化して設計されており、SQLやNoSQLの言語を利用してデータを取り出す事が可能です。データベースへのアクセスには様々な言語からアクセスするためのSDK libraries、 BIツールなどから接続するためのDriversが用意されています。
また、HarperDBは各ノードごとにACIDに独立して準拠しています。
そのため、各ノードは読み込み、書き込みが独立して動作し、他のノードから読み書きをロックされることもありません。
HarperDBの各ノードは単一な書き込みプロセスを持ち、書き込みが受信された順序で処理が行われることを保証します。
書き込みされたデータはメモリに保存し、すぐにディスクにフラッシュされ、耐久性が確保されます。
ただし、ノード間でのACID準拠は保証されず、最終的な一貫性が「最後に書き込まれたデータが優先される」という方式で変更が伝播されます。
分散されたHarperDBインスタンス間のデータの同期はNATSを利用することでレプリケーションを実現しています。
そのため、メッシュ構成でデータベースを構築することが可能です。
データが取り込まれた際には自動的にDynamic Schemaによりインデックスが付与されます。データ型に依存することがないため、様々なデータでHarperDBを活用することができます。
インデックスの付与された単一テーブルの例
Akamai Cloud Computing 上にHarperDBを構築するメリット
HarperDBをAkamai Cloud Computingに構築することによりグローバルで低レイテンシーのアプリケーションを展開することができます。
Akamai Cloud Computingは執筆時点で27リージョンに展開しており、Generalized Edge Compute(Gecko)という構想を立ち上げ数多くの都市にコンピューティングを展開する予定です。
各HarperDBへのインスタンスはAkamai GTMによるDNSロードバランシングにより最適なロケーションへアクセスすることができるようになります。
HarperDB Applicationの活用
HarperDBは単なる分散データベースだけではなく、データベースが構築されるインスタンスにアプリケーションを構築することもできます。
HarperDB Applicationは、データベースの内容を取得するためのRestAPIを作成したり、JWT認証を行ったりなど、簡単に構築できるスキーマが用意されております。
また、カスタム機能を実装したい場合にはJavascriptにてコードを記載することで、要件に応じたアプリケーションも作成することができます。
Akamai CDNと親和性の高いHarperDB Applicationの1つの機能としてCachingがあります。
一部のAPIでは頻繁に値が変更されるため、長いTTLを設定できず、CDNのキャッシュによる高いオフロード率が確保できないケースがあります。
HarperDB上にキャッシュレイヤーを構築することで、APIやGraphQL、DBキャッシュなどを行うことができ、複数のユーザーや異なる地域でのデータ提供のユースケースに対して、低レイテンシーでデータを提供することができるようになります。
キャッシュ機能の実装はHarperDB Distributed Cacheとして提供しておりますので、ぜひご相談ください。
パフォーマンス
HarperDBはパフォーマンスにも優れており、人気のあるNoSQL製品であるMongoDBと比較しても引けを取らない性能を発揮します。
MongoDBはとても素晴らしい性能ですが、HarperDBはMongoDBより「読み取りが最大98倍」「書き込みが最大20倍」高速であることが上記リンク先のレポートから確認ができます。
このベンチマークはHarperDBとMongoDBの単一ノードに対して、データの読み取りと書き込みを複数パターン試験したものです。
また、テストにはApache JMeterを利用しており、HarperDBの接続はREST API、MongoDBの接続はMongoDB Java Driversを利用しています。
レポート結果から、書き込み性能に関しても優れているのですが、HarperDBは特に読み込み性能が優れており、参照負荷の高いサービスにも向いていることがわかります。
まとめ
AkamaiとHarperDBを組み合わせることで、分散されたコンピューティングリソースを活かして、グローバルで低レイテンシーなサービスを提供することが可能になります。
HarperDB Cloudの環境はAkamaiから纏めてご提供することができますので、ぜひ様々なユースケースにてご相談いただければと思います。
Akamai はCDN、セキュリティ、クラウドサービスを通じ、オンラインライフの力となり守っています。本稿でご紹介したような課題やご相談があれば、お気軽にお問い合わせください
関連記事
アカマイ・テクノロジーズ合同会社はQiitaでAkamai Cloud Computing Services関連など開発者向けの記事を掲載しております。