أكثر

طرق فعالة لقراءة بيانات الجدول من طبقة معالم كبيرة؟

طرق فعالة لقراءة بيانات الجدول من طبقة معالم كبيرة؟


لدي طبقة معالم تحتوي على حوالي 460000 سجل وتستغرق حاليًا حوالي 20 دقيقة لقراءة هذا الجدول باستخدام امتدادarcpy.da.TableToNumPyArray ()أداة. هل هناك طريقة أكثر فاعلية لقراءة الصفوف لتتمكن بعد ذلك من معالجة هذه البيانات؟ يبدو أنه يجب أن تكون هناك طريقة "تشبه الحرف C" للوصول إلى الصفوف. ها هي الوظيفة في مجملها ، على الرغم من أنني أركز على الخط القريب من الجزء السفلي الذي أتصل بهarcpy.da.TableToNumpyArray ()لقراءة البيانات:

def import_surface (السطح ، الشبكة ، nrow ، ncol ، row_col_fields ، field_to_convert): "" "مراجع السطح النقطي لشبكة النموذج. إرجاع مصفوفة من الحجم ، ncol." "" out_table = r'in_memory  {} '. format ( السطح) Grid_oid_fieldname = arcpy.Describe (الشبكة) .OIDFieldName # حساب متوسط ​​قيمة السطح لكل خلية نموذج وإخراج جدول (حوالي 20 ثانية) arcpy.sa.ZonalStatisticsAsTable (الشبكة ، الشبكة ، اسم_الحقل ، السطح ، out_table ، 'DATA' ، ' MEAN ') # إنشاء بعض الطبقات وطرق العرض grid_lyr = r'in_memory  grid_lyr' table_vwe = r'in_memory  table_vwe 'arcpy.MakeFeatureLayer_management (grid، grid_lyr) arcpy.MakeTableView_management (out_table، table_vwe) grid_lyr_yoid. OIDFieldName # table_vwe_oid_fieldname = arcpy.Describe (table_vwe) .OIDFieldName # انضم إلى جدول إحصائيات منطقة الإخراج مع الشبكة لتعيين صف / عمود لكل قيمة. arcpy.AddJoin_management (grid_lyr، grid_lyr_oid_fieldname، table_vwe، 'OID_'، 'KEEP_ALL') # خذ إحصائيات الشبكة / المنطقة المنضمة حديثًا واقرأ مجموعات من (row، col، val) (تستغرق حوالي 20 دقيقة) a = arcpy.da .TableToNumPyArray (grid_lyr، row_col_fields + [field_to_convert]، skip_nulls = False) # إعادة تشكيل ناتج المصفوفة 1D بواسطة TableToNumpy إلى مصفوفة ثنائية الأبعاد ، وفرزها حسب الصف / العمود (0.1 ثانية تقريبًا) a = np.rec.fromrecords (a.tolist. ()، الأسماء = ['row'، 'col'، 'val']) a.sort (order = ['row'، 'col']) b = np.reshape (a.val، (nrow، ncol) ) العودة ب

فكرت في التعليق أولاً ، ولكن بعد ذلك اتسعت ...

  • تعتبر معالجة هذا القدر من البيانات في 20 دقيقة وقتًا معقولاً IMO. لقد حاولت أيضًا تسريع بعض عمليات Arcpy - انظر هنا.
  • إذا كان الأداء يمثل مشكلة ، فيمكنك قراءة قاعدة البيانات الجغرافية للملف باستخدام واجهة برمجة التطبيقات ، لكنني أشك في أنها ستكون أسرع من قراءة البيانات باستخدام arcpy في بنية بيانات Python خالصة مثل dict أو قائمة tuples.
  • يعتمد ذلك قليلاً على بنية البيانات الموجودة في جدول gdb الخاص بك - البحث عن المفاتيح أسرع من البحث عن القيم في Python deb ويمكن أن يؤدي فهم القوائم في بعض المواقف إلى زيادة سرعة المعالجة بشكل كبير. البحث عن العمليات مكلف في Python وإيجاد المزيد من الأساليب المثلى.

  • أقوم دائمًا بتشغيل 64 بت Python لأي معالجة بيانات كبيرة - تتم معالجتها بنسبة 10٪ على مجموعات البيانات التي استخدمتها.

  • يمكنك اللعب باستخدام SQLite تحميل البيانات في قاعدة بيانات وتشغيل بعض SQL - قد يكون ذلك أسرع ، لكن من الصعب التحقق من ذلك دون الاختبار بدون بياناتك.

أخيرًا ، إذا لم يكن لديك بعد - احصل على قرص صلب SSD - بعد أن قمت بالتبديل إلى SSD بدأ كل شيء في الطيران (الآن أصبح بطيئًا مرة أخرى :) - لأنك اعتدت عليه).


كان عنق الزجاجة الرئيسي في الكود السابق في القراءة من فئة ميزات GDB. بمجرد أن قمت بالتحويل إلى ملف أشكال ، انخفض وقت قراءتي إلى حوالي 10٪ من الأصل. كان يجب أن أتذكر أنني واجهت نفس المشكلة منذ بضعة أشهر فقط #facepalm. بالإضافة إلى ذلك ، في تكرار سابق للمشكلة الحالية ، حاولت نسخ ميزاتي إلى ملففي الذاكرةالموقع الذي لم يسفر عن تحسن في وقت المعالجة. ومع ذلك ، حاولت مرة أخرى ، ربما بعد إعادة تعيين نواة iPython Notebook ، وأصبح وقت المعالجة أكثر منطقية.

هذا هو الكود الجديد الذي يعمل في أقل من دقيقتين:

def import_surface (السطح ، الشبكة ، nrow ، ncol ، zstat_field = لا شيء ، Join_field = None ، row_col_fields = ('grid_row'، 'grid_col')، field_aliasname_to_convert = "MEAN"): "" "مراجع السطح النقطي لشبكة النموذج وإرجاع مصفوفة من الحجم nrow ، ncol. vars: السطح: السطح النقطي الذي سيتم أخذ عينات منه ؛ الشبكة النقطية: الشبكة المتجهة التي سيتم تلخيص البيانات النقطية بناءً عليها ؛ صنف الصفات: عدد الصفوف في الشبكة ؛ int ncol: عدد الأعمدة في الشبكة ؛ int zstat_field: حقل في الشبكة التي تحدد المناطق ؛ str Join_field: الحقل في الميزات الناتجة التي سيتم استخدامها للربط ؛ str row_col_fields: أسماء الحقول التي تحتوي على أرقام الصفوف والأعمدة ؛ قائمة field_aliasname_to_convert: الاسم المستعار لـ zstat الناتج الحقل المراد استخدامه ؛ str "" "إذا كان Join_field هو بلا: Join_field = arcpy.Describe (الشبكة) .OIDFieldName إذا كان zstat_field هو بلا: zstat_field = Join_field zstat = r'in_memory  {} '. format (Surface) arcpy.sa.ZonalStatisticsAsTable (الشبكة ، zstat_field ، السطح ، zstat ، 'NODATA' ، 'MEAN') # إنشاء ميزة طبقات وطرق عرض الجدول للانضمام إلى grid_lyr = r'in_memory  grid_lyr 'arcpy.MakeFeatureLayer_management (network، grid_lyr) zstat_vwe = r'in_memory  zstat_vwe' arcpy.MakeTableView_management (zstat، zstat_stat_vwe. ، Join_field، 'KEEP_ALL') # اكتب ميزات الشبكة إلى فئة مميزة جديدة zstat_grid = r'in_memory  zstat_grid 'arcpy.CopyFeatures_management (grid_lyr، zstat_grid) # تأكد من أننا نشير إلى اسم حقل zstat الصحيح في حالة اقتطاع لـ idx ، الاسم المستعار في التعداد ([f.aliasName لـ f في arcpy.ListFields (zstat_grid)]): if alias == field_aliasname_to_convert: name = [f.name for f in arcpy.ListFields (zstat_grid)] [idx] break # تحويل الشبكة العادية شكل مضلع إلى مصفوفة. a = arcpy.da.TableToNumPyArray (zstat_grid، row_col_fields + (name،)، skip_nulls = False) # تحويل إلى recarray a_1 = np.rec.fromrecords (a.tolist ()، names = ['row'، 'col'، 'val']) a_1.sort (order = ['row'، 'col']) b = np.reshape (a_1.val، (nrow، ncol)) إرجاع b

31نسخ قاعدة البيانات

سيدة ، أنت قاسية هي على قيد الحياة ، إذا & # 32 & # 32 & # 32 ستقود هذه النعم إلى القبر و & # 32 تترك العالم بلا نسخة.

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

تتوفر ميزات النسخ المتماثل المتقدمة الموضحة في هذا & # 32chapter هذا فقط إذا كنت قد اشتريت Oracle8 Enterprise & # 32Edition.

يحتوي Oracle8 Replication على معلومات مفصلة حول نسخ قاعدة البيانات.

ما هو النسخ المتماثل؟

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

تدعم Oracle شكلين مختلفين من النسخ: النسخ المتماثل الأساسي والمتقدم.

النسخ المتماثل الأساسي

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

