1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

なぜ、Couchbaseなのか?〜モバイル/エッジコンピューティングプラットフォームとしての観点から

Last updated at Posted at 2021-11-30

はじめに

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についての記事を以下の投稿で整理していますので、ご関心に応じて、参照してみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?