はじめに
Couchbaseは、NoSQLドキュメント指向データベースです。この表現は間違ってはいませんが、若干正確性を欠いてもいます。つまり、Couchbaseという名前を持つデータベースには、Couchbase ServerとCouchbase Liteというふたつが存在します。
ここではモバイル/エッジコンピューティングプラットフォームとしてのCouchbaseについて解説します。この観点においては、Couchbase ServerとCouchbase Liteの両方が重要な役割を持ちます。
以下、上述の本題に進む前にいくつか基本的な部分を整理します。
NoSQLドキュメント指向データベースについて
NoSQLドキュメント指向データベースについては、パブリッククラウドが提供する独自のテクノロジーを除くと、代表的なものとして以下の3つをあげることができます。
- MongoDB
- Apache CouchDB
- Couchbase Server
Couchbase Serverについて
Couchbase Serverについて、2021年11月に、以下の書籍を上梓しました。
Couchbase Serverに関しては、上記書籍に日本語で読める最新の情報が整理されています。
オンデマンド版のページの試し読みでは、ふたりの登場人物の会話形式によるプロローグを読むことができます。また、Kindle版のサンプルを入手いただくと、「第1章 Couchbase Serverとは何か」を全てお読みいただくことが可能です。
MongoDBとの違いや、Apache CouchDBとの関係などは、こちらをご参照ください。
モバイル/エッジコンピューティングプラットフォームとしてのCouchbase
モバイル(組込)データベース
モバイルアプリケーションで利用することのできるデータベースとしては、SQLiteが筆頭に上げられるのではないかと思います。あるいは、iOS開発者であれば、Core Dataを思い出すかもしれません。また、オブジェクト指向モバイルデータベースとして、Realmが知られています。
Couchbase Liteについて
Couchbase Liteは、NoSQLドキュメント指向モバイル(組込)データベースです。KotlinやSwiftなどの開発言語を利用して、AndroidやiOSアプリケーションで利用することができるだけでなく、JVM環境でも動かすことができます。また、3.0.0ベータでは、C/C++環境でも利用することができるようになりました。これにより、エッジデバイスでの利用の幅が格段に広がっています。
Couchbase Mobileとは何か?
ここで、新しい言葉が登場します。「Couchbase Mobile」とは、単体のデータベースないし何らかのテクノロジーを指す言葉ではなく、Couchbase LiteとSync Gatewayを含むカテゴリーとして用いられています。
Sync Gatewayとは、Couchbase LiteとCouchbase Serverとのデータ同期を行う技術です(具体的には、Couchbase Serverともに用いられる、Couchbase LiteとCouchbase Serverとの間でデータ同期を仲介するサーバーソフトウェアです)。
モバイルデータベースの重要性
スマートフォン上で利用されるモバイルアプリケーションの多くは、サーバーとデータを通信しながら稼働します。モバイルデータベースといえども、その中に格納されるデータは、モバイル端末で作成・保存・利用されれば十分なものばかりとは限らず、サーバーとの間で、データのやりとり〜サーバーからのデータの取得、サーバーへのデータの登録・更新〜が行われるデータを含むことがあります。サーバー(データベース)との間で、データ通信が行われる場合に、あえてローカルデータベースを持つ理由・利点としては、以下があります。
- ネットワーク依存の分離
- 通信ロジックの分離
それぞれについて、以下解説します。
ネットワーク依存の分離
オフラインファーストアプリケーション
ローカルデータベースを持つことによって、ネットワーク通信が行えない環境でもデータを利用しつつ、ネットワークが回復した場合にデータの同期を行う、という設計を指して「オフラインファーストアプリケーション」という言葉が使われます。
航空会社の従業員用のアプリケーションというユースケースもありますが、「ネットワーク通信が行えない環境」と言われても、非常に特殊なケースという印象を持つ方も多いかもしれません。その意味では、「オフラインファーストアプリケーション」は、「ユーザーエクスペリエンス向上」の中の一形態と考えた方が良いかもしれません。
ユーザーエクスペリエンス向上
モバイルデータベースを持たないアプリケーションが、サーバーからデータを取得して表示する場合、ユーザーがアプリケーションを立ち上げてから、データが画面が表示されるまでの期間は、ユーザー体験として、空白期間(単なる待ち時間)になります。これはウェブアプリケーションに典型的に見られる状況ということがいえます。
モバイルデータベースの存在は、「ネットワーク依存」をアプリケーション操作から分離するために役立たせることができます。当然ながら、モバイルデータベースを導入するだけで自動的に解決するようなものではなく、開発者が適切にユーザー体験をデザインする必要がありますが、ローカルデータベースとアプリケーションの関係をこうした観点から整理することができます。
通信ロジックの分離
ここまで、モバイルデータベースの意義について、ユーザーの利便性の観点から見てきました。「オフラインファーストアプリケーション」にしろ「ユーザーエクスペリエンス向上」にしろ、必要なのは、データの扱いをデザインすることであり、モバイルデータベースの導入は、その手段でしかないといえます。
そもそもデータベースは、アプリケーションアーキテクチャーにおける、データとロジックの分離を可能にするために存在しています。つまり、汎用的な処理(データマネジメント)を信頼性のある既存のテクノロジーに任せることで、開発者は利益を得ています。ローカルデータベースとリモートデータベースの同期を、データベースプロダクト(データプラットフォーム)に任せることにより、開発者はさらに、通信ロジックについても、信頼性のある既存のテクノロジーに任せることが可能になります。
これには、次のような副産物が伴います。
プレビルトデータベース
アプリケーションが利用するデータを、アプリケーションインストール時に、データベースとして同梱することにより、初期データへのアクセスと、それ以外のデータへのアクセス手法を区別する必要がなくなります。
マルチプラットフォーム/チャネル
同じサービスをモバイルアプリケーションとウェブアプリケーションの両方の形態で提供することは珍しくありません。このような場合に、モバイルアプリケーションではローカルデータベースを利用し、ウェブアプリケーションでは、ローカルデータベースと同期されたデータベースを利用することが考えられます。結果として、全体として、統一されたテクノロジーを採用することができます。
最後に
本稿では、データプラットフォームとして、Couchbaseを採用する意義について、モバイル/エッジコンピューティングプラットフォームとしての観点から概念的に整理しました。
テクノロジーを理解し、選定する際には、全体像、そして個々の要素について、具体的に把握することが欠かせません。
Couchbase Mobileについての記事を以下の投稿で整理していますので、ご関心に応じて、参照してみてください。