الخماسي ككيان أساسي لوصف مجال الموضوع

الخماسي هو وسيلة لتسجيل أجزاء من البيانات الذرية تشير إلى دورها في حياتنا. تستطيع الخماسيات وصف أي بيانات ، بينما يحتوي كل منها على معلومات شاملة عن نفسك وعن العلاقات مع الخماسيات الأخرى. يمثل مصطلحات المجال ، بغض النظر عن النظام الأساسي المستخدم. وتتمثل مهمتها في تبسيط تخزين البيانات وتحسين وضوح عرضها.



سأتحدث عن طريقة جديدة لتخزين ومعالجة المعلومات وتبادل أفكاري حول إنشاء منصة تطوير في هذا النموذج الجديد.

الخماسية لها خصائص: النوع ، القيمة ، الوالد ، الترتيب بين الإخوة. مع المعرف ، يتم الحصول على 5 مكونات فقط. هذا هو أبسط شكل عالمي لتسجيل المعلومات ، وهو معيار جديد يمكن أن يناسب الجميع. يتم تخزين الخماسيات في نظام ملفات لهيكل واحد ، في حقل معلومات مفهرسة رتابة مستمر.

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

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

هيكل خماسي


الفكرة الرئيسية لهذه المقالة هي استبدال أنواع الماكينات بمصطلحات بشرية واستبدال المتغيرات بالكائنات. ليس بهذه الأشياء التي تحتاج إلى مُنشئ ، مدمر ، واجهات ، وجامع للقمامة ، ولكن عن طريق وحدات من المعلومات الخالصة التي يعمل عليها العميل. أي إذا قال العميل "تطبيق" ، فإن حفظ جوهر هذه المعلومات على الوسائط لن يتطلب خبرة مبرمج.



من المفيد تركيز انتباه المستخدم فقط على قيمة الكائن ، ويجب أن يكون نوعه وأصله وترتيبه (من بين يساوي في التبعية) والمعرف واضحًا من السياق أو ببساطة مخفيًا. هذا يعني أن المستخدم لا يعرف شيئًا عن الخمور على الإطلاق ، إنه يحدد مهمته ويتأكد من قبوله بشكل صحيح ، ثم يبدأ تنفيذه.

المفاهيم الأساسية


هناك مجموعة من أنواع البيانات التي يمكن لأي شخص فهمها: السلسلة والرقم والملف والنص والتاريخ وما إلى ذلك. هذه المجموعة البسيطة كافية تمامًا لصياغة المشكلة ول "البرمجة" والأنواع اللازمة لتنفيذها. قد تبدو الأنواع الأساسية التي تمثلها الخماسيات كما يلي:



في هذه الحالة ، لا يتم استخدام بعض مكونات الخماسي ، ويتم استخدامه كنوع أساسي. هذا يجعل التنقل في قلب النظام أسهل عند التنقل في البيانات الأولية.

الخلفية


بسبب الفجوة التحليلية بين المستخدم والمبرمج ، يحدث تشوه كبير في المفاهيم في مرحلة تحديد المشكلة. غالبًا ما تتحول فكرة التقليل من الفهم وعدم القابلية للفهم والمبادرة غير المرغوب فيها إلى فكرة بسيطة ومفهومة عن العميل إلى مزيج مستحيل من الناحية المنطقية ، انطلاقًا من وجهة نظر المستخدم.



يجب أن يحدث نقل المعرفة دون فقدان أو تشويه. علاوة على ذلك ، في المستقبل ، عند تنظيم تخزين هذه المعرفة ، من الضروري التخلص من القيود التي يفرضها نظام إدارة البيانات المحدد.

كيفية تخزين البيانات


كقاعدة عامة ، هناك العديد من قواعد البيانات على الخادم ؛ كل منها يحتوي على وصف لهيكل الكيان مع مجموعة محددة من السمات - البيانات المترابطة. يتم تخزينها في ترتيب معين ، مثالي مثالي لأخذ العينات.
يُعد نظام تخزين المعلومات المقترح حلاً وسطًا بين مختلف الأساليب المعروفة: العمود والسلسلة و NoSQL. وهو مصمم لحل المهام التي يؤديها عادةً أحد هذه الطرق.

