Realm Kotlin: دليل شامل مع أمثلة عملية
1. ما هي Realm Kotlin ولماذا تحتاجها؟
Realm Kotlin هي قاعدة بيانات محلية حديثة وسريعة وموجهة للكائنات، صُممت خصيصًا لنظام Kotlin Multiplatform (KMP). على عكس الحلول التقليدية مثل SQLite أو Room، لا تتعامل Realm مع الجداول والصفوف، بل تتعامل مباشرة مع كائنات Kotlin. هذا يعني أنك تتعامل مع البيانات كما تتعامل مع الفئات العادية، دون الحاجة إلى كتابة استعلامات SQL أو تعيين البيانات يدويًا. Realm Kotlin هي الوريث المباشر لمكتبة Realm الشهيرة للغة Java، ولكنها أعيدت كتابتها بالكامل من الصفر لـ Kotlin، مع دعم coroutines و Flow وتعدد المنصات (Android و iOS و macOS و JVM).
لماذا تحتاجها؟ في المقام الأول، لتسريع تطوير تطبيقات الهاتف المحمول. تتيح لك Realm تقليل كمية الكود النمطي (boilerplate) عند العمل مع التخزين المحلي. ما عليك سوى تعريف نموذج البيانات، وستقوم Realm تلقائيًا بإنشاء كل ما يلزم لحفظ وقراءة وتحديث وحذف الكائنات. بفضل الدعم المدمج للتدفقات التفاعلية (Flow من مكتبة kotlinx.coroutines)، تنعكس أي تغييرات في قاعدة البيانات فورًا على واجهة المستخدم، مما يجعلها مثالية لبنية MVVM. تشتهر Realm أيضًا بأدائها العالي: فهي تعمل على محرك C++ خاص بها، مما يوفر سرعة قراءة وكتابة قريبة من السرعة الأصلية.
حالات الاستخدام الرئيسية: تخزين البيانات من الخادم مؤقتًا، العمل في وضع عدم الاتصال، تخزين الهياكل المتداخلة المعقدة (مثل سلة التسوق في متجر إلكتروني أو سجل الدردشة)، ومزامنة البيانات بين الأجهزة عبر Realm Sync (خدمة MongoDB Atlas السحابية). Realm Kotlin ليست مجرد "أداة ORM أخرى"، بل هي محرك قاعدة بيانات متكامل يغير طريقة إدارة الحالة في التطبيق.
2. التثبيت
يتم تثبيت Realm Kotlin عبر نظام بناء Gradle. نظرًا لأن المكتبة موجهة لـ Kotlin Multiplatform، فإن التكوين يختلف قليلاً عن تبعيات Android القياسية.
ملاحظة مهمة: لا يتم تثبيت Realm Kotlin عبر pip (Python) أو npm (JavaScript). إنها مكتبة أصلية لـ JVM/Android/iOS.
أضف الكود التالي إلى ملف build.gradle.kts الجذري (على مستوى المشروع):
// build.gradle.kts الجذري
plugins {
id("io.realm.kotlin") version "1.16.0" apply false
}
ثم في ملف build.gradle.kts الخاص بالوحدة النمطية (app أو shared):
// build.gradle.kts الخاص بالوحدة النمطية
plugins {
kotlin("multiplatform")
id("io.realm.kotlin")
}
kotlin {
// إعداد الأهداف (Android, iOS, إلخ)
androidTarget()
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "shared"
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.realm.kotlin:library-base:1.16.0")
// لدعم coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
}
}
// ... مجموعات المصادر الأخرى
}
}
لمشروع Android فقط (بدون KMP)، يكون التكوين أبسط:
// build.gradle.kts (الوحدة النمطية :app)
plugins {
id("com.android.application")
kotlin("android")
id("io.realm.kotlin")
}
android {
// ... الإعدادات القياسية
}
dependencies {
implementation("io.realm.kotlin:library-base:1.16.0")
}
بعد مزامنة Gradle، تصبح المكتبة جاهزة للاستخدام.
3. البداية السريعة — مثال عملي بسيط
لنقم بإنشاء نموذج بيانات بسيط "مستخدم"