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 3 years have passed since last update.

Couchbase Lite機能解説:データベースの使い方

Last updated at Posted at 2021-10-08

はじめに

Couchbase Liteの利用に資するために、下記のドキュメントの内容(英語)を整理します。

初期化

APIを使用する最初のステップは、イニシャライザーを呼び出すことです。
初期化前に他のAPIメソッドが呼び出されると、例外が発生します。

例1.データベース初期化

// Initialize the Couchbase Lite system
CouchbaseLite.init();

データベース作成/オープン

Databaseクラスを使用して、新しいデータベースを作成したり、既存のデータベースをオープンすることができます。
データベース名とオプションでDatabaseConfigurationを渡します。

注意すべき点は次のとおりです。

  • データベースのオープン/作成は非同期プロセスです
  • 指定されたデータベースが指定された場所またはデフォルトの場所に存在しない場合は、新しいデータベースが作成されます
  • データベースは、ディレクトリを指定しない限り、デフォルトの場所に作成されます(参照:DatabaseConfigurationおよびDatabaseConfiguration.setDirectory()

ベストプラクティスは、データベースへのパスを常に明示的に指定することです。

「データベースファイルの検索」も参照してください。

例2.データベース作成/オープン

DatabaseConfiguration config = new DatabaseConfiguration();

config.setDirectory(context.getFilesDir().getAbsolutePath());

Database database = new Database(DB_NAME, config);

ここでは、データベースのディレクトリパスを指定しています。

データベースをクローズする

データベースを閉じるには、Database.close()を使用します。
ただし、注意すべき点がいくつかあります。

  • データベースを閉じることは同期操作であり、すぐに有効になります。
  • 開いていないデータベースを閉じることはできません。
  • データベースを開く(または作成する)ことは非同期であることに注意してください。したがって、オープン/作成を開始した直後にクローズを発行すると、そのプロセスが完了していない場合にエラーが発生する可能性があります。

データベースをクローズすると、アクティブなレプリケーション、リスナー、またはデータベースに接続されているライブクエリもすべてクローズされます。
レプリケーションを開始した直後にデータベースを閉じると、同期で例外が生成される可能性があります
(例:IllegalStateException: Attempt to perform an operation on a closed database)。

オープンしているすべてのデータベースをクローズすることをアプリケーションワークフローに組み込むことをお勧めします。

例3.データベースを閉じる

database.close()

データベースの暗号化

データベースの暗号化はEnterprise Editionのみで利用できる機能です。

Java上のCouchbase Liteには、データベースを暗号化する機能が含まれています。これにより、モバイルアプリケーションは、データがデバイスに保存されているときに、保存されているデータを保護できます。データベースの暗号化に使用されるアルゴリズムは256ビットAESです。

暗号化を有効にするには、DatabaseConfiguration.encryptionKeyプロパティを選択した暗号化キーに設定する必要があります。データベースをオープンするたびに、この暗号化キーを指定します。

DatabaseConfiguration config = new DatabaseConfiguration();
config.setEncryptionKey(new EncryptionKey("PASSWORD"));
Database database = new Database(DB_NAME, config);

Couchbase Liteはキーを保持しません。キーを管理し、AppleのキーチェーンやAndroidのキーストアなどのプラットフォーム固有の安全なキーストアに保存するのはアプリケーションの責任です。

暗号化されたデータベースは、最初に暗号化に使用されたのと同じ言語SDK(Swift、C#、Java、Java(Android)、またはObjective-C)でのみ開くことができます。たとえば、データベースがSwift SDKで暗号化されてからエクスポートされた場合、データベースはSwift SDKでのみ読み取り可能になります。

データベースファイルの検索

デフォルトでは、JavaのCouchbase Liteデータベースは、カレントディレクトリの下の<databaseName>.cblite2というディレクトリに作成されます 。

この場所は、DatabaseConfigurationメソッドによって設定されます。データベースの場所を明示的に設定するには、常にこれを使用する必要があります。これを行う方法については、次の例を参照してください。

DatabaseConfiguration thisConfig = new DatabaseConfiguration();
thisConfig.setDirectory("yourDBpath");
Database thisDB = new Database("db", thisConfig);

コマンドラインツール

cblite は、Couchbase Lite2.xデータベースを検査およびクエリするためのコマンドラインツールです。

couchbaselabsのGitHubリポジトリからダウンロードしてビルドできます。このcbliteツールは、Couchbaseサポートポリシーではサポートされていないことに注意してください。

トラブルシューティング

診断情報の最初のソースとして、Couchbaseのコンソールログを使用する必要があります。デフォルトのログレベルの情報が不十分な場合は、データベースエラーに焦点を当てて、より詳細なメッセージを生成できます。例4を参照してください。

ログの使用の詳細については、「ログの使用」を参照してください。

例4.データベースのログレベルを上げる

Database.log.getConsole().setDomain(LogDomain.DATABASE);
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?