يوضح الشكل & # 3231-1 النسخ المتماثل الأساسي.

يمكن أن تدعم Oracle بيئات النسخ المتماثل الأساسية للقراءة فقط باستخدام لقطات جدول للقراءة فقط. لمعرفة المزيد حول النسخ المتماثل الأساسي واللقطات للقراءة فقط ، راجع "مفاهيم النسخ المتماثل الأساسية" في الصفحة 31-4.

الشكل 31-1 & # 32 النسخ المتماثل الأساسي للقراءة فقط

النسخ المتماثل المتقدم (المتماثل)

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

يوضح الشكل & # 3231-2 النسخ المتماثل المتقدم.

يمكن أن تدعم Oracle متطلبات بيئات النسخ المتقدمة باستخدام العديد من التكوينات. لمعرفة المزيد حول أنظمة النسخ المتماثل المتقدمة ، راجع "مفاهيم النسخ المتماثل المتقدمة" في الصفحة 31-11.

الشكل 31-2 & # 32 النسخ المتماثل المتقدم.

مفاهيم النسخ المتماثل الأساسية

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

استخدامات النسخ المتماثل الأساسي

يعد النسخ المتماثل للبيانات الأساسية للقراءة فقط مفيدًا لأنواع عديدة من التطبيقات.

توزيع المعلومات

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

الشكل 31-3 & # 32 توزيع المعلومات

المعلومات قيد التحميل

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

الشكل 31-4 & # 32 معلومات خارج التحميل

نقل المعلومات

يمكن أن يكون النسخ الأساسي مفيدًا كآلية لنقل المعلومات. على سبيل المثال ، يمكن للنسخ المتماثل الأساسي نقل البيانات بشكل دوري من قاعدة بيانات معالجة حركات الإنتاج إلى مستودع البيانات.

لقطات جدول للقراءة فقط

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

الشكل & # 3231-5 والأقسام التالية تشرح المزيد حول لقطات الجدول للقراءة فقط والنسخ المتماثل الأساسي.

الشكل 31-5 & # 32 لقطات للقراءة فقط ، والجداول الرئيسية ، وسجلات اللقطات

هندسة لقطة للقراءة فقط

تدعم Oracle النسخ المتماثل للبيانات الأساسية بآلية لقطة الجدول الخاصة بها. توضح الأقسام التالية بنية لقطات الجدول البسيطة للقراءة فقط.

تقدم Oracle ميزات نسخ أساسية أخرى مثل اللقطات المعقدة ولقطات ROWID لمتطلبات التطبيق الفريدة. لمعرفة المزيد حول هذه التكوينات الخاصة ، راجع "خيارات النسخ المتماثل الأساسية الأخرى" في الصفحة 31-10.

استعلام تعريف لقطة

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

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

في جميع الحالات ، يجب أن يشير الاستعلام المحدد للقطات إلى جميع أعمدة المفاتيح الأساسية في الجدول الرئيسي.

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

تحديث اللقطة

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

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

لتحديث اللقطات ، تدعم Oracle أنواعًا مختلفة من التحديثات (كاملة وسريعة) ومجموعات تحديث اللقطة والتحديثات اليدوية والتلقائية.

تحديث كامل وسريع

يمكن لـ Oracle تحديث لقطة فردية باستخدام إما تحديث كامل أو تحديث سريع.

تجديدات كاملة

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

تحديث سريع

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

سجلات اللقطة

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

مجموعات تحديث اللقطة

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

تحديث لقطة تلقائية

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

عند تكوين مجموعة تحديث للتحديثات التلقائية ، من الضروري

  • تحديد الفاصل الزمني للتحديث للمجموعة
  • تكوين الخادم الذي يدير اللقطات بواحدة أو أكثر من عمليات SNP n الخلفية للاستيقاظ بشكل دوري وتحديث أي لقطات من المقرر تحديثها
فترات التحديث التلقائي

عند إنشاء مجموعة تحديث لقطة ، يمكنك تحديد فاصل زمني للتحديث التلقائي للمجموعة. عند تعيين الفاصل الزمني لتحديث المجموعة ، افهم السلوكيات التالية:

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

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

SNP n عمليات الخلفية

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

تحديث اللقطة اليدوية

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

خيارات النسخ المتماثل الأساسية الأخرى

تدعم Oracle بعض ميزات النسخ الأساسية الإضافية التي يمكن أن تكون مفيدة في مواقف معينة:

لقطات معقدة

عندما يحتوي استعلام تعريف اللقطة على دالة مميزة أو مجمعة ، أو عبارة GROUP BY أو CONNECT BY ، أو صلة ، أو أنواع مقيدة من الاستعلامات الفرعية ، أو عملية تعيين ، فإن اللقطة هي لقطة معقدة.

المثال التالي هو تعريف لقطة جدول معقدة.

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

لقطات ROWID

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

  • إعادة تنظيم الجداول الرئيسية للقطات دون الحاجة إلى إكمال التحديث الكامل للقطات
  • إنشاء لقطة باستخدام استعلام تعريف يتضمن نوعًا مقيدًا من الاستعلام الفرعي

للتوافق مع الإصدارات السابقة فقط ، تدعم Oracle أيضًا لقطات ROWID استنادًا إلى معرفات الصفوف الفعلية (ROWIDs) للصفوف في الجدول الرئيسي. يجب استخدام لقطات ROWID فقط مع لقطات الجداول الرئيسية في قاعدة بيانات Oracle Release 7.3 ، ويجب عدم استخدامها عند إنشاء لقطات جديدة للجداول الرئيسية في قواعد بيانات Oracle8.

لدعم لقطة ROWID ، تُنشئ Oracle فهرسًا إضافيًا في الجدول الأساسي للقطات مع الاسم I_SNAP طرق فعالة لقراءة بيانات الجدول من طبقة معالم كبيرة؟ - نظم المعلومات الجغرافية [nobr] [H1toH2]

كيف تتعامل Azure Databricks مع هذه التحديات

  • التحكم في الوصول: مجموعة غنية من التحكم في الوصول وصولاً إلى طبقة التخزين. يمكن لـ Azure Databricks الاستفادة من العمود الفقري السحابي من خلال استخدام خدمات أمان Azure الحديثة في النظام الأساسي مباشرةً. قم بتمكين عبور بيانات اعتماد Azure Active Directory على مجموعات شرارة للتحكم في الوصول إلى بحيرة البيانات الخاصة بك.
  • نُهج المجموعة: تمكين المسؤولين من التحكم في الوصول إلى موارد الحوسبة.
  • واجهة برمجة التطبيقات أولاً: أتمتة التزويد وإدارة الأذونات باستخدام Databricks REST API.
  • تسجيل التدقيق: سجلات تدقيق قوية للإجراءات والعمليات المتخذة عبر مساحة العمل التي تم تسليمها إلى بحيرة البيانات الخاصة بك. يمكن لـ Azure Databricks الاستفادة من قوة Azure لتوفير معلومات الوصول إلى البيانات عبر حساب النشر وأي حسابات أخرى تقوم بتكوينها. يمكنك بعد ذلك استخدام هذه المعلومات لتشغيل التنبيهات التي تنبهنا إلى ارتكاب مخالفات محتملة.

توضح الأقسام التالية كيفية استخدام ميزات Azure Databricks هذه لتنفيذ حل إدارة.


الهندسة المعمارية المرجعية لـ Lake House على AWS

يوضح الرسم البياني التالي العمارة المرجعية الخاصة بنا في Lake House على AWS.

في الأقسام التالية ، نقدم مزيدًا من المعلومات حول كل طبقة.

طبقة استيعاب البيانات

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

  • مصادر قاعدة البيانات التشغيلية
  • تطبيقات البرمجيات كخدمة (SaaS)
  • مشاركات الملفات
  • مصادر البيانات المتدفقة

مصادر قاعدة البيانات التشغيلية (OLTP ، ERP ، CRM)

يمكن لمكون AWS Data Migration Service (AWS DMS) في طبقة الاستيعاب الاتصال بالعديد من قواعد بيانات RDBMS و NoSQL التشغيلية واستيعاب بياناتها في حاويات Amazon Simple Storage Service (Amazon S3) في بحيرة البيانات أو مباشرة في جداول مرحلية في Amazon Redshift مستودع البيانات. باستخدام AWS DMS ، يمكنك إجراء استيراد لمرة واحدة لبيانات المصدر ثم تكرار التغييرات الجارية التي تحدث في قاعدة البيانات المصدر.

تطبيقات SaaS

تستخدم طبقة الإدخال Amazon AppFlow لاستيعاب بيانات تطبيقات SaaS بسهولة في بحيرة البيانات الخاصة بك. بنقرات قليلة ، يمكنك إعداد تدفقات استيعاب البيانات بدون خادم في Amazon AppFlow. يمكن أن تتصل التدفقات الخاصة بك بتطبيقات SaaS مثل Salesforce و Marketo و Google Analytics ، واستيعاب البيانات وتسليمها إلى طبقة تخزين Lake House ، إما إلى حاويات S3 في بحيرة البيانات أو مباشرة إلى الجداول المرحلية في مستودع بيانات Amazon Redshift. يمكنك جدولة تدفقات استيعاب بيانات Amazon AppFlow أو تشغيلها من خلال الأحداث في تطبيق SaaS. يمكن التحقق من صحة البيانات المدخلة وتصفيتها وتعيينها وإخفائها قبل تسليمها إلى مخزن Lake House.

