Drift vs Isar مقارنة

قوة SQLite مع أمان أنواع Dart — الخيار الطبيعي لمن يعرف SQL

VS
Isar

سرعة وبساطة NoSQL — لكن يجب أولًا اختيار الحزمة الصحيحة

9 دقائق للقراءةقواعد البيانات

الحكم السريع

الإجابة الواضحة: إذا كان نموذج بياناتك علائقيًا ولدى فريقك معرفة بـ SQL، فإن Drift هو الرهان الأكثر أمانًا — الإصدار 2.35.0 بتاريخ 2026-09-09، وآخر commit في 2026-09-24، وأكثر من 1.3 مليون تنزيل شهريًا. أما بالنسبة لـ Isar، فالشرط الحاسم الوحيد هو كتابة isar_community في pubspec.yaml؛ فالحزمة الأصلية isar متجمدة منذ 2023. الفورك حيّ، وما زال خيارًا معقولًا للبيانات الشبيهة بالمستندات (التخزين المؤقت، الملاحظات ذات المخطط المرن).

DriftIsar
اقرأ الخلاصة كاملة

مقارنة الدرجات

جارٍ تحميل الرسم البياني...

التقييم التفصيلي

التقييم التفصيلي: Drift و Isar — درجات كل فئة من 10
الفئةDriftIsar
الأداء
8/10
8/10
سهولة التعلّم
6/10
8/10
النظام البيئي
9/10
5/10
المجتمع
8/10
5/10
سوق العمل
6/10
5/10
الاستدامة المستقبلية
9/10
6/10

الإيجابيات والسلبيات

Drift

الإيجابيات

  • يمكنك كتابة الاستعلامات إما بـ SQL يدويًا أو عبر واجهة Dart fluent API — وكلاهما يُتحقّق منه وقت الترجمة (compile-time)
  • النمذجة العلائقية (join، المفتاح الأجنبي، العروض view) أقوى بكثير مقارنة بـ NoSQL
  • يمكنك الاستماع الحي لنتائج الاستعلام عبر تدفقات .watch() التفاعلية
  • يدعم عدة خلفيات (backends) بما فيها sqflite وsqlite3 الأصلي وحتى Postgres (drift_postgres)
  • تطوير نشط: أحدث إصدار 2.35.0 (9 سبتمبر 2026)، وآخر commit على GitHub في 24 سبتمبر 2026
  • يحمل وسم flutter-favorite على pub.dev ويحصل على 160/160 نقطة pub — ثقة عالية في النظام البيئي
  • دعم Web/WASM قيد التطوير النشط، وهو ميزة للمشاريع متعددة المنصات
  • مرخّص بموجب MIT، مجاني بالكامل، ونموذج تمويل مستدام عبر GitHub Sponsors

السلبيات

  • drift_dev وbuild_runner إلزاميان — يجب إعادة تشغيل توليد الكود عند كل تغيير في المخطط
  • منحنى التعلّم أكثر حدة بالنسبة للفرق التي لا تعرف SQL
  • كود متكرر (boilerplate): تعريف الجداول وDAO واستراتيجية الترحيل تُكتب يدويًا
  • تتطلب عمليات الترحيل (migrations) كودًا يدويًا أكثر مقارنة بتطور المخطط الضمني في Isar
  • استخدام العزل (isolate) ليس افتراضيًا — يجب تفعيله بوعي عبر `NativeDatabase.createInBackground`

الأنسب لـ

تطبيقات Flutter متوسطة إلى كبيرة الحجم ذات نموذج بيانات علائقيالفرق التي تمتلك معرفة بـ SQL والمطوّرون المنتقلون من الباك-إند إلى الموبايلمعماريات offline-first التي تتطلب استعلامات/عمليات join معقدةالمشاريع متعددة المنصات التي تستهدف الويب (WASM)قواعد الأكواد الكبيرة التي يُتوقّع لها صيانة طويلة الأمد

Isar

الإيجابيات

  • لا يتطلب معرفة بـ SQL — تحفظ فئة Dart المُعلَّمة مباشرة
  • البحث بالنص الكامل (full-text search) مدمج ويعمل مباشرة دون إعداد
  • الفهرسة المتعددة (composite/multi-entry) ومعاملات ACID مدمجة
  • دعم استعلامات متوازية متعددة العزلات (multi-isolate) افتراضيًا — في Drift هذا خيار بسطر واحد
  • منحنى التعلّم أكثر انبساطًا مقارنة بـ Drift: كود متكرر أقل
  • التطوير مستمر عبر فورك المجتمع isar_community (آخر commit في 8 سبتمبر 2026)
  • مرخّص بموجب Apache-2.0، مجاني بالكامل