على سبيل المثال ، تبدو نظرية قواعد الأعمدة جميلة: نقرأ فقط العمود المرغوب فيه ، وليس كل صفوف السجلات ككل. ومع ذلك ، في الممارسة العملية ، من غير المحتمل أن يتم وضع البيانات على الوسائط بحيث تكون قابلة للتطبيق على عشرات الأقسام المختلفة من التحليل. لاحظ أنه يمكن إضافة السمات والمقاييس التحليلية وإزالتها ، وأحيانًا أسرع من إعادة بناء اقتصاد العمود هذا. ناهيك عن حقيقة أن البيانات الموجودة في قاعدة البيانات يمكن تعديلها ، والتي سوف تنتهك أيضًا جمال خطة أخذ العينات بسبب التجزؤ الحتمي.

البيانات الوصفية


قدمنا ​​مفهومًا - مصطلحًا - لوصف أي كائنات نعمل بها: كيان ، خاصية ، طلب ، ملف ، إلخ. سنحدد جميع المصطلحات التي نستخدمها في موضوعنا. وبمساعدتهم ، سنصف جميع الكيانات التي لديها تفاصيل ، بما في ذلك في شكل علاقات بين الكيانات. على سبيل المثال ، الدعائم - رابط لإدخال دليل الحالة. المصطلح مكتوب بخماسي البيانات.

مجموعة من أوصاف المصطلح هي بيانات التعريف التي تحدد بنية الجداول والحقول في قاعدة بيانات منتظمة. على سبيل المثال ، هناك بنية البيانات التالية: تطبيق من تاريخ يحتوي على محتوى (نص التطبيق) وحالة ، يقوم المشاركون في عملية الإنتاج بإضافة تعليقات تشير إلى التاريخ. في مُنشئ قاعدة البيانات التقليدية ، سيبدو مثل هذا:



نظرًا لأننا قررنا إخفاء جميع التفاصيل غير الضرورية من المستخدم ، مثل معرفات الربط ، على سبيل المثال ، فسيتم تبسيط المخطط إلى حد ما: تتم إزالة إشارات المعرفات وسيتم دمج أسماء الكيانات وقيمها الأساسية.

يقوم المستخدم "بسحب" المهمة: طلب من تاريخ اليوم له حالة (قيمة مرجعية) ويمكنك إضافة تعليقات تشير إلى التاريخ:



نرى الآن 6 حقول مختلفة للبيانات بدلاً من 9 ، والمخطط بأكمله يتيح لنا قراءة وفهم 7 كلمات بدلاً من 13. على الرغم من أن هذا بعيد عن الشيء الرئيسي بالطبع.

فيما يلي الخماسيات التي تم إنشاؤها بواسطة عنصر التحكم لوصف هذه البنية:



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

انظر كيف ترتبط الخماسيات


بيانات المستخدم


فكر في تخزين مجموعة البيانات هذه للمهمة أعلاه:



يتم تخزين البيانات نفسها في الخماسيات وفقا للهيكل الذي يشير إلى العضوية في شروط معينة في شكل مثل هذه المجموعة:



نرى هيكلًا هرميًا مألوفًا يتم تخزينه باستخدام طريقة قائمة الحدود المجاورة.

الأداء


المثال أعلاه بسيط للغاية ، لكن ماذا سيحدث عندما تكون البنية أكثر تعقيدًا بآلاف المرات وستكون البيانات غيغابايت؟

سنحتاج:

  1. الهيكل الهرمي المذكور أعلاه هو 1 جهاز كمبيوتر.
  2. B- شجرة للبحث عن طريق ID ، الوالد ونوع - 3 أجهزة الكمبيوتر.

وبالتالي ، سيتم فهرسة جميع السجلات في قاعدة البيانات الخاصة بنا ، بما في ذلك البيانات والبيانات الوصفية. هذا الفهرسة ضروري للحفاظ على خصائص قاعدة البيانات الترابطية - الأداة الأكثر بساطة والأكثر شعبية. الفهرس الأصل مركب في الواقع (نوع معرف الهوية الأصل). فهرس حسب النوع هو أيضا مركب (نوع + قيمة) للبحث السريع عن الكائنات من نوع معين.

البيانات الوصفية تسمح لنا بالتخلص من التكرار: على سبيل المثال ، للعثور على جميع تفاصيل كائن ما ، نستخدم الفهرس بمعرف أصل. إذا كنت بحاجة إلى البحث عن كائنات من نوع معين ، فسيتم استخدام فهرس حسب معرف النوع. النوع هو تمثيلي لاسم جدول وحقل في قواعد بيانات علائقية.



