
TinyBase: متجر تفاعلي فائق الخفة للتطبيقات المحلية أولاً
TinyBase هو مخزن بيانات تفاعلي صغير (~5–11 كيلوبايت)، مختبر بالكامل ومفتوح المصدر، يحتوي على فهرسة مدمجة، مقاييس، فرض مخطط، استعلامات، ومزامنة CRDT. تم تصميمه للتطبيقات المحلية أولاً ويعمل في أي بيئة تشغيل جافاسكريبت—المتصفح، Node، وحتى العمال.
1. البدء والأساسيات في المتجر
قم بتثبيته أو احصل عليه عبر CDN.
1npm install tinybase
1import {createStore} from 'tinybase'2const store = createStore()3store.setValue('count', 1)4console.log(store.getValue('count')) // → 1
يمكنك أيضًا إدارة البيانات الجدولية.
1store.setTable('pets', {fido: {species: 'dog'}})2store.setCell('pets', 'fido', 'color', 'brown')3console.log(store.getRow('pets', 'fido'))4// → { species: 'dog', color: 'brown' }
المستمعات التفاعلية تتيح لك الاستجابة للتغييرات بأي درجة من الدقة.
2. دمج React (طبقة واجهة المستخدم الاختيارية)
استخدم tinybase/ui-react للربط السلس مع React.
1import {useCell} from 'tinybase/ui-react'23function PetColor({store}) {4 const color = useCell('pets', 'fido', 'color', store)5 return <>Color: {color}</>6}
تُحدَّث واجهة المستخدم تلقائيًا عندما يتغيّر الخلية.
3. تنظيم البيانات: المخططات، الفهارس، العلاقات، المقاييس
تفرض المخططات الأنواع والقيم الافتراضية.
1store.setTablesSchema({2 pets: { species: {type: 'string'}, sold: {type: 'boolean', default: false} }3})
الفهارس تُسرّع عمليات البحث.
1const indexes = createIndexes(store)2indexes.setIndexDefinition('bySpecies', 'pets', 'species')
العلاقات تربط الجداول.
1const rels = createRelationships(store)2rels.setRelationshipDefinition('petSpecies', 'pets', 'species', 'species')
تسمح المقاييس بالتجميعات (مثل تتبع أعلى سعر).
1const metrics = createMetrics(store)2metrics.setMetricDefinition('maxPrice', 'pets', 'max', 'price')
٤. الاستمرارية والمزامنة
الاستمرارية: حفظ المتجر في sessionStorage أو IndexedDB أو الملفات.
1import {createSessionPersister} from 'tinybase/persisters/persister-browser'2const persister = createSessionPersister(store, 'myApp')3await persister.save()
المزامنة: استخدم MergeableStore القائم على CRDT للمزامنة عبر الأقران أو الخادم.
- عبر WebSockets (مثلاً، createWsServer + WsSynchronizer)
- أنظمة CRDT من طرف ثالث (Yjs، Automerge)
- قواعد البيانات (SQLite، Postgres)
- كائنات ديوَرية من كلاودفلير
5. صمم تطبيقك
TinyBase يمنحك المرونة.
- متجر مستقل يعتمد على الذاكرة فقط (مناسب للنماذج الأولية)
- بيانات محملة من السحابة للقراءة فقط
- استمرار المتصفح المحلي
- مزامنة من جانب العميل فقط عبر CRDT
- مزامنة العميل‑الخادم (الخادم كمصدر للحقائق)
- تكامل الطرف الثالث (Automerge، Yjs)
- استخدم عدة مخازن إذا لزم الأمر—واحد لحالة واجهة المستخدم المؤقتة، وآخر للمستندات المحفوظة، إلخ.
٦. الميزات المتقدمة
التراجع/الإعادة عبر نقاط التحقق
محرك الاستعلام (TinyQL) للاستعلامات التفاعلية المشابهة لـ SQL والعمليات الانضمامية.
أداة المفتش لتصحيح الأخطاء في متجرك في الوقت الفعلي
ملخص
TinyBase هو مخزن بيانات ميكرو‑تفاعلي يتعامل مع كل شيء من أزواج المفتاح‑القيمة البسيطة إلى ربط واجهات المستخدم المتقدمة، والمزامنة، والاحتفاظ بالبيانات، والتراجع. أضف فقط ما تحتاجه وصمم تجارب محلية‑أول معقدة بأقل أثر ممكن.