SQLite compressed text-history prototypes: zstd يقلص 20MB إلى 80KB
نظرة عامة
في تدوينة حديثة، استكشف Simon Willison فكرة تخزين سجل التعديلات النصية في SQLite باستخدام ضغط zstd. الفكرة بسيطة: بدلاً من تخزين كل نسخة سابقة كصف منفصل، يتم جمع كل النسخ في صفيف JSON واحد وضغطه. النتائج مبهرة: 1000 مراجعة لمستند أنتجت 20.4MB من النص الخام، انضغطت إلى 80.3KB فقط.
التفاصيل التقنية
- البنية: عمود BLOB يحتوي على JSON مضغوط بضغط zstd، وعمود آخر لطوابع زمنية (Unix integers).
- التقسيم: لتجنب إعادة ضغط الصفيف كاملًا عند كل تعديل، يُقسم التاريخ إلى صفوف متعددة، كل صف يحوي حتى 128 مراجعة أو 3MB من JSON غير مضغوط.
- الأدوات: استخدم Willison GPT-5.6 Sol Pro لبناء النماذج الأولية، واستغرق الأمر 38 دقيقة.
مقارنة مع الطرق التقليدية
| الطريقة | الحجم | التعقيد |
|---|---|---|
| صف لكل نسخة | 20MB لكل 1000 تعديل | بسيط لكن مكلف |
| ضغط zstd | 80KB لنفس البيانات | متوسط، مع تقسيم |
حالات استخدام للمؤسسات في الشرق الأوسط
- أنظمة إدارة المحتوى (CMS) للجهات الحكومية.
- تطبيقات تحرير المستندات التعاونية في الشركات.
- قواعد بيانات السجلات القانونية أو الطبية.
الخلاصة
هذا الحل يوفر مساحة تخزين كبيرة ويحسن الأداء، وهو سهل التنفيذ في SQLite. يمكن للمطورين في المنطقة اعتماده لتطبيقات تتطلب سجل تعديلات شامل دون تكاليف تخزين باهظة.
ملاحظة للمراجعة البشرية: تحقق من دقة الأرقام المذكورة (20.4MB إلى 80.3KB) ومدى ملاءمة الحل لحالات استخدام محددة في المنطقة.
أسئلة شائعة
ما هي فكرة تخزين تاريخ النصوص المضغوط في SQLite؟
الفكرة هي تخزين كل النسخ السابقة من مستند نصي في صفيف JSON واحد مضغوط بخوارزمية zstd، مما يقلل حجم البيانات بشكل كبير بسبب التكرار.
كيف يقارن هذا الحل بالطرق التقليدية؟
الطرق التقليدية تخزن كل نسخة كصف منفصل، مما يضيف 20KB لكل تعديل. هذا الحل يضغط كل النسخ معًا، محققًا ضغطًا أفضل بكثير.
هل يمكن للمؤسسات في الشرق الأوسط استخدام هذا الحل؟
نعم، خاصة لتطبيقات تحرير المستندات التعاونية أو أنظمة إدارة المحتوى، حيث يقلل تكاليف التخزين ويحسن الأداء.
المصدر: Simon Willison (LLM & tools)
محتوى بمساعدة الذكاء الاصطناعي، مراجع بشرياً.