على أي حال ، لا نقوم بمسح مجموعة البيانات بالكامل ضوئيًا ، وحتى مع وجود عدد كبير من القيم من أي نوع ، يمكن العثور على القيمة المطلوبة في عدد صغير من الخطوات.

الأساس لمنصة التطوير


في حد ذاتها ، فإن قاعدة البيانات هذه ليست مكتفية ذاتيا في برمجة التطبيقات ، وليست كاملة ، كما يقولون ، وفقًا لتورينج. لكننا لا نتحدث هنا فقط عن قاعدة البيانات ، ولكننا نحاول تغطية جميع الجوانب: الكائنات ، من بين أمور أخرى ، خوارزميات التحكم التعسفي التي يمكن إطلاقها ، وأنها ستعمل.

نتيجةً لذلك ، بدلاً من بنيات قواعد البيانات المعقدة ورمز مصدر خوارزميات التحكم المخزنة بشكل منفصل ، نحصل على حقل معلومات موحد ، يقتصر على حجم الوسيطة ومعلمة ببيانات التعريف. يتم تقديم البيانات نفسها للمستخدم بطريقة يفهمها - بنية مجال الموضوع والإدخالات المقابلة فيه. يقوم المستخدم بتغيير البنية والبيانات بشكل تعسفي ، بما في ذلك إجراء عمليات مجمعة معهم.

لم نخترع أي شيء جديد: جميع البيانات مخزنة بالفعل في نظام الملفات ويتم البحث فيها باستخدام B-tree ، في نظام الملفات ، في قواعد البيانات. لقد قمنا بإعادة تنظيم العرض التقديمي للبيانات لتسهيل العمل معها.


للعمل مع تمثيل البيانات هذا ، فأنت بحاجة إلى نواة مضغوطة جدًا - محرك قاعدة البيانات الخاص بنا هو حجمه أصغر من BIOS لجهاز الكمبيوتر ، وبالتالي ، يمكن تصنيعه إن لم يكن في الأجهزة ، ثم على الأقل بأسرع وقت ممكن ولعق. لأسباب أمنية ، إنه أيضًا للقراءة فقط.

إضافة فئة جديدة إلى تجميع حبيبي .Net ، يمكننا ملاحظة فقدان 200-300 ميغابايت من ذاكرة الوصول العشوائي فقط لوصف هذه الفئة. لن تنسجم هذه الميجابايت مع ذاكرة التخزين المؤقت للمستوى الصحيح ، مما يتسبب في تعثر النظام مع ما يترتب على ذلك من عواقب. وضع مماثل مع جافا. سوف يستغرق وصف نفس الفئة مع الخماسيات عشرات أو مئات البايتات ، لأن الفصل يستخدم الحيل البدائية فقط للتعامل مع البيانات التي هي مألوفة بالفعل للنواة.

كيفية التعامل مع صيغ مختلفة: قواعد RDBMS ، NoSQL ، الأعمدة
يغطي النهج الموصوف مجالين رئيسيين: RDBMS و NoSQL. عند حل المشكلات التي تستفيد من قواعد البيانات العمودية ، نحتاج إلى إخبار النواة بضرورة تخزين بعض الكائنات ، مع مراعاة تحسين أخذ العينات الجماعي لقيم نوع بيانات معين (المصطلح الخاص بنا). وبالتالي فإن النواة ستكون قادرة على وضع البيانات على القرص بأكثر الطرق ربحية.

وبالتالي ، بالنسبة لقاعدة الأعمدة ، يمكننا توفير المساحة التي تشغلها الخماسيات بشكل كبير: استخدم واحدًا أو اثنين فقط من مكوناته لتخزين البيانات المفيدة بدلاً من خمسة ، وكذلك استخدام الفهرس فقط للإشارة إلى بداية سلاسل البيانات. في كثير من الحالات ، سيتم استخدام الفهرس فقط للعينات من قاعدة الأعمدة التماثلية لدينا ، دون الحاجة إلى الوصول إلى بيانات الجدول نفسه.

تجدر الإشارة إلى أن الفكرة لا تحدد هدفًا لجمع كافة التطورات المتقدمة من هذه الأنواع الثلاثة من قواعد البيانات. على العكس من ذلك ، سيتم تقليل محرك النظام الجديد إلى أقصى حد ممكن ، بحيث يتضمن الحد الأدنى الضروري من الوظائف - كل ما يغطي استعلامات DDL و DML في المفهوم الموصوف هنا.


