$30 off During Our Annual Pro Sale. View Details »

そのローカルDB、プロジェクトに合ってますか? 明日から変える最適なDB

そのローカルDB、プロジェクトに合ってますか? 明日から変える最適なDB

Avatar for Kosei Akaboshi (akaboshinit)

Kosei Akaboshi (akaboshinit)

November 13, 2025
Tweet

Transcript

  1. ベンチマーク実施環境 iPhone 15 Pro Max Flutter 3.35.7 / iOS 26.1

    パッケージ バージョン SharedPreferences 2.2.3 Hive 2.2.3 Isar 3.1.0 Sembast 3.8.5+2 Sqflite 2.3.3+1 Drift 2.29.0 Flutter Kaigi 2025 9
  2. Insert Single(1000件) DB 平均時間 評価 SharedPreferences 48.40ms 最速 Hive 72.59ms

    高速 Isar 155.26ms 速い Sembast 285.04ms 普通 Sqflite 823.17ms 遅い Drift 987.26ms 遅い Flutter Kaigi 2025 10
  3. Read All 結果 DB 平均時間 評価 Hive 0.27ms 圧倒的 Sembast

    0.81ms 高速 Isar 4.22ms 速い Drift 5.68ms 速い SharedPreferences 5.80ms 速い Sqflite 5.93ms 速い Flutter Kaigi 2025 11
  4. Query(limit 100) DB 平均時間 評価 Sembast 0.17ms 最速 Hive 0.36ms

    高速 Sqflite 1.84ms 速い Drift 2.28ms 速い Isar 3.53ms 速い SharedPreferences 6.01ms 普通 Flutter Kaigi 2025 12
  5. Update Random(100回) DB 平均時間 評価 Hive 0.24ms 圧倒的 SharedPreferences 0.40ms

    高速 Sembast 0.70ms 速い Isar 0.75ms 速い Sqflite 1.72ms 速い Drift 2.22ms 速い Flutter Kaigi 2025 13
  6. Batch Insert(100 batches of 10) DB 平均時間 評価 Isar 47.55ms

    最速 SharedPreferences 48.24ms 高速 Hive 85.73ms 速い Sembast 182.20ms 普通 Sqflite 205.34ms 遅い Drift 209.47ms 遅い Flutter Kaigi 2025 14
  7. Adapterパターンの実装例 abstract class DatabaseAdapter { Future<void> initialize(); Future<void> insert(Map<String, dynamic>

    data); Future<List<Map<String, dynamic>>> readAll(); Future<void> update(String id, Map<String, dynamic> data); Future<void> delete(String id); } class HiveAdapter implements DatabaseAdapter { // Hive specific implementation } class DriftAdapter implements DatabaseAdapter { // Drift specific implementation } Flutter Kaigi 2025 27