مشاركة عبر


نموذج البيانات شبه المنظمة

توصي هذه المقالة بأنماط لتخزين البيانات شبه المنظمة اعتمادا على كيفية استخدام مؤسستك للبيانات. يوفر Azure Databricks وظائف وأنواع بيانات أصلية وبناء جملة استعلام للعمل مع بيانات شبه منظمة ومتداخلة ومعقدة.

تؤثر الاعتبارات التالية على النمط الذي يجب استخدامه:

  • هل تتغير الحقول أو الأنواع في مصدر البيانات بشكل متكرر؟
  • كم عدد الحقول الفريدة الإجمالية المضمنة في مصدر البيانات؟
  • هل تحتاج إلى تحسين أحمال العمل الخاصة بك للكتابات أو القراءات؟

توصي Databricks بتخزين البيانات كجداول Delta للاستعلامات النهائية.

استخدام متغير

في Databricks Runtime 15.3 وما فوق، يمكنك استخدام VARIANT النوع لتخزين بيانات JSON شبه المنظمة باستخدام ترميز محسن يتفوق على سلاسل JSON للقراءة والكتابة.

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

لمزيد من التفاصيل، راجع المقالات التالية:

استخدام سلاسل JSON

يمكنك تخزين البيانات في عمود سلسلة واحدة باستخدام تنسيق JSON القياسي ثم الاستعلام عن الحقول في JSON باستخدام : رمز .

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

ضع في اعتبارك نقاط القوة والضعف التالية عند اختيار تخزين البيانات كسلاسل JSON:

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

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

  • استيعاب البيانات المتدفقة من خدمة قائمة انتظار مثل Kafka.
  • تسجيل استجابات استعلامات REST API.
  • تخزين السجلات الأولية من مصدر بيانات لا يتحكم فيه فريقك.

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

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

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

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

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

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

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

استخدام الخرائط والصفائف

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

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

لتسريع الاستعلامات، توصي Databricks بتخزين الحقول التي غالبا ما تستخدم لتصفية البيانات كأعمدة منفصلة.

هل أحتاج إلى تبسيط بياناتي؟

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

بناء الجملة للعمل مع البيانات المتداخلة

راجع الموارد التالية للحصول على معلومات حول العمل مع البيانات المتداخلة: