Unlocking Notion's Power - The Data Model Explained

فريق المهندسين لم جم يبنوا Notion، كانوا حريصين على بناءه على إطار عمل يسمح للمعلومات إنها تقف لوحدها، حرة من أي قيود أو حاويات، وبدل ما تكون محبوسة في أي حاجة، بنخلي القوة في إيد المستخدم انه يقرر ده ، والإطار ده مبني على مفهوم غاية في الابداع ألا وهو الكتل (blocks).
Unlocking Notion's Power - The Data Model Explained
Unlocking Notion's Power - The Data Model Explained

في هذه الصفحة

المقدمة

فريق المهندسين لم جم يبنوا Notion، كانوا حريصين على بناءه على إطار عمل يسمح للمعلومات إنها تقف لوحدها، حرة من أي قيود أو حاويات، وبدل ما تكون محبوسة في أي حاجة، بنخلي القوة في إيد المستخدم انه يقرر ده ، والإطار ده مبني على مفهوم غاية في الابداع ألا وهو الكتل (blocks).

كل حاجة بنشوفها في Notion هي block. النصوص، الصور، القوائم، صفوف قاعدة البيانات، وحتى الصفحات نفسها – كلها عبارة عن blocks، فهي وحدات ديناميكية من المعلومات اللي ممكن تتحول لأنواع تانية من blocks أو تتحرك بحرية داخل Notion.

الكتل دي هي زي قطع LEGO اللي بنستخدمها في بناء ونمذجة المعلومات. ولما بتتجمع الكتل مع بعضها، بتخلق حاجة أكبر بكتير من مجرد تجميع أجزائها.

والمرونة اللي بنشوفها من خلال Notion والـ Blocks هي جوهر مهمة Notion. فعلى الرغم من أن الكتل بتطلب من فريق Notion الهندسي إنه يكون بيطبق دقة شديدة خلال تنظيم المعلومات، الا إنهم كانوا عاوزين نموذج بيانات شبيه بالرسم البياني (graph-like) بحيث يقدر يوفر للمستخدمين القدرة على تخصيص حركة وتنظيم ومشاركة المعلومات بتاعتهم بحرية كاملة.

نموذج الكتل (Blocks) هو اللي بيخلي Notion فريد، وده الأساس لطريقة تفكير Notion في انهم يغيروا من طريقة التعامل مع البيانات.


Fundamentals of Blocks in Notion

زي قطع الـ LEGO في مجموعة LEGO، كتل Notion هي القطع الفردية اللي بتمثل كل وحدات المعلومات جوه محرر Notion. وخصائص الكتلة هي اللي بتحدد إزاي المعلومات دي هتتنسق وتتنظم بالشكل اللي عاوزينه.

A visual representation of block attributes.
Fundamental of Blocks in Notion

مصدر الصورة : Notion Engineering Blog

كل كتلة عندها الخصائص دي:

  • الـ ID: كل كتلة ليها معرف فريد. ونقدر نشوف الـ ID الخاص بكتلة الصفحة (Page Block) في نهاية عنوان الـ URL في المتصفح. وبيتم استعمال الـ UUIDs (UUID v4) كمولد عشوائي للـ IDs في Notion.
  • الـ Properties: وهي عبارة عن هيكل بيانات بيحتوي على بعض خصائص المخصصة لكتلة معينة. فالخاصية الأكثر شيوعًا هي الـ title، ودي اللي بتخزن محتوى النص لأنواع الكتل زي الفقرات والقوائم وطبعًا عنوان الصفحة. والأنواع الأكثر تعقيدًا من الكتل بتحتاج خصائص إضافية أو مختلفة.
  • الـ Type: كل كتلة ليها نوع، وده اللي بيحدد إزاي الكتلة هتظهر ويتعملها Render بشكل مختلف، وإزاي هنفسر خصائص الكتلة. Notion بيدعم أنواع كتير من الكتل، واللي ممكن تشوف أغلبها في قائمة "new block" لما تدوس على زر + أو في قائمة /.
Using Notion’s slash menu, you can add different types of blocks to Notion pages.
Notion's Block Types

مصدر الصورة : Notion Engineering Blog

