IsarはFlutterのための高機能NoSQLデータベース
「Isar」はFlutterで数行のコードだけで利用可能なローカルデータベースです。Flutter専用に設計されたNoSQLデータベースで、追加の設定やボイラープレートは不要で、開発の速度と効率を向上させます。
「Isar」の特徴
公式サイトでは、「Isar」の特徴を次のように謳っています。
- 高い拡張性: 数十万件のレコードを効率的に格納し、非同期でクエリを実行可能。
- 豊富なデータ管理機能: 複合インデックスや複数条件対応クエリ、JSONサポートを含む多彩な機能。
- 全文検索: 複数条件でのインデックス作成を通じて、容易にレコードを全文検索。
- ACIDセマンティクス: トランザクションは自動的に処理され、エラー時には変更がロールバック。
- 静的型付け: クエリはコンパイル時にチェックされ、実行時エラーの心配がありません。
- マルチプラットフォーム対応: iOS、Android、デスクトップで使用可能。
- 非同期処理と並列操作: 並列クエリ操作とMulti-Isolateがすぐに利用可能。
- オープンソース: 全てのコンポーネントがオープンソースで提供され、永久に無料!
「Isar」の導入
インストール
pub
を使用して、ライブラリと開発用ツールをインストールします。
flutter pub add isar isar_flutter_libs path_provider
flutter pub add -d isar_generator build_runner
コレクションの型を定義
データ構造を定義するファイルを作成します。ここでは、id, 氏名, 年齢の3つの項目を持つユーザー情報を扱うコレクションを定義してみます。
user.dart
というファイルを作成し、@collection
のアノテーションを付けたクラスを定義します。
この時点dはuser.g.dart
は存在しないためエラーになります。
import 'package:isar/isar.dart';
part 'user.g.dart';
class User {
Id id = Isar.autoIncrement; // id = nullでも自動インクリメントされます。
String? name;
int? age;
}
コード生成の実行
次のコマンドを叩いて、UserコレクションのCURD操作を行うコードを自動生成します。
flutter pub run build_runner build
このコマンドでuser.g.dart
が生成されます。
IsarのCRUD操作
コレクションに対するCRUD(作成、読み取り、更新、削除)操作を行う方法を詳しく見ていきましょう。
Isarインスタンスの生成
Isarを使用するには、まずIsarのインスタンスを生成する必要があります。これはアプリケーションのドキュメントディレクトリにデータベースを作成することで行います。
import 'package:isar/isar.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sample_app/models/user.dart';
final dir = await getApplicationDocumentsDirectory();
final isar = await Isar.open(
[UserSchema],
directory: dir.path,
);
データの取得
Isarでは、コレクションの全データを簡単に取得できます。次のコードは、すべてのユーザー情報を取得する方法を示しています。
final allUsers = isar.users.where().findAll();
データの追加
新しいユーザーをデータベースに追加するには、新しいUser
インスタンスを作成し、writeTxn
メソッドを使用して保存します。
final newUser = User()..name = "Alice" ..age = 30;
await isar.writeTxn(() async {
isar.users.put(newUser);
});
データの更新
既存のデータを更新する場合も、put
メソッドを使います。Isarは自動的にidを基に既存のデータを更新します。
final userToUpdate = await isar.users.get(someId);
if (userToUpdate != null) {
userToUpdate.name = "Updated Name";
await isar.writeTxn(() async {
isar.users.put(userToUpdate);
});
}
データの削除
データの削除はdelete
メソッドを使って行います。idを指定することで特定のデータを削除できます。
await isar.writeTxn(() async {
isar.users.delete(someId);
});
条件を指定してデータを取得
特定の条件を満たすデータのみを取得することも可能です。例えば、特定の名前のユーザーを検索するには次のようにします。
final specificUsers = isar.users.filter().nameEqualTo("Alice").findAll();
件数、平均、最大値、最小値を取得
Isarは集計関数もサポートしています。ユーザーの年齢の平均値を取得するには以下のようにします。
final averageAge = await isar.users.where().average().ageProperty();
まとめ
このように、Isarとコード自動生成の機能よって、データのCRUD操作を簡単かつ効率的に行うことができるのが「Isar」の最大の特徴です。
0 件のコメント:
コメントを投稿