مشاركات الملفات

تقوم العديد من التطبيقات بتخزين البيانات المهيكلة وغير المهيكلة في ملفات تتم استضافتها على صفيفات التخزين المتصلة بالشبكة (NAS). يمكن لـ AWS DataSync استيعاب مئات التيرابايت وملايين الملفات من أجهزة NAS التي تدعم NFS و SMB في منطقة هبوط بحيرة البيانات. تتعامل DataSync تلقائيًا مع البرمجة النصية لوظائف النسخ ، وجدولة عمليات النقل ومراقبتها ، والتحقق من سلامة البيانات ، وتحسين استخدام الشبكة. يمكن لـ DataSync إجراء نقل لمرة واحدة للملفات ثم مراقبة ومزامنة الملفات التي تم تغييرها في Lake House. تتم إدارة DataSync بالكامل ويمكن إعدادها في دقائق.

مصادر البيانات المتدفقة

تستخدم طبقة الإدخال جهاز Amazon Kinesis Data Firehose لتلقي البيانات المتدفقة من المصادر الداخلية أو الخارجية وتسليمها إلى طبقة تخزين Lake House. ببضع نقرات ، يمكنك تكوين نقطة نهاية Kinesis Data Firehose API حيث يمكن للمصادر إرسال بيانات التدفق مثل دفق النقر وسجلات التطبيقات والبنية التحتية ومقاييس المراقبة وبيانات إنترنت الأشياء مثل القياس عن بعد للأجهزة وقراءات أجهزة الاستشعار. يقوم Kinesis Data Firehose بتنفيذ الإجراءات التالية:

  • مخازن التدفقات الواردة
  • دفعات ، وضغط ، وتحويل ، وتقسيم ، وتشفير البيانات
  • يسلم البيانات ككائنات S3 إلى بحيرة البيانات أو كصفوف في جداول مرحلية في مستودع بيانات Amazon Redshift

Kinesis Data Firehose بدون خادم ، ولا يتطلب أي إدارة ، وله نموذج تكلفة حيث تدفع فقط مقابل حجم البيانات التي تنقلها وتعالجها من خلال الخدمة. يتوسع Kinesis Data Firehose تلقائيًا للتكيف مع حجم وإنتاجية البيانات الواردة. لإنشاء خطوط أنابيب تحليلات متدفقة في الوقت الفعلي ، توفر طبقة الإدخال تدفقات بيانات Amazon Kinesis.

طبقة تخزين بيت البحيرة

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

يعد Amazon Redshift Spectrum أحد العناصر المركزية لطبقة تخزين Lake House المدمجة أصلاً. يمكّن Redshift Spectrum Amazon Redshift من تقديم واجهة SQL موحدة يمكنها قبول جمل SQL ومعالجتها حيث يمكن أن يشير الاستعلام نفسه إلى مجموعات البيانات المستضافة في بحيرة البيانات بالإضافة إلى تخزين مستودع البيانات ويجمعها. يمكن لـ Amazon Redshift الاستعلام عن بايتات من البيانات المخزنة في Amazon S3 باستخدام طبقة تصل إلى الآلاف من عُقد Redshift Spectrum العابرة وتطبيق تحسينات الاستعلام المعقدة في Amazon Redshift. يمكن لـ Redshift Spectrum الاستعلام عن البيانات المقسمة في بحيرة بيانات S3. يمكنه قراءة البيانات التي يتم ضغطها باستخدام برنامج ترميز مفتوح المصدر ويتم تخزينها في تنسيقات صف أو عمود مفتوح المصدر بما في ذلك JSON و CSV و Avro و Parquet و ORC و Apache Hudi. لمزيد من المعلومات ، راجع إنشاء ملفات البيانات للاستعلامات في Amazon Redshift Spectrum.

نظرًا لأن Redshift Spectrum يقرأ مجموعات البيانات المخزنة في Amazon S3 ، فإنه يطبق المخطط المقابل من كتالوج AWS Lake Formation الشائع على البيانات (مخطط عند القراءة). باستخدام Redshift Spectrum ، يمكنك إنشاء خطوط أنابيب أصلية من Amazon Redshift تؤدي الإجراءات التالية:

  • احتفظ بكميات كبيرة من البيانات التاريخية في بحيرة البيانات واستوعب بضعة أشهر من البيانات الساخنة في مستودع البيانات باستخدام Redshift Spectrum
  • إنتاج مجموعات بيانات مُخصَّصة عن طريق معالجة كل من البيانات الساخنة في التخزين المرفق والبيانات التاريخية في بحيرة البيانات ، كل ذلك بدون نقل البيانات في أي اتجاه
  • أدخل صفوفًا من مجموعات البيانات المخصّصة إما في جدول مخزّن على وحدة تخزين مرفقة أو مباشرة في جدول خارجي مستضاف في بحيرة البيانات
  • يمكنك بسهولة تفريغ كميات كبيرة من البيانات التاريخية الأكثر برودة من مستودع البيانات إلى تخزين بحيرة بيانات أرخص ولا يزال الاستعلام عنها بسهولة كجزء من استعلامات Amazon Redshift

عادةً ما توفر البيانات عالية التنظيم في Amazon Redshift استعلامات تفاعلية ولوحات معلومات سريعة وموثوق بها للغاية ، بينما تعمل البيانات المهيكلة وغير المهيكلة وشبه الهيكلية في Amazon S3 عادةً على تشغيل ML وعلوم البيانات وحالات استخدام معالجة البيانات الضخمة.

يمكن لـ AWS DMS و Amazon AppFlow في طبقة الاستيعاب تسليم البيانات من المصادر المهيكلة مباشرةً إلى بحيرة بيانات S3 أو مستودع بيانات Amazon Redshift لتلبية متطلبات حالة الاستخدام. في حالة استيعاب ملفات البيانات ، تقوم DataSync بإحضار البيانات إلى Amazon S3. يمكن لمكونات طبقة المعالجة الوصول إلى البيانات في طبقة تخزين Lake House الموحدة من خلال واجهة موحدة واحدة مثل Amazon Redshift SQL ، والتي يمكنها دمج البيانات المخزنة في مجموعة Amazon Redshift مع البيانات في Amazon S3 باستخدام Redshift Spectrum.

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

عادةً ما يتم تقسيم مجموعة البيانات في كل منطقة على طول مفتاح يطابق نمط استهلاك خاص بالمنطقة المعنية (خام أو موثوق به أو منظم). يتم ضغط كائنات S3 المقابلة لمجموعات البيانات ، باستخدام برامج ترميز مفتوحة المصدر مثل GZIP و BZIP و Snappy ، لتقليل تكاليف التخزين ومقدار وقت القراءة للمكونات في طبقات المعالجة والاستهلاك. عادةً ما يتم تخزين مجموعات البيانات في تنسيقات عمودية مفتوحة المصدر مثل Parquet و ORC لتقليل كمية البيانات التي تتم قراءتها عندما تستعلم مكونات طبقة المعالجة والاستهلاك فقط عن مجموعة فرعية من الأعمدة. تقدم Amazon S3 مجموعة من فئات التخزين المصممة لحالات الاستخدام المختلفة. تم تصميم فئة التخزين الذكي Amazon S3 لتحسين التكاليف عن طريق نقل البيانات تلقائيًا إلى طبقة الوصول الأكثر فعالية من حيث التكلفة ، دون التأثير على الأداء أو النفقات التشغيلية.

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

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

في الهندسة المعمارية المرجعية لـ Lake House ، توفر Lake Formation الكتالوج المركزي لتخزين البيانات الوصفية لجميع مجموعات البيانات المستضافة في Lake House (سواء تم تخزينها في Amazon S3 أو Amazon Redshift). تقوم المؤسسات بتخزين البيانات الوصفية الفنية (مثل مخططات الجدول ذات الإصدارات ، ومعلومات التقسيم ، وموقع البيانات الفعلي ، والطوابع الزمنية للتحديث) وسمات العمل (مثل مالك البيانات ، ومسؤول البيانات ، وتعريف عمل العمود ، وحساسية معلومات العمود) لجميع مجموعات البيانات في Lake تشكيل - تكوين.

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

يوفر Lake Formation لمسؤول بحيرة البيانات مكانًا مركزيًا لإعداد أذونات على مستوى العمود والجدول المحبب لقواعد البيانات والجداول المستضافة في بحيرة البيانات. بعد إعداد أذونات Lake Formation ، يمكن للمستخدمين والمجموعات الوصول إلى الجداول والأعمدة المصرح بها فقط باستخدام خدمات طبقة معالجة واستهلاك متعددة مثل AWS Glue و Amazon EMR و Amazon Athena و Redshift Spectrum.

طبقة معالجة البيانات