إلى جانب الخصائص اللي بتوصف الكتلة نفسها، كل كتلة بيكون عندها مجموعة من الخصائص اللي بتحدد علاقتها مع باقي الكتل وهنا ممكن نشوف الموضوع أشبه بـ Graph:

  • الـ Content: ودي عبارة عن Array من معرفات الكتل (Block IDs) اللي بتمثل المحتوى جوه الكتلة دي، زي العناصر المتداخلة في قائمة نقطية أو النصوص جوه toggle فأشبه بالـ Children للـ Parent.
  • الـ Parent: وده عبارة عن معرف الكتلة اللي هي الأصل للكتلة الحالية. أو بمعنى أدق الـ Parent of Current Block ، وكتلة الأصل بتستخدم فقط في صلاحيات الوصول (permissions).

How Blocks Fit Altogether

زي كتل الـ LEGO، كتل Notion ممكن تتجمع مع كتل تانية عشان تعمل حاجة أقوى بكتير – زي الـ Roadmap اللي بتكون مخصصة تمامًا للـ Progress بتاع فريقك، وبترصد التقدم وبتحتفظ بكل معلومات المشروع في مكان واحد. فـ Notion هم بينظموا كل جوانب الكتل عشان يتأكدوا إنها بتعمل الحاجات الصح وبتعيش في الأماكن الصح، وده بيسهل للمستخدمين استعمالها وربطها وتخصيصها زي ماهم عاوزين عشان يحلوا مشاكلهم ويديروا مشاريعهم بكفاءة.


Block Types and Properties

نوع الكتلة في Notion هو اللي بيحدد إزاي الكتلة هتتعرض ويتعملها Render في واجهة مستخدم Notion، وطبقًا لنوعها، بيتم ترجمة خصائص ومحتويات الكتلة بشكل مختلف.

والموضوع ده ممكن يكون واضح شوية مع الخاصية دي لو في حد استخدم وظيفة "Turn into" في Notion، اللي بتسمحلنا نحوّل نوع الكتلة لنوع تاني خالص.

تغيير نوع الكتلة مش بيغير الخصائص أو المحتوى – بيغير بس الخاصية اللي بتحدد النوع. المعلومات بتتعرض بشكل مختلف أو ممكن حتى يتم تجاهلها لو الخاصية دي مش مستخدمة مع نوع الكتلة ده.

خلونا ناخد مثال يوضح الموضوع بشكل أبسط:

ممكن نشوف هنا إن كتلة الـ To-do list اتحولت لأنواع تانية من الكتل. وإحنا كمان كنا معلمين على عنصر في To-do list. فهنلاقي أن الخاصية "checked" في كتلة To-do list بيتم تجاهلها لما الكتلة تتحول لنوع Heading أو Callout – لكن لما نرجع نحول الكتلة لـ To-do list مرة تانية، هتفضل معلمة و Checked زي مهي.

0:00
/0:15

Notion's To-Do List Turned Into Another Block

مصدر الفيديو : Notion Engineering Blog


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀

آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة

مستنينكوا تنورونا , وده رابط القناة 👇

https://t.me/eqraatechcom


Content and Tree Render

نظام الكتل في Notion بيسمحلنا إننا نضيف كتل جوا كتل تانية، زي النصوص جوا قائمة قابلة للطي (toggle) أو الصفحات الفرعية اللي ممكن تكون جوه صفحات تانية بشكل لا نهائي. الخاصية دي بتخلّي الكتل عندها مرونة كبيرة جدًا في التكوين، وده عن طريق استخدام خاصية المحتوى (content attribute) في الكتلة اللي بتحتوي على IDs (معرّفات) للكُتل الفرعية اللي بتكون مرتبطة بيها.

A visual representation of blocks nested inside of other blocks.
Render Children in Content Array

مصدر الصورة : Notion Engineering Blog

في مثال قائمة المهام (To-do list)، لو عندنا كتلة قائمة مهام مكتوب فيها “Write a blog post about blocks”، الكتلة دي هتكون عندها 3 معرفات (block IDs) في الـ Content Array المحتوى بتاعتها. الكتل دي بنسميها render children، يعني الكتل اللي بيتم عرضها بناءً على العلاقة الهيكلية اللي بينهم وبين الكتلة الأم.

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!