Transcript
00:00:00لديك “git” لشيفرتك البرمجية، لكن ماذا عن بياناتك؟ هذه هي المشكلة، ملف CSV واحد أو صف إعدادات واحد خاطئ
00:00:07تعديل واحد في جدول البيانات وقد يتعطل تطبيقك، ولا يوجد تباين (diff) نظيف، ولا فرع (branch)، ولا طلب دمج
00:00:13ولا تراجع واضح. هذا هو “Dolt”، إنه قاعدة بيانات SQL تعمل تماماً مثل “git”، يمكنك إنشاء فروع للجداول
00:00:20وتعديل الصفوف، ورؤية التباينات، وإجراء عمليات الالتزام (commit) ودمجها مجدداً، تحكم حقيقي في إصدارات البيانات الفعلية، سأقوم
00:00:26بتوضيح كيفية إعداد هذا وتشغيله في الدقائق القليلة القادمة
00:00:35نحن نعلم أن قواعد البيانات في أغلب الأوقات رائعة فيما تفعله، فهي قواعد بيانات، تخزن البيانات وتسمح
00:00:41لك بالاستعلام باستخدام SQL، لكنها ليست رائعة في سير العمل الذي نستخدمه كل يوم، مثل التفرع
00:00:47والمراجعة، وإظهار الفوارق، والدمج، والتراجع، ومعرفة من قام بتغيير ماذا بالضبط، لذلك غالباً ما نختار
00:00:54أحد خيارين سيئين، الخيار الأول هو الاحتفاظ بالبيانات في قاعدة بيانات حقيقية، ستحصل على فهارس SQL
00:01:00والقيود والهيكلية، ولكن عندما تتغير البيانات، فإن عملية المراجعة لا تكون بالمستوى المطلوب
00:01:07أما الخيار الثاني فهو وضع البيانات في ملف CSV أو JSON أو YAML حتى يتمكن “git” من تتبعها فعلياً، الآن ستحصل على
00:01:13عمليات الالتزام وطلبات الدمج، لكنك تفقد الميزات التي تجيدها قواعد البيانات، لا توجد SQL حقيقية، وضعف في
00:01:20فرض المخطط، وصعوبة في رؤية الفوارق والدمج، وعندما يسأل شخص ما من قام بتغيير هذا السجل، حسناً الجواب
00:01:27سيكون ببساطة شخصاً لديه صلاحية الوصول لقاعدة البيانات، وهذا ليس بأي حال من الأحوال سير عمل
00:01:32حقيقي. لكن تخيل هذا بدلاً من ذلك، ماذا لو كان بإمكانك تشغيل أمر تفرع مثل “dolt branch fix this data”
00:01:39و “dolt diff” و “dolt commit” و “dolt merge”، هذه أوامر نستخدمها بالفعل، لكننا نستخدمها
00:01:46ضد جداول قاعدة بياناتك الفعلية، هذا ما يفعله “Dolt”، إنه تحكم في الإصدار لقواعد بياناتنا
00:01:52إذا كنت تستمتع بأدوات البرمجة لتسريع سير عملك، تأكد من الاشتراك، لدينا فيديوهات تصدر
00:01:57طوال الوقت. كفى حديثاً، لدينا خيارات، هناك “Dolt” لقواعد بيانات SQLite وPostgres، سمّها ما شئت. لنقم بالنسخة
00:02:04السريعة من هذا، سأنتقل إلى المجلد وسأقوم باستنساخ “Dolt hub getting started” من GitHub
00:02:10سأدخل إلى المجلد الآن، أولاً سأستنسخ قاعدة بيانات “Dolt” عامة وسأقوم بتشغيل “dolt sql”، الآن نحن
00:02:18داخل SQL، لذا يمكنني تشغيل أوامر SQL هنا مباشرة في الطرفية (terminal)، حسناً، سأقوم بإجراء تغيير صغير
00:02:27وسنقوم بتشغيل “dolt diff”، وهذه هي اللحظة الأولى من نوع “مهلاً، ماذا حدث للتو؟”
00:02:34لا يخبرك “Dolt” أن ملفاً ما قد تغير، بل يظهر لك تباين الجدول الفعلي، أي صف تغير وأي عمود
00:02:43تغير، والقيمة القديمة والقيمة الجديدة، يمكنني رؤية ذلك هنا، الآن يمكننا الالتزام بذلك باستخدام “dolt add”
00:02:50ثم يمكنني تشغيل “dolt commit -m” وسأضع تعليقاً، يمكنني إنشاء فرع كامل من هذا باستخدام
00:02:56الأمر “checkout” وسنقوم ببساطة بتشغيل “checkout -b” وتسمية فرعك، إذا أجريت تغييراً آخر فوق هذا، يمكنني
00:03:03معرفة الفرق مجدداً باستخدام “dolt diff”، ويمكنني الالتزام به مجدداً وإضافته مجدداً، الآن إذا عدت إلى الخلف و
00:03:10دمجت، يمكنني الرجوع إلى “main” وتشغيل “dolt merge”، كل هذه الأوامر نعرفها مسبقاً، نحن نقوم فقط
00:03:17بهذا الآن مع SQL. في النهاية، يمكنك تشغيل “dolt log”، الآن أصبحت قاعدة بياناتك تمتلك سجل التزام، وليس مجرد نسخة احتياطية
00:03:24أو ملف تفريغ أو مجرد تعديل في جدول بيانات، بل قاعدة بيانات ذات إصدارات حقيقية، هذه هي الفكرة الجوهرية هنا
00:03:31سير عمل “git” ولكن للجداول. لنعد خطوة إلى الوراء ونرى كيف يعمل كل هذا في الواقع
00:03:37في البداية، يبدو “Dolt” مألوفاً عن قصد، لديك أوامر مثل “dolt status” و “diff” و “add” و “commit” و “branch” و
00:03:44“checkout”، إذا كنت تعرف “git”، فإن عقلك يدرك بالفعل شكل سير العمل هذا بالكامل
00:03:48ما يسعون إليه هو أن “Dolt” لا يتتبع الملفات، بل يتتبع الجداول العلائقية، يمكنك استخدامه من
00:03:55سطر الأوامر أو يمكنك تشغيل “dolt sql server”، من خلال القيام بذلك، يمكنك الآن الاتصال به باستخدام عملاء
00:04:01متوافقين مع MySQL أو ORMs أو أدوات ذكاء الأعمال (BI) أو شيفرة التطبيق، بحيث يمكن لتطبيقك التعامل مع “Dolt” كقاعدة بيانات SQL عادية، ولكنك
00:04:09تحصل على تحكم في الإصدارات حول البيانات، هذا هو الجزء المهم، أنت لا تختار بين
00:04:14قاعدة بيانات حقيقية وسير عمل “git”، بل تحصل على كليهما في نفس المكان، يستخدم “Dolt” شيئاً يسمى “Prolly tree”، النسخة
00:04:22البسيطة من “Prolly tree” هنا هي أن قاعدة البيانات العادية تستخدم هياكل تشبه الشجرة لجعل عمليات القراءة والكتابة
00:04:29سريعة. يستخدم “Dolt” هيكلاً يشبه الشجرة وهو أيضاً جيد في الإصدارات، لذا بدلاً من نسخ كامل
00:04:36قاعدة البيانات في كل مرة تلتزم فيها (commit)، يمكن لـ “Dolt” مشاركة الأجزاء التي بقيت كما هي وتتبع الأجزاء التي
00:04:42تغيرت فعلياً. الآن نحن لا نسأل فقط أسئلة مثل “ما هي القيمة الحالية؟”، بل يمكننا في الواقع أن نسأل
00:04:47أشياء مثل “كيف كان يبدو هذا الصف قبل حدوث شيء ما؟”، هذا هو الأمر المهم هنا
00:04:52لأنه عندما يحدث عطل، لا نريد أن نضطر للتخمين، فأنت تريد فحص السجل، يمكنني الآن
00:04:56مراجعة التباين، ويمكنك رؤية التغيير، وإذا لزم الأمر، يمكنك التراجع، هذا هو التحكم في الإصدار
00:05:02للبيانات المهيكلة، فروعك وعمليات التزامك وتبايناتك ودمجك وسجلاتك للصفوف والأعمدة، فأين يقع “Dolt”؟
00:05:10في الواقع في تدفق الأشياء، لأن كل هذا يبدو رائعاً، ولكن هذا هو المكان الذي قد يصبح فيه الأمر
00:05:15محيرة. قد تسمع بـ “git للبيانات” وربما تفكر، “حسناً، انظر، لدينا بالفعل
00:05:21أدوات لذلك”، نعم، نحن نمتلك بالفعل أدوات لذلك، ولكنها تحل مشكلات مختلفة، يمكنك وضع ملفات CSV
00:05:28وملفات JSON في “git”، وهذا يعمل عندما تكون البيانات صغيرة وبسيطة، لكن “git” لا يفهم مخططك
00:05:35ولا يعرف مفتاحك الأساسي، ولن يفرض قيوداً، ولا يمكنه تشغيل عمليات الربط (joins) على ملف CSV الخاص بك
00:05:41ما لم تضف المزيد من الأدوات، لذا “git” يمنحك تحكماً في الإصدار، لكنه ليس حقاً لقاعدة بيانات
00:05:47ثم هناك “DVC”، “DVC” رائع لسير عمل تعلم الآلة، خاصةً لمجموعات البيانات الكبيرة ونماذج الأصول، لكن
00:05:53إنه لا يحاول أن يكون قاعدة بياناتك العلائقية الحية، نعم لديك “lakeFS” الذي يجلب أفكاراً تشبه “git” إلى
00:06:00تخزين الكائنات وبحيرات البيانات، مفيد جداً على نطاق البحيرة، ولكن مجدداً، هذه طبقة مختلفة تماماً، فهي
00:06:07ليست نفس الشيء كقول: تفرع جدول SQL، غيّر بعض الصفوف، شغّل تباين، وادمجها مجدداً
00:06:13قواعد البيانات التقليدية لديها أيضاً أدوات سجلات، جداول زمنية، سجلات تدقيق، وCDC، لكن معظمها
00:06:20لا يشعرك بسير عمل طبيعي، فهي لا تمنحك الحلقة النظيفة: تفرع، تغيير، تباين، دمج، تراجع
00:06:27لا أقصد أن تضع “Dolt” بشكل أعمى في كل نظام إنتاج، ليس هذا هو الهدف هنا، النقطة هي
00:06:33إذا كان عملك يتضمن بيانات مهيكلة تتغير بمرور الوقت، وتلك التغييرات يمكن أن تعطل الأشياء فعلياً
00:06:40فأعتقد أن “Dolt” يستحق التجربة، في المرة الأولى التي ينقذك فيها من تغيير بيانات سيء وصامت، يبدأ سير العمل
00:06:46بالشعور بأنه أكثر وضوحاً. نحن لدينا “git”، لماذا لا نمتلك شيئاً للبيانات؟ الآن أصبح لدينا نوعاً ما. إذا
00:06:52كنت تستمتع بأدوات برمجية كهذه، تأكد من الاشتراك في قناة “Better Stack”، سنراكم في فيديو
00:06:57آخر
Community Posts
No posts yet. Be the first to write about this video!
Write about this video