توفر طبقة المعالجة الخاصة بنا في Lake House Architecture العديد من المكونات المصممة لهذا الغرض لتمكين مجموعة متنوعة من حالات استخدام معالجة البيانات. لمطابقة الهيكل الفريد (الجدول المسطح أو الهرمي أو غير المنظم) والسرعة (الدفعة أو التدفق) لمجموعة البيانات في Lake House ، يمكننا اختيار مكون معالجة مطابق مبني لهذا الغرض. يمكن لكل مكون قراءة البيانات وكتابتها إلى كل من Amazon S3 و Amazon Redshift (إجمالاً ، تخزين Lake House).

يمكننا استخدام مكونات طبقة المعالجة لبناء مهام معالجة البيانات التي يمكنها قراءة وكتابة البيانات المخزنة في كل من مستودع البيانات وتخزين بحيرة البيانات باستخدام الواجهات التالية:

  • Amazon Redshift SQL (مع Redshift Spectrum). لمزيد من المعلومات ، راجع Amazon Redshift Spectrum يوسع تخزين البيانات إلى إكسابايت - لا يلزم التحميل.
  • تعمل Apache Spark على تشغيل Amazon EMR. لمزيد من المعلومات ، راجع ما يلي:
    • إدخالات وثائق شرارة لـ DataFrameReader و DataFrameWriter على GitHub

    يمكنك إضافة البيانات الوصفية من مجموعات البيانات الناتجة إلى كتالوج Lake Formation المركزي باستخدام برامج زحف AWS Glue أو واجهات برمجة تطبيقات Lake Formation.

    يمكنك استخدام المكونات المصممة لهذا الغرض لإنشاء مسارات تحويل البيانات التي تنفذ ما يلي:

    • ELT المستند إلى SQL باستخدام Amazon Redshift (مع Redshift Spectrum)
    • معالجة البيانات الضخمة باستخدام AWS Glue أو Amazon EMR
    • معالجة البيانات المتدفقة في الوقت الفعلي تقريبًا باستخدام Amazon Kinesis. لمزيد من المعلومات ، راجع ما يلي:

    اللغة الإنجليزية على أساس SQL

    لتحويل البيانات المهيكلة في طبقة تخزين Lake House ، يمكنك إنشاء خطوط أنابيب ELT قوية باستخدام دلالات SQL المألوفة. يمكن أن تستخدم خطوط أنابيب ELT هذه قدرة المعالجة المتوازية على نطاق واسع (MPP) في Amazon Redshift والقدرة في Redshift Spectrum على تدوير آلاف العقد العابرة لتوسيع نطاق المعالجة إلى بيتابايت من البيانات. يمكن لخطوط ELT المستندة إلى الإجراءات المخزنة نفسها في Amazon Redshift تحويل ما يلي:

    • البيانات المنظمة المسطحة التي يتم توفيرها بواسطة AWS DMS أو Amazon AppFlow مباشرة إلى جداول مرحلية Amazon Redshift
    • البيانات المستضافة في بحيرة البيانات باستخدام تنسيقات ملفات مفتوحة المصدر مثل JSON و Avro و Parquet و ORC

    بالنسبة لخطوات تحسين البيانات ، يمكن أن تتضمن خطوط الأنابيب هذه عبارات SQL التي تنضم إلى جداول الأبعاد الداخلية مع جداول الحقائق الكبيرة المستضافة في بحيرة بيانات S3 (باستخدام طبقة Redshift Spectrum). كخطوة أخيرة ، يمكن لخطوط أنابيب معالجة البيانات إدراج بيانات منسقة ومُعزَّزة ومنمذجة إما في جدول Amazon Redshift الداخلي أو جدول خارجي مُخزَّن في Amazon S3.

    معالجة البيانات الضخمة

    للمعالجة المتكاملة لأحجام كبيرة من البيانات شبه المنظمة أو غير المهيكلة أو شديدة التنظيم المستضافة على طبقة تخزين Lake House (Amazon S3 و Amazon Redshift) ، يمكنك إنشاء مهام معالجة البيانات الضخمة باستخدام Apache Spark وتشغيلها على AWS Glue أو Amazon EMR. يمكن أن تستخدم هذه الوظائف موصلات Spark الأصلية وكذلك مفتوحة المصدر للوصول إلى البيانات العلائقية المخزنة في Amazon Redshift ودمجها مع البيانات الهيكلية المعقدة أو الهرمية المعقدة المخزنة في Amazon S3. يمكن لهذه الوظائف نفسها تخزين مجموعات البيانات المعالجة مرة أخرى في بحيرة بيانات S3 أو مستودع بيانات Amazon Redshift أو كليهما في طبقة تخزين Lake House.

    توفر AWS Glue إمكانيات ETL بدون خادم ودفع لكل استخدام لتمكين خطوط أنابيب ETL التي يمكنها معالجة عشرات تيرابايت من البيانات ، كل ذلك دون الحاجة إلى الوقوف وإدارة الخوادم أو المجموعات. لتسريع تطوير ETL ، تنشئ AWS Glue تلقائيًا كود ETL وتوفر هياكل بيانات شائعة الاستخدام بالإضافة إلى تحويلات ETL (للتحقق من صحة البيانات وتنظيفها وتحويلها وتسويتها). توفر AWS Glue القدرة المضمنة على معالجة البيانات المخزنة في Amazon Redshift بالإضافة إلى بحيرة بيانات S3. في نفس الوظيفة ، يمكن لـ AWS Glue تحميل ومعالجة بيانات Amazon Redshift المخزنة باستخدام تنسيق الجدول المسطح بالإضافة إلى مجموعات البيانات المستضافة في بحيرة بيانات S3 المخزنة باستخدام تنسيقات مفتوحة المصدر شائعة مثل CSV و JSON و Parquet و Avro. يمكن أن تشير مهام AWS Glue ETL إلى كل من جداول Amazon Redshift و Amazon S3 المستضافة بطريقة موحدة من خلال الوصول إليها من خلال كتالوج Lake Formation المشترك (الذي تملأه برامج زحف AWS Glue من خلال الزحف إلى Amazon S3 بالإضافة إلى Amazon Redshift). يوفر AWS Glue ETL إمكانات لمعالجة البيانات المقسمة بشكل متزايد. بالإضافة إلى ذلك ، يوفر AWS Glue المشغلات وإمكانيات سير العمل التي يمكنك استخدامها لبناء خطوط أنابيب معالجة بيانات متعددة الخطوات من البداية إلى النهاية تتضمن تبعيات الوظيفة بالإضافة إلى تشغيل خطوات متوازية.

    يمكنك توسيع مجموعات EMR تلقائيًا لتلبية متطلبات الموارد المتنوعة لخطوط أنابيب معالجة البيانات الضخمة التي يمكنها معالجة ما يصل إلى بيتابايت من البيانات. يمكن لخطوط الأنابيب هذه استخدام أساطيل مختلفة من مثيلات Amazon Elastic Compute Cloud (Amazon EC2) للتوسع بطريقة محسّنة للغاية من حيث التكلفة. لمزيد من المعلومات حول المثيلات ، راجع أنواع المثيلات المدعومة.

    يمكن لخطوط معالجة البيانات القائمة على Spark والتي تعمل على Amazon EMR استخدام ما يلي:

    • القراء والكتاب المدمجون في Spark للتعامل مع مجموعات البيانات المستضافة في بحيرة البيانات في مجموعة متنوعة من التنسيقات مفتوحة المصدر
    • موصل Spark-Amazon Redshift مفتوح المصدر لقراءة البيانات وكتابتها مباشرةً في مستودع بيانات Amazon Redshift

    لقراءة مخطط قاعدة البيانات التي استضافت بحيرة البيانات مجموعات البيانات المهيكلة المعقدة ، يمكن توصيل وظائف Spark ETL على Amazon EMR بكتالوج Lake Formation. تم إعداد هذا من خلال توافق AWS Glue وسياسات AWS Identity and Access Management (IAM) التي تم إعدادها للسماح بالوصول بشكل منفصل إلى جداول AWS Glue وكائنات S3 الأساسية. يمكن لوظائف Spark نفسها استخدام موصل Spark-Amazon Redshift لقراءة كل من البيانات والمخططات الخاصة بمجموعات البيانات المستضافة في Amazon Redshift. يمكنك استخدام Spark و Apache Hudi لبناء خطوط معالجة بيانات متزايدة عالية الأداء من Amazon EMR.

    شبه الوقت الحقيقي ETL

    لتمكين العديد من حالات استخدام التحليلات الحديثة ، تحتاج إلى تنفيذ الإجراءات التالية ، كل ذلك في الوقت الفعلي تقريبًا:

    • استيعاب كميات كبيرة من البيانات عالية التردد أو المتدفقة
    • التحقق من صحتها وتنظيفها وإثرائها
    • اجعله متاحًا للاستهلاك في تخزين Lake House

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

      لـ SQL / Flink
  • أطلق شرارة البث إما على AWS Glue أو Amazon EMR
  • تم دمج Kinesis Data Firehose مع AWS Lambda
  • تمكّنك تحليلات بيانات Kinesis و AWS Glue و Kinesis Data Firehose من إنشاء خطوط أنابيب لمعالجة البيانات في الوقت الفعلي تقريبًا دون الحاجة إلى إنشاء البنية التحتية للحوسبة أو إدارتها. تتسع خطوط أنابيب Kinesis Data Firehose و Kinesis Data Analytics بشكل مرن لمطابقة إنتاجية المصدر ، في حين يمكن تحجيم مهام تدفق Spark المستندة إلى Amazon EMR و AWS Glue في دقائق عن طريق تحديد معلمات القياس فقط.

    عادةً ما تقرأ تحليلات بيانات Kinesis لخطوط أنابيب التدفق المستندة إلى Flink / SQL السجلات من Amazon Kinesis Data Streams (في طبقة الابتلاع من Lake House Architecture) ، وتطبيق التحويلات عليها ، وكتابة البيانات المعالجة إلى Kinesis Data Firehose. عادةً ما تقرأ خطوط أنابيب Spark المتدفقة السجلات من Kinesis Data Streams (في طبقة الابتلاع في Lake House Architecture الخاصة بنا) ، وتطبق التحويلات عليها ، وتكتب البيانات المعالجة إلى تدفق بيانات Kinesis آخر ، والذي يتم ربطه بسلاسل تسليم Kinesis Data Firehose. يمكن أن يوفر تدفق تسليم Firehose البيانات المعالجة إلى Amazon S3 أو Amazon Redshift في طبقة تخزين Lake House. لإنشاء خطوط أنابيب أبسط في الوقت الفعلي والتي تتطلب تحويلات بسيطة عديمة الحالة ، يمكنك استيعاب البيانات مباشرة في Kinesis Data Firehose وتحويل الدُفعات الصغيرة من السجلات الواردة باستخدام وظيفة Lambda التي استدعىها Kinesis Data Firehose. يوفر Kinesis Data Firehose الدفعات الصغيرة المحولة من السجلات إلى Amazon S3 أو Amazon Redshift في طبقة تخزين Lake House.

    بفضل قدرتها على توصيل البيانات إلى Amazon S3 بالإضافة إلى Amazon Redshift ، توفر Kinesis Data Firehose واجهة كاتب تخزين Lake House الموحدة لخطوط أنابيب ETL في الوقت الفعلي تقريبًا في طبقة المعالجة. في Amazon S3 ، يمكن لـ Kinesis Data Firehose تخزين البيانات في ملفات باركيه أو ORC فعالة يتم ضغطها باستخدام برامج ترميز مفتوحة المصدر مثل ZIP و GZIP و Snappy.


    وظيفة التوحيد

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

    ما هي وظيفة التوحيد؟

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

    الآن ، بعد تشغيل وظيفة التوحيد ، سيتم تقليل عدد الملفات بشكل كبير. يقوم بدمج جميع الملفات الصغيرة في ملفات كبيرة الحجم.

    ملاحظة: تختلف الكتلة- uri حسب المنظمة ، فهي & rsquos a Hadoop Cluster uri للاتصال بالمجموعة الخاصة بك.

    كيف تساعد وظيفة التوحيد

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

    كيف يعمل التوحيد

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

    • كتابة البيانات باستخدام جداول Spark أو Nifi to Hive في مجلد القسم اليومي
    • كتابة البيانات باستخدام Spark أو Nifi إلى نظام ملفات Hadoop (HDFS)

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

    الشكل 3: منطق التوحيد

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

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

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


    ما هو الأفضل لتطبيق البيانات الضخمة ، SQL أو NoSQL؟

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

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

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

    SQL تم اختباره بمرور الوقت ولا يزال مزدهرًا

    لغة الاستعلام الهيكلية (SQL) هي لغة فائزة مثبتة هيمنت على مدى عدة عقود ويتم استثمارها حاليًا بقوة من قبل شركات ومؤسسات البيانات الضخمة مثل Google و Facebook و Cloudera و Apache.

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

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

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

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

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

    هنا ، سأستخلص الفوائد المهمة والتمايز بين أنظمة SQL مقابل المفتاح / القيمة البسيطة ومخازن عناصر JSON التي لا تبتكر ما وراء تنسيق التخزين وقابلية التوسع.

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

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

    يفهم السوق هذا الاختلاف الهام. في عام 2010 ، أعلنت Google عن تطبيق SQL لاستكمال MapReduce ، مدفوعًا بطلب المستخدم الداخلي. في الآونة الأخيرة ، أصدر Facebook Presto ، وهو تطبيق SQL للاستعلام عن مجموعات بيتابايت HDFS. وفقًا لـ Facebook: "مع نمو مستودعاتنا إلى حجم بيتابايت وتطور احتياجاتنا ، أصبح من الواضح أننا بحاجة إلى نظام تفاعلي محسّن لوقت استجابة الاستعلام المنخفض." علاوة على ذلك ، تقوم Cloudera ببناء Impala ، وهو تطبيق SQL آخر أعلى HDFS. كل هذه التطورات على Hive ، وهي واجهة SQL طويلة الأمد ومعتمدة على نطاق واسع لـ Hadoop.

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

    وبالتالي يمكن لمستخدمي ومبرمجي SQL إعادة استخدام معرفتهم بواجهة برمجة التطبيقات وواجهة المستخدم عبر أنظمة خلفية متعددة ، مما يقلل من وقت تطوير التطبيقات. يسمح التوحيد القياسي أيضًا بأدوات الاستخراج والتحويل والتحميل (ETL) التوضيحية من جهات خارجية والتي تمكن المؤسسات من تدفق البيانات بين قواعد البيانات وعبر الأنظمة.

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

    * يدعم SQL JSON. منذ عدة سنوات ، أضافت العديد من أنظمة SQL دعم مستندات XML. الآن ، نظرًا لأن JSON أصبح تنسيقًا شائعًا لتبادل البيانات ، فإن موردي SQL يضيفون دعمًا من نوع JSON أيضًا. هناك حجج جيدة لدعم نوع البيانات المهيكلة نظرًا لعمليات البرمجة الرشيقة الحالية ومتطلبات وقت التشغيل للبنية التحتية المعرضة للويب. تدعم Oracle 12c و PostgreSQL 9.2 و VoltDB وغيرها JSON - غالبًا مع معايير أداء متفوقة على متاجر JSON NoSQL "الأصلية".

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

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

    NoSQL أفضل لتطبيقات البيانات الضخمة الخاصة بك

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

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

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

    NoSQL أمر بالغ الأهمية لقابلية التوسع

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

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

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

    NoSQL أمر بالغ الأهمية من أجل المرونة

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

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

    قواعد بيانات NoSQL لها نموذج مختلف تمامًا. قواعد بيانات NoSQL هي في الأساس "NoREL" أو غير علائقية ، مما يعني أنها لا تعتمد على الجداول والروابط بين الجداول من أجل تخزين المعلومات وتنظيمها.على سبيل المثال ، قاعدة بيانات NoSQL الموجهة للمستندات تأخذ البيانات التي تريد تخزينها وتجمعها في مستندات باستخدام تنسيق JSON. يمكن اعتبار كل مستند JSON ككائن يستخدمه تطبيقك. قد يأخذ مستند JSON جميع البيانات المخزنة في صف يمتد على 25 جدولًا من قاعدة بيانات علائقية ويجمعها في مستند / كائن واحد.

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

    NoSQL أمر بالغ الأهمية لتطبيقات البيانات الضخمة

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


    إدراج المسار المباشر

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

    عيب هذه الميزة هو أن المساحة الحرة في كتل الجدول الحالية لا تستخدم للبيانات الجديدة. على سبيل المثال ، إذا تم حذف الصفوف الموجودة (والذي لا يحدث عادةً في مستودع البيانات) ، يتم فقد الأجزاء المجانية في كتلة الجدول ولا يمكن إعادة استخدامها لصفوف جديدة. هذا هو الحال أيضًا بالنسبة للكتلة الأخيرة من Direct-Path INSERT. لن يتم استخدام المساحة الخالية بعد الصف الأخير بعد الآن من أجل Direct-Path INSERT التالي ، لأنه سيتم كتابة كتلة جديدة بعد ذلك. بالنسبة لوظائف ETL التي تدخل عددًا قليلاً جدًا من الصفوف في المرة الواحدة ، يعد INSERT التقليدي خيارًا أفضل. ولكن بالنسبة لوظائف ETL التي تقوم بتحميل كمية كبيرة من الصفوف ، على سبيل المثال تحميل يومي في جدول حقائق ، فإن ميزة أداء التحميل الأفضل هي أكثر أهمية من خسارة المساحة الفارغة (الصغيرة) في الكتل.

    يتم استخدام Direct-Path INSERT في المواقف التالية:

    • عندما ألحق يضاف تلميح إلى عبارة INSERT أو MERGE
    • عندما append_values يضاف تلميح إلى جملة PL / SQL FORALL
    • عندما يتم تنفيذ جملة INSERT باستخدام DML المتوازي
    • عندما يتم تنفيذ CREATE TABLE AS SELECT


    أدخل / * + إلحاق * / INTO fact_sales
    حدد * من stage_sales

    هناك العديد من القيود مع Direct-Path INSERT التي يجب مراعاتها. يمكن العثور على مزيد من المعلومات في مرجع لغة SQL وفي دليل مسؤول قاعدة البيانات لوثائق أوراكل.


    طرق فعالة لقراءة بيانات الجدول من طبقة معالم كبيرة؟ - نظم المعلومات الجغرافية

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

    تساعدك الإنشاءات متعددة المراحل على إدارة حجم Dockerfile أثناء تكاثر الحاوية. احصل على العملية الصحيحة مع ما يلزم.

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

    ألا تعرف نبتون الخاص بك من بابك الأمامي؟ تحقق مما تسميه AWS و Microsoft و Google بخدماتها السحابية التي لا تعد ولا تحصى. ونعم، .

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

    اتخذت HPE خطوة أخرى نحو هدفها المتمثل في أن تكون بشكل أساسي شركة برمجيات كخدمات بحلول عام 2022 مع خدمات جديدة لـ GreenLake.

    يعد التصميم الجيد لقاعدة البيانات أمرًا ضروريًا لتلبية احتياجات المعالجة في أنظمة SQL Server. في ندوة عبر الإنترنت ، عرض المستشار كوين فيربيك.

    يمكن نقل قواعد بيانات SQL Server إلى سحابة Azure بعدة طرق مختلفة. إليك ما ستحصل عليه من كل خيار من الخيارات.

    في هذا المقتطف من الكتاب ، ستتعلم تقنيات LEFT OUTER JOIN مقابل RIGHT OUTER JOIN وستجد أمثلة مختلفة لإنشاء SQL.

    لدى Microsoft 365 خطط ترخيص مختلفة لجميع أنواع الأعمال. تعرف على خطط الاشتراك المختلفة التي.

    عندما تقوم إحدى المؤسسات بترحيل خوادم البريد الإلكتروني وملفات التعريف الخاصة بها إلى Microsoft 365 ، فيمكنها استخدام العديد من العمليات المختلفة. فرز .

    يغير آخر تحديث لـ Chrome الطريقة التي يتعامل بها المتصفح مع علامات التبويب لتقليل استهلاك وحدة المعالجة المركزية والطاقة. يتيح Chrome 91 أيضًا للأشخاص.

    سيسمح Azure Virtual Desktop للأشخاص باستخدام بيانات اعتماد Azure Active Directory لتسجيل الدخول إلى أي جهاز. تخطط Microsoft للمزيد.

    يجلب WVD مزايا واضحة للطاولة ، مع بعض المحاذير. اكتشف كيف تتراكم WVD مقارنة بالسوق.

    يجب على المؤسسات التي ترغب في نشر WVD و Azure تجاوز تقديرات Microsoft للتسعير ومعرفة التكلفة الإجمالية لـ.


    Keras: ميزة الاستخراج في مجموعات البيانات الكبيرة باستخدام التعلم العميق

    2020-06-04 تحديث: منشور المدونة هذا متوافق الآن مع TensorFlow 2+!

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

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

    بعد ذلك ، سنقوم بتنفيذ شفرة مصدر Python التي يمكن استخدامها من أجل:

    الشبكات كمستخلصات الميزات

    شكل 1: متبقى: بنية شبكة VGG16 الأصلية التي تُخرج الاحتمالات لكل فئة من ملصقات فئة ImageNet البالغ عددها 1000. حق: إزالة طبقات FC من VGG16 وإعادة طبقة POOL النهائية بدلاً من ذلك. سيكون هذا الإخراج بمثابة ميزاتنا المستخرجة.

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

    عند القيام بذلك ، لا يزال بإمكاننا استخدام الميزات القوية والتمييزية التي تعلمتها CNN. يمكننا أيضًا استخدامها للتعرف على الفصول التي لم يتم تدريب CNN عليها مطلقًا!

    يمكن رؤية مثال على استخراج الميزات عبر التعلم العميق في شكل 1 في الجزء العلوي من هذا القسم.

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

    ناتج طبقة max-pooling له شكل حجم 7 × 7 × 512 التي قمنا بتسويتها إلى ناقل سمة 21055 خافت.

    نظرا لمجموعة بيانات من ن الصور ، يمكننا تكرار عملية استخراج الميزة لجميع الصور في مجموعة البيانات ، مما يترك لنا إجمالي N x 21،055-dim نواقل الميزات.

    بالنظر إلى هذه الميزات ، يمكننا تدريب نموذج التعلم الآلي "القياسي" (مثل الانحدار اللوجستي أو SVM الخطي) على هذه الميزات.

    ملحوظة: تمت تغطية استخراج الميزات عبر التعلم العميق في المزيد من التفاصيل في مقال الأسبوع الماضي & # 8212 الرجوع إليه إذا كان لديك أي أسئلة حول كيفية عمل استخراج الميزات.

    ماذا لو كانت ميزاتك المستخرجة كبيرة جدًا لتناسب الذاكرة؟

    استخراج الميزات من خلال التعلم العميق أمر جيد وجيد & # 8230

    & # 8230 ولكن ماذا يحدث عندما تكون ميزاتك المستخرجة كبيرة جدًا بحيث لا تتناسب مع الذاكرة؟

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

    هذا جيد، ولكن إذا كان لديك 50 جيجابايت أو 100 جيجابايت أو حتى 1 تيرابايت من الميزات المستخرجة ، فماذا ستفعل؟

    لا يستطيع معظم الناس الوصول إلى آلات بها ذاكرة كبيرة.

    الحل: التعلم الإضافي (أي "التعلم عبر الإنترنت")

    الشكل 2: تلعب عملية التعلم المتزايد دورًا في استخراج ميزات التعلم العميق في مجموعات البيانات الكبيرة.

    عندما لا تتناسب مجموعة البيانات بالكامل مع الذاكرة ، فأنت بحاجة إلى الأداء التعلم المتزايد (يسمى أحيانًا "التعلم عبر الإنترنت").

    يمكّنك التعلم التدريجي من تدريب النموذج الخاص بك على مجموعات فرعية صغيرة من البيانات اتصل دفعات.

    باستخدام التعلم التدريجي تصبح عملية التدريب:

    1. قم بتحميل دفعة صغيرة من البيانات من مجموعة البيانات
    2. تدريب النموذج على الدفعة
    3. كرر الحلقات عبر مجموعة البيانات على دفعات ، مع التدريب أثناء تقدمنا ​​، حتى نصل إلى التقارب

    لكن انتظر & # 8212 ألا تبدو هذه العملية مألوفة؟

    إنه بالضبط كيف ندرب الشبكات العصبية.

    الشبكات العصبية هي أمثلة ممتازة للمتعلمين المتزايدين.

    وفي الواقع ، إذا قمت بفحص وثائق scikit-Learn ، ستجد أن نماذج التصنيف الخاصة بالتعلم الإضافي هي إما NNs نفسها أو مرتبطة مباشرة بـ NNs (أي Perceptron و SGDClassifier).

    بدلاً من استخدام نماذج التعلم التدريجي الخاصة بـ scikit-Learn ، سنقوم بتنفيذ شبكتنا العصبية الخاصة باستخدام Keras.

    سيتم تدريب NN هذا على أعلى الميزات المستخرجة من CNN.

    أصبحت عملية التدريب لدينا الآن:

    1. استخرج جميع الميزات من مجموعة بيانات الصور الخاصة بنا باستخدام CNN.
    2. تدريب أ بسيط ومغذي الشبكة العصبية فوق الميزات المستخرجة.

    تكوين بيئة التطوير الخاصة بك

    لتكوين نظامك لهذا البرنامج التعليمي ، أوصي أولاً باتباع أي من هذه الدروس:

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

    مجموعة بيانات Food-5K

    الشكل 3: سيتم استخدام مجموعة بيانات Foods-5K لهذا المثال لاستخراج ميزة التعلم العميق باستخدام Keras.

    تتكون مجموعة البيانات هذه من 5000 صورة ، تنتمي كل منها إلى فئة من فئتين:

    هدفنا اليوم هو:

    1. استخدم استخراج ميزة Keras لاستخراج الميزات من مجموعة بيانات Food-5K باستخدام ResNet-50 المدربة مسبقًا على ImageNet.
    2. قم بتدريب شبكة عصبية بسيطة فوق هذه الميزات للتعرف على الفئات التي كانت سي إن إن لم يتدرب على التعرف عليه.

    تجدر الإشارة إلى أن مجموعة بيانات Food-5K بأكملها ، بعد استخراج الميزات ، ستشغل فقط

    2 غيغابايت من ذاكرة الوصول العشوائي إذا تم تحميلها دفعة واحدة & # 8212 هذا ليس المقصود.

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

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

    تنزيل مجموعة بيانات Food-5K

    للبدء ، تأكد من الحصول على الكود المصدري للبرنامج التعليمي اليوم & # 8217s باستخدام & # 8220 تنزيلات & # 8221قسم من مشاركة المدونة.

    بمجرد تنزيل الكود المصدري & # 8217 ، قم بتغيير الدليل إلى تحويل-التعلم-keras:

    في تجربتي ، لقد وجدت & # 8217 أن تنزيل مجموعة بيانات Food-5K غير موثوق به بعض الشيء.

    لذلك ، قمت بتحديث هذا البرنامج التعليمي برابط لمجموعة بيانات Food-5K القابلة للتنزيل التي استضافتها. استخدم الارتباط التالي لتنزيل مجموعة البيانات بشكل موثوق:

    بمجرد تنزيل مجموعة البيانات ، امض قدمًا وقم بفك ضغطها في مجلد المشروع:

    هيكل المشروع

    انطلق وانتقل مرة أخرى إلى الدليل الجذر:

    من هناك ، نحن قادرون على تحليل هيكل مشروعنا باستخدام أمر الشجرة:

    يحتوي ملف config.py على إعدادات التكوين الخاصة بنا في نموذج Python. ستستفيد نصوص Python الأخرى من ملف config.

    باستخدام البرنامج النصي build_dataset.py الخاص بنا ، نقوم & # 8217ll بتنظيم وإخراج محتويات دليل Food-5K / إلى مجلد مجموعة البيانات.

    من هناك ، سيستخدم البرنامج النصي extract_features.py نقل التعلم عبر استخراج الميزات لحساب متجهات الميزات لكل صورة. سيتم إخراج هذه الميزات إلى ملف CSV.

    تمت مراجعة كل من build_dataset.py و extract_features.py بالتفصيل الأسبوع الماضي ، ومع ذلك ، فإننا & # 8217ll نتصفحها باختصار مرة أخرى اليوم.

    أخيرًا ، نقوم & # 8217ll بمراجعة train.py. في نص Python هذا ، سنستخدم التعلم المتزايد لتدريب شبكة عصبية بسيطة على الميزات المستخرجة. يختلف هذا السيناريو عن البرنامج التعليمي الأسبوع الماضي & # 8217s وسنركز طاقتنا هنا.

    ملف التكوين لدينا

    لنبدأ بمراجعة ملف config.py الخاص بنا حيث سنخزن تكويناتنا ، أي المسارات إلى مجموعة بيانات الإدخال الخاصة بنا من الصور جنبًا إلى جنب مع مسارات الإخراج الخاصة بنا للميزات المستخرجة.

    افتح ملف config.py وأدخل الكود التالي:

    خذ الوقت الكافي لقراءة نص config.py مع الانتباه إلى التعليقات.

    ترتبط معظم الإعدادات بالدليل ومسارات الملفات المستخدمة في باقي البرامج النصية الخاصة بنا.

    للحصول على مراجعة كاملة للتهيئة ، تأكد من الرجوع إلى مشاركة الأسبوع الماضي & # 8217.

    بناء مجموعة بيانات الصورة

    عندما أقوم بإجراء التعلم الآلي على مجموعة بيانات (وخاصة Keras / التعلم العميق) ، فإنني أفضل أن يكون لدي مجموعة بيانات بصيغة:

    إن الحفاظ على بنية الدليل هذا لا يحافظ فقط على مجموعة البيانات الخاصة بنا منظمة على القرص لكن أيضا تمكننا من الاستفادة من وظيفة flow_from_directory في Keras عندما نصل إلى الضبط لاحقًا في هذه السلسلة من البرامج التعليمية.

    منذ مجموعة بيانات Food-5K يوفر تقسيمات البيانات المقدمة مسبقًا سيكون هيكل الدليل النهائي لدينا على الشكل:

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

    على الأقل ستمنحك خبرة في كتابة كود Python لتنظيم الصور على القرص.

    دعنا نستخدم ملف build_dataset.py لبناء هيكل دليلنا الآن:

    بعد استيراد حزمنا على الأسطر 2-5، ننتقل إلى حلقات التدريب والاختبار والتحقق من الصحة (الخط 8).

    نقوم بإنشاء هيكل دليل تصنيف التصنيف الانقسام + (المفصل أعلاه) ثم نشر الدلائل بصور Food-5K. والنتيجة هي بيانات منظمة يمكننا استخدامها لاستخراج الميزات.

    دع & # 8217s ينفّذ السكربت ويراجع بنية الدليل مرة أخرى.

    يمكنك استخدام ال & # 8220 تنزيلات & # 8221 قسم من هذا البرنامج التعليمي لتنزيل الكود المصدري & # 8212 من هناك ، افتح Terminal وقم بتنفيذ الأمر التالي:

    بعد القيام بذلك ، ستواجه بنية الدليل التالية:

    لاحظ أن مجموعة البيانات / الدليل الخاص بنا ممتلئ الآن. ثم يكون لكل دليل فرعي التنسيق التالي:

    من خلال تنظيم بياناتنا ، نحن مستعدون للانتقال إلى استخراج الميزات.

    استخدام Keras لاستخراج ميزة التعلم العميق

    الآن وبعد أن قمنا ببناء هيكل دليل مجموعة البيانات الخاص بنا للمشروع ، يمكننا:

    1. استخدم Keras لاستخراج الميزات عبر التعلم العميق من كل صورة في مجموعة البيانات.
    2. اكتب تسميات الفئة + الميزات المستخرجة على القرص بتنسيق CSV.

    لإنجاز هذه المهام ، سنحتاج إلى تنفيذ ملف extract_features.py.

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

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

    من هناك ، ننتقل إلى تكرار تقسيم البيانات الخط 20.

    في الداخل ، نحصل على جميع مسارات imagePath للتقسيم المعين ونلائم برنامج تشفير الملصقات (السطور 23-34).

    يتم فتح ملف CSV للكتابة (الخطوط 37-39) حتى نتمكن من كتابة تسميات الفصل الخاصة بنا واستخراج الميزات على القرص.

    الآن بعد أن تم تعيين جميع عمليات التهيئة الخاصة بنا ، يمكننا البدء في تكرار الصور على دفعات:

    يتم تحميل كل صورة في الدفعة ومعالجتها مسبقًا. من هناك يتم إلحاقه بـ batchImages.

    & # 8217ll الآن نرسل الدفعة من خلال ResNet لاستخراج الميزات:

    يتم استخراج ميزة الدُفعة في الخط 72. باستخدام ResNet ، حجم طبقة الإخراج لدينا هو 7 × 7 × 2048. معالجة المخرجات كمتجه للميزات ، نقوم ببساطة بتسويتها في قائمة 7 × 7 × 2048 = 100352 خافت (الخط 73).

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

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

    للحصول على مراجعة أكثر تفصيلاً ، سطرًا بسطر ، راجع البرنامج التعليمي الأسبوع الماضي & # 8217s.

    لاستخراج ميزات من مجموعة البيانات الخاصة بنا ، تأكد من استخدام ملحق & # 8220 تنزيلات & # 8221 قسم الدليل لتنزيل الكود المصدري لهذا المنشور.

    من هناك ، افتح Terminal وقم بتنفيذ الأمر التالي:

    على وحدة معالجة الرسومات NVIDIA K80 ، استغرقت عملية استخراج الميزات بالكامل 5 م 11 ث.

    يمكنك أيضًا تشغيل extract_features.py على وحدة المعالجة المركزية ولكن الأمر سيستغرق وقتًا أطول.

    بعد اكتمال استخراج الميزات ، يجب أن يكون لديك ثلاثة ملفات CSV في دليل الإخراج ، واحد لكل من تقسيمات البيانات لدينا ، على التوالي:

    تنفيذ البرنامج النصي للتدريب التزايدي

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

    سيكون نص Python الذي نقوم بتنفيذه & # 8217re في هذا القسم مسؤولاً عن:

    1. بناء بنية NN بسيطة التغذية.
    2. يتم استخدام منشئ بيانات CSV لإنتاج مجموعات من الملصقات + متجهات الميزات إلى NN.
    3. تدريب NN البسيط باستخدام منشئ البيانات.
    4. تقييم مستخرج الميزة.

    افتح نص train.py ودعنا نبدأ:

    على الخطوط 2-10 استيراد الحزم المطلوبة لدينا. استيرادنا الأكثر شهرة هو TensorFlow / Keras & # 8217 API التسلسلي الذي سنستخدمه لبناء شبكة عصبية بسيطة.

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

    في ذلك الوقت ، وجدت أن القراء مرتبكون قليلاً في التطبيقات العملية حيث يمكنك استخدام مثل هذا المولد & # 8212 اليوم مثال رائع لمثل هذا التطبيق العملي.

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

    دعنا ننفذ المولد الآن:

    يقبل csv_feature_generator أربعة معلمات:

    • inputPath: المسار إلى ملف الإدخال CSV الذي يحتوي على الميزات المستخرجة.
    • bs: حجم (أو طول) الدُفعة لكل جزء من البيانات.
    • numClasses: قيمة عددية تمثل عدد الفئات في بياناتنا.
    • الوضع: سواء كنا نتدرب أو نقيم / نختبر.

    على السطر 14، نفتح ملف CSV الخاص بنا للقراءة.

    من البداية السطر 17، نقوم بالتكرار إلى أجل غير مسمى ، بدءًا من تهيئة بياناتنا وتسمياتنا. (السطران 19 و 20).

    من هناك ، نقوم & # 8217ll بعمل حلقة حتى تساوي بيانات الطول حجم الدُفعة بدءًا من السطر 23.

    ننتقل من خلال قراءة سطر من ملف CSV (السطر 25). بمجرد أن نحصل على الخط & # 8217 ، سنمضي قدمًا ونقوم بمعالجته:

    إذا كان الصف فارغًا ، سنعيد التشغيل في بداية الملف (السطور 29-32). وإذا كنا في وضع التقييم ، فسنخرج من الحلقة الخاصة بنا ، مع التأكد من أننا لا نملأ الدفعة من بداية الملف (السطر 38 و 39).

    بافتراض أننا نواصل العمل ، يتم استخراج الملصق والميزات من الصف (الخطوط 42-45).

    ثم نلحق متجه الميزة (الميزات) والتسمية بقوائم البيانات والتسميات ، على التوالي ، حتى تصل القوائم إلى حجم الدُفعة المحدد (السطر 48 و 49).

    عندما تكون الدفعة جاهزة ، خط 52 ينتج البيانات والتسميات على شكل مجموعة. تعد الكلمات الرئيسية المنتجة من Python & # 8217 أمرًا بالغ الأهمية لجعل وظيفتنا تعمل كمولد.

    دع & # 8217s يستمر & # 8212 لدينا بضع خطوات أخرى قبل أن نقوم بتدريب النموذج:

    يتم تحميل برنامج تشفير الملصقات الخاص بنا من القرص في خط 54. ثم نشتق المسارات إلى ملفات التدريب والتحقق والاختبار (السطور 58-63).

    السطر 67 و 68 التعامل مع عدد الصور الموجودة في التدريب ومجموعات التحقق من الصحة. باستخدام هذه المعلومات ، سنتمكن من معرفة وظيفة .fit_generator كم عدد خطوات حجم الدُفعة في كل فترة.

    دع & # 8217s نبني مولدًا لكل تقسيم بيانات:

    الخطوط 76-81 تهيئة مولدات ميزات CSV الخاصة بنا.

    نحن الآن جاهزون لبناء شبكة عصبية بسيطة:

    على عكس البرنامج التعليمي الأسبوع الماضي & # 8217s حيث استخدمنا نموذج التعلم الآلي للانحدار اللوجستي ، سنقوم اليوم ببناء شبكة عصبية بسيطة للتصنيف.

    خطوط 84-87 حدد بنية شبكة عصبية بسيطة 100352-256-16-2 باستخدام Keras.

    كيف توصلت إلى قيم 256 و 16 للطبقتين المخفيتين؟

    من القواعد الأساسية الجيدة أخذ الجذر التربيعي لعدد العقد السابق في الطبقة ثم إيجاد أقرب قوة 2.

    في هذه الحالة ، أقرب قوة من 2 إلى 100352 هي 256. إذن الجذر التربيعي لـ 256 هو 16 ، مما يعطينا تعريف العمارة الخاص بنا.

    دع & # 8217s المضي قدمًا وتجميع نموذجنا:

    نقوم بتجميع نموذجنا باستخدام النسب المتدرج العشوائي (SGD) بمعدل تعلم أولي قدره 1e-3 (والذي سيتلاشى على مدى 25 حقبة).

    نحن نستخدم "binary_crossentropy" لوظيفة الخسارة هنا حيث لدينا فئتين فقط. إذا كان لديك أكثر من فصلين ، فعليك استخدام "categorical_crossentropy".

    بعد تجميع نموذجنا ، نحن الآن جاهزون للتدريب والتقييم:

    2020-06-04 تحديث: في السابق ، كان TensorFlow / Keras يتطلب استخدام طريقة تسمى .fit_generator من أجل تحقيق زيادة البيانات. الآن ، يمكن لطريقة .fit معالجة زيادة البيانات أيضًا ، مما يجعل كود أكثر اتساقًا. ينطبق هذا أيضًا على الترحيل من .predict_generator إلى .predict. تأكد من مراجعة مقالاتي حول fit and fit_generator بالإضافة إلى زيادة البيانات.

    الخطوط 96-101 تناسب نموذجنا باستخدام مولدات التدريب والتحقق الخاصة بنا (trainGen و valGen). يسمح استخدام المولدات مع نموذجنا التعلم المتزايد.

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

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

    يتم تقييم النموذج على الخطوط 107-109، حيث ينشئ testGen متجهات الميزات الخاصة بنا على دفعات. ثم يتم طباعة تقرير التصنيف في الجهاز (السطر 110 و 111).

    نتائج استخراج ميزة Keras

    أخيرًا ، نحن على استعداد لتدريب NN البسيط الخاص بنا على الميزات المستخرجة من ResNet!

    تأكد من استخدام ملف & # 8220 تنزيلات & # 8221 قسم من هذا البرنامج التعليمي لتنزيل الكود المصدري.

    من هناك ، افتح Terminal وقم بتنفيذ الأمر التالي:

    استغرق التدريب على NVIDIA K80 تقريبًا

    30 م. يمكنك التدرب على وحدة المعالجة المركزية أيضًا ولكنها ستستغرق وقتًا أطول.

    وكما تظهر مخرجاتنا ، فنحن قادرون على الحصول عليها

    99٪ دقة في مجموعة بيانات Food-5K ، على الرغم من أن ResNet-50 كان أبدا مدربين على فصول الطعام / غير الغذائية!

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

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

    هل أنت مهتم بمعرفة المزيد عن التعلم عبر الإنترنت / التعلم المتزايد؟

    الشكل 4: Creme هي مكتبة مصممة خصيصًا للتعلم التدريجي. تشبه واجهة برمجة التطبيقات API الخاصة بـ scikit-learn والتي ستجعلك تشعر بأنك في المنزل أثناء تشغيلها على مجموعات بيانات كبيرة حيثكريمةمطلوب ntal التعلم.

    الشبكات العصبية والتعلم العميق هي شكل من أشكال التعلم المتزايد - يمكننا تدريب مثل هذه الشبكات على عينة واحدة أو دفعة واحدة في كل مرة.

    ومع ذلك، فقط لأننا نستطيع تطبيق الشبكات العصبية على مشكلة لا يعني أن علينا ذلك.

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

    تشمل خوارزميات التعلم التدريجي مجموعة من التقنيات المستخدمة لتدريب النماذج بطريقة تدريجية.

    غالبًا ما نستخدم التعلم المتزايد عندما تكون مجموعة البيانات كبيرة جدًا بحيث لا تتناسب مع الذاكرة.

    تتضمن مكتبة scikit-Learn عددًا قليلاً من خوارزميات التعلم عبر الإنترنت ، ومع ذلك:

    1. لا يتعامل مع التعلم المتزايد كمواطن من الدرجة الأولى.
    2. التطبيقات محرجة للاستخدام.

    دخول مكتبة كريم - مكتبة مكرسة حصريا ل في كريمة نتال التعلم مع بايثون.

    لقد استمتعت حقًا بتجربتي الأولى في العمل مع creme ووجدت واجهة برمجة تطبيقات مستوحاة من scikit-Learn جدا سهل الاستخدام.

    ماذا بعد؟ أوصي جامعة PyImageSearch.

    أعتقد بشدة أنه إذا كان لديك المعلم المناسب يمكنك ذلك رئيس رؤية الكمبيوتر والتعلم العميق.

    هل تعتقد أن تعلم رؤية الكمبيوتر والتعلم العميق يجب أن يكون مستهلكًا للوقت ومرهقًا ومعقدًا؟ أم يجب أن تتضمن رياضيات ومعادلات معقدة؟ أو يتطلب شهادة في علوم الكمبيوتر؟

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

    إذا كنت جادًا في تعلم رؤية الكمبيوتر ، فيجب أن تكون محطتك التالية هي جامعة PyImageSearch ، وهي الرؤية الحاسوبية الأكثر شمولاً والتعلم العميق ودورة OpenCV عبر الإنترنت اليوم. هنا سوف تتعلم كيفية القيام بذلك بنجاح و بثقة تطبيق رؤية الكمبيوتر على عملك وأبحاثك ومشاريعك. انضم إلي في إتقان رؤية الكمبيوتر.

    ستجد داخل جامعة PyImageSearch:

    • &التحقق من 23 دورة حول رؤية الكمبيوتر الأساسية والتعلم العميق وموضوعات OpenCV
    • & فحص 23 شهادة إتمام
    • &التحقق من 35 س 14 د فيديو عند الطلب
    • &التحقق من تم إصدار دورات تدريبية جديدة تمامًا كل شهر، مما يضمن لك مواكبة أحدث التقنيات
    • &التحقق من دفاتر Jupyter التي تم تكوينها مسبقًا في Google Colab
    • & تحقق من تشغيل جميع أمثلة التعليمات البرمجية في متصفح الويب الخاص بك - يعمل على أنظمة التشغيل Windows و macOS و Linux (لا يلزم تكوين بيئة مطور!)
    • وتحقق من الوصول إلى مراكز إعادة شراء التعليمات البرمجية المركزية لـ الكل 400+ دروس على PyImageSearch
    • &التحقق من تنزيلات سهلة بنقرة واحدة للرموز ومجموعات البيانات والنماذج المدربة مسبقًا ، إلخ.
    • وتحقق من الوصول على الهاتف المحمول والكمبيوتر المحمول وسطح المكتب وما إلى ذلك.

    موارد

    الصور © موراي روبرتسون 1999-2011
    نص © الجمعية الملكية للكيمياء 1999-2011

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

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

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

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

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

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

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

    نأمل أن تستمتع بزيارتك لهذا الموقع. نرحب بتعليقاتكم.