はじめに
Couchbase Mobileは、エッジコンピューティングを実現するデータプラットフォームであり、AndroidやiPhone(Swift, Objective-C)のようなスマートフォンやエッジデバイス用の組込データベースであるCouchbase Liteと、Couchbase Server、そしてそれらの間のデータの同期を実現する、Sync Gatewayから構成されます。
エッジコンピューティングを実現するCouchbase Mobile紹介:Sync Gatewayによるデータ同期におけるアクセス制御モデルでは、データ同期に参加するモバイル端末/ユーザーの観点からみたコントロールについて紹介しました。
本稿では、データ同期されるデータ(ドキュメント)の観点からみたコントロールについて紹介します。
Couchbase Mobileアプリケーション開発へのロードマップもご覧ください。
設定方法
Sync Gatewayは、同期プロセスをカスタマイズするためのJavaScript関数の使用をサポートしています。
次のいずれかの方法で設定することができます。
- 構成ファイル内のインラインJavascript関数
- 外部Javascriptファイル
- 外部HTTP/HTTPSエンドポイント
3.0ベータより前は、構成ファイル内のインライン関数で設定が行われていました。
3.0ベータ以降、Javascript関数の構成は、管理REST APIを使用して行われます。
外部JavaScript関数をHTTPSエンドポイントでホストし、サーバーCA証明書と組み合わせたセキュアな接続を実現することができます。
関数定義
インラインJavaScript関数は、バックティックペア(``)で囲む必要があります。
//
{
// ... may be preceded by additional configuration data as required by the user ...
"databases": {
"getting-started-db": {
"bucket": "getting-started-bucket", ①
"import_docs": true,
"num_index_replicas": 0,
"import_filter": `
function(doc) {
if (doc.type != "mobile") { ②
return false
}
return true
}`,
"sync": `function (doc, oldDoc) {
if (doc.sdk) {
channel(doc.sdk);
}
}`
}
}
// ... may be followed by additional configuration data as required by the user ...
}
//
①インポートフィルターを設定するバケット名。
②「type」プロパティが、「mobile」に等しいをドキュメントのみをインポートします。
最後に
インポートフィルターを、次のような目的で使うことが考えられます。
- ドキュメントの種類に応じて、モバイルでの利用の必要有無を反映させる。
- ドキュメントの作成年月日に応じて、モバイルでの利用の必要有無を反映させる。
- アプリケーションが設定するフラグによって、インポート処理実行の必要性を反映させる。
上記にとどまらない、アプリケーションの要件に応じた、利用方法が実現できることは、フィルタリング機能が、JavaScript関数として提供されている利点といえるでしょう。
参考情報