Realm مقابل Core Data
في تطوير iOS والموبايل، لاعبان قويان في عالم قواعد البيانات المحلية: Realm التفاعلي متعدد المنصات، وCore Data إطار عمل Apple المتكامل للرسم البياني للكائنات.
قوة SQLite مع أمان أنواع Dart — الخيار الطبيعي لمن يعرف SQL
سرعة وبساطة NoSQL — لكن يجب أولًا اختيار الحزمة الصحيحة
الإجابة الواضحة: إذا كان نموذج بياناتك علائقيًا ولدى فريقك معرفة بـ SQL، فإن Drift هو الرهان الأكثر أمانًا — الإصدار 2.35.0 بتاريخ 2026-09-09، وآخر commit في 2026-09-24، وأكثر من 1.3 مليون تنزيل شهريًا. أما بالنسبة لـ Isar، فالشرط الحاسم الوحيد هو كتابة isar_community في pubspec.yaml؛ فالحزمة الأصلية isar متجمدة منذ 2023. الفورك حيّ، وما زال خيارًا معقولًا للبيانات الشبيهة بالمستندات (التخزين المؤقت، الملاحظات ذات المخطط المرن).
| الفئة | Drift | Isar |
|---|---|---|
| الأداء | 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 - تعريف الجدول + استعلام تفاعلي (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_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' اليوم.