نموذج البرمجة


لا يقتصر استخدام النهج الموصوف على الخماسيات فقط ، بل يروّج لنموذج مختلف عن النموذج الذي اعتاد المبرمجون عليه. بدلاً من لغة حتمية أو تعريفية أو موضوعية ، تُقترح لغة الاستعلام على أنها مألوفة أكثر للبشر وتسمح لنا بتعيين المهمة مباشرة على جهاز الكمبيوتر ، متجاوزة المبرمجين والطبقة التي لا يمكن اختراقها من بيئات التطوير الحالية.

بالطبع ، لا يزال من الضروري وجود مترجم من لغة مستخدم مجانية إلى لغة ذات متطلبات واضحة في معظم الحالات.

سيتم وصف هذا الموضوع بمزيد من التفصيل في مقالات منفصلة مع أمثلة والتطورات الحالية.

لذلك ، باختصار ، يعمل كما يلي:

  1. وصفنا ذات مرة بأنواع البيانات البدائية الخماسية: السلسلة ، الرقم ، الملف ، النص ، وغيرها ، وقمنا أيضًا بتدريب النواة على العمل معهم. يتم تقليل التدريب إلى العرض الصحيح للبيانات وتنفيذ عمليات بسيطة معهم.
  2. الآن نحن نوضح في مصطلحات المستخدم الخماسي (أنواع البيانات) - في شكل بيانات التعريف. يأتي الوصف لتحديد نوع بيانات بدائي لكل نوع مستخدم وتحديد التبعية.
  3. أدخل خماسيات البيانات وفقًا للهيكل المحدد بواسطة البيانات الأولية. تحتوي كل خماسية من البيانات على رابط لنوعها وأصلها ، مما يتيح لك العثور عليها بسرعة في مستودع البيانات.
  4. تتمثل المهام الأساسية في جلب البيانات وإجراء عمليات بسيطة معها لتنفيذ خوارزميات معقدة تعسفيًا وصفها المستخدم.
  5. يدير المستخدم البيانات والخوارزميات باستخدام واجهة مرئية تقدم بصريًا الأول والثاني.

يتم ضمان اكتمال النظام بأكمله من خلال تجسيد للمتطلبات الأساسية: يمكن للنواة القيام بعمليات متسلسلة وفرع مشروط ومعالجة مجموعات البيانات وإيقاف العمل عند تحقيق نتيجة معينة.

بالنسبة للشخص ، تكون الفائدة هي بساطة الإدراك ، على سبيل المثال ، بدلاً من إعلان دورة تتضمن متغيرات

for (i=0; i<length(A); i++) if A[i] meets a condition do something with A[i] 


يستخدم البناء أكثر ودية للإنسان ، مثل

 with every A, that match a condition, do something 


نحلم بالاستخلاص من التفاصيل الدقيقة لتطبيق نظام المعلومات: الحلقات ، المنشئات ، الوظائف ، البيانات ، المكتبات - كل هذا يشغل مساحة كبيرة في عقل مبرمج ، مما يترك مساحة صغيرة للعمل الإبداعي والتطوير.

التحجيم


لا يمكن تصوُّر تطبيق حديث دون أي وسائل للتحجيم: يلزم توفر قدرة غير محدودة على زيادة سعة تحميل نظام المعلومات. في النهج الموصوف ، في ضوء البساطة الشديدة لتنظيم البيانات ، اتضح أن التوسع في التنظيم ليس أكثر تعقيدًا مما هو عليه الحال في البنى الحالية.

في المثال أعلاه مع التطبيقات ، يمكنك فصلها ، على سبيل المثال ، بمعرفها ، مما يؤدي إلى إنشاء معرف مع وحدات بايت عالية ثابتة لخوادم مختلفة. أي عند استخدام 32 بت لتخزين المعرف ، فإن أهم 2 إلى 4 أو أكثر من البتات ، حسب الحاجة ، ستشير إلى الخادم الذي تم تخزين هذه التطبيقات عليه. وبالتالي ، سيكون لكل خادم مجموعة خاصة به من المعرفات.

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

نظرًا لوجود مجموعة محدودة من الأشكال المختلفة للطلبات والاستجابات مع مؤسسة بيانات واحدة ، ستحتاج إلى مرسل مدمج إلى حد ما يقوم بتوزيع الطلبات عبر الخوادم وتجميع نتائجها.

Source: https://habr.com/ru/post/ar433058/


All Articles