السلبيات

  • ⚠️ الحزمة الأصلية `isar` مهجورة فعليًا: آخر إصدار في 2023-04-25، وآخر push للكود على GitHub في 2025-06-14 — يجب عدم استخدامها في مشروع جديد
  • الحزمة الصحيحة هي `isar_community` (الفورك) — لكن حجم تنزيلاتها على pub.dev يعادل نحو 1/13 من حجم تنزيلات Drift
  • الاستعلام العلائقي (join، دوال النافذة window) ليس بقوة Drift
  • بيان الخصوصية لـ iOS موجود فقط في الفورك: `isar_community_flutter_libs` يتضمّن `PrivacyInfo.xcprivacy`، بينما الحزمة القديمة `isar` (3.1.0+1، 2023-04-25) إصدار سابق لوجود هذا البيان
  • لا يزال توليد الكود عبر `isar_community_generator` (أو `isar_generator` في الحزمة القديمة) وbuild_runner مطلوبًا — ليس خاليًا تمامًا من الكود المتكرر
  • صفحة البنشمارك الرسمية لم تعد منشورة (isar.dev/benchmarks.html تُعيد 404) — لا يوجد مرجع أداء حديث وقابل للتحقق

الأنسب لـ

نماذج بيانات شبيهة بالمستندات وغير علائقيةالنماذج الأولية السريعة ومنتجات MVP (كود متكرر أقل)تطبيقات offline-first التي تحتاج إلى بحث بالنص الكاملالفرق الصغيرة التي لا تعرف SQL

مقارنة الكود

Drift
// Drift - تعريف الجدول + استعلام تفاعلي (drift.simonbinder.eu/setup/)
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;

part 'database.g.dart';

class Todos extends Table {
  IntColumn get id => integer().autoIncrement()();
  TextColumn get title => text().withLength(min: 1, max: 200)();
  BoolColumn get isDone => boolean().withDefault(const Constant(false))();
}

@DriftDatabase(tables: [Todos])
class AppDatabase extends _$AppDatabase {
  AppDatabase() : super(_openConnection());

  @override
  int get schemaVersion => 1;

  // تدفق تفاعلي: يُبث تلقائيًا كلما تغيّر الجدول
  Stream<List<Todo>> watchPendingTodos() {
    return (select(todos)..where((t) => t.isDone.equals(false))).watch();
  }

  Future<int> addTodo(String title) {
    return into(todos).insert(TodosCompanion.insert(title: title));
  }
}

LazyDatabase _openConnection() {
  return LazyDatabase(() async {
    final dbFolder = await getApplicationDocumentsDirectory();
    final file = File(p.join(dbFolder.path, 'db.sqlite'));
    return NativeDatabase.createInBackground(file);
  });
}
Isar
// isar_community - تعريف المجموعة (collection) + استعلام (نمط readme الخاص بـ pub.dev/packages/isar_community)
import 'package:isar_community/isar.dart';
import 'package:path_provider/path_provider.dart';

part 'todo.g.dart';

@collection
class Todo {
  Id id = Isar.autoIncrement;

  @Index()
  late String title;

  bool isDone = false;
}

Future<Isar> openDb() async {
  final dir = await getApplicationDocumentsDirectory();
  return Isar.open(
    [TodoSchema],
    directory: dir.path,
  );
}

Future<void> addTodo(Isar isar, String title) async {
  final todo = Todo()..title = title;
  await isar.writeTxn(() async {
    await isar.todos.put(todo);
  });
}

// استعلام تفاعلي: يُبث تلقائيًا كلما تغيّرت المجموعة
Stream<List<Todo>> watchPendingTodos(Isar isar) {
  return isar.todos.filter().isDoneEqualTo(false).watch(fireImmediately: true);
}

الخلاصة

الإجابة الواضحة: إذا كان نموذج بياناتك علائقيًا ولدى فريقك معرفة بـ SQL، فإن Drift هو الرهان الأكثر أمانًا — الإصدار 2.35.0 بتاريخ 2026-09-09، وآخر commit في 2026-09-24، وأكثر من 1.3 مليون تنزيل شهريًا. أما بالنسبة لـ Isar، فالشرط الحاسم الوحيد هو كتابة isar_community في pubspec.yaml؛ فالحزمة الأصلية isar متجمدة منذ 2023. الفورك حيّ، وما زال خيارًا معقولًا للبيانات الشبيهة بالمستندات (التخزين المؤقت، الملاحظات ذات المخطط المرن).

احصل على استشارة مجانية
الأسئلة الشائعة

الأسئلة الشائعة

في مشروع جديد، استخدم isar_community بالتأكيد. الحزمة الأصلية isar لم تُحدَّث على pub.dev منذ 2023-04-25، ولا على GitHub منذ 2025-06-14 — أصبحت مهجورة فعليًا. isar_community هو الفورك النشط الذي تولّته المجتمع، وهو الحزمة التي يجب أن يُقصد بها 'Isar' اليوم.

مقالات مدونة ذات صلة

عرض جميع المقالات

مشاريع ذات صلة

عرض جميع المشاريع
جميع المقارنات