إنشاء جداول مؤقتة أو تعديلها لتحسينِ البيانات

مكتمل

يخزّن النظام جداول InMemory فِي الذاكرة، لذلك قد تجدها مفِيدة لعدد قليل من السجلات. لا يمكنُك استخدامُ جداول InMemory فِي استعلام لأنَّها غير موجودة على SQL Server. تظل السجلات الموجودة فِي جدول مؤقت لنوع InMemory موجودة طالما أنَّ الكائن الذي تقوم بإنشاء الجدول فِيه موجودًا.

تُظهر التعلية البرمجية التالية مثالاً على كيفِية إدراجِ البيانات فِي جدول مؤقت.

    public static void main(Args _args)
    {
        SalesShippingLabelTmp       salesShippingLabelTmp;

        ttsbegin;

        salesShippingLabelTmp.Label = 1;
        salesShippingLabelTmp.Name  = 'Finance and operations apps';
        salesShippingLabelTmp.insert();

        ttscommit;

        while select salesShippingLabelTmp
            order by Label
        {
            Info(strFmt('%1 %2', salesShippingLabelTmp.Label, salesShippingLabelTmp.Name));
        }
    }

يظهرُ نموذج التعليمة البرمجية مشابهاً لكيفِية ظهور التعليمات البرمجية لجدول عادي. يعتمد نطاق جداول InMemory على كيفِية إعلانك عنها. إذا قمتَ بإعلانه فِي الطريقة، يكون النطاق فقط فِي الطريقة.

ملحوظة

يمكنُك الإعلان عَن جدول InMemory على جميع المستويات، بحيث يكون فِي نطاق فئة أو نموذج أيضًا.

يُمكنك ربط جداول InMemory من كائن إِلى آخر باستخدام طريقة setTempData، وبالتالي إنشاء ارتباط مثيلٍ جديد، كما يلي:

        SalesShippingLabelTmp salesShippingLabelTmp2;
 
        salesShippingLabelTmp2.setTmpData(salesShippingLabelTmp);

يمكنُك استخدام كل الجداول كجدول InMemory باستخدام طريقة setTmp لـ salesShippingLabelTmp2.setTmp();

لاستخدام جدول InMemory كمصدرِ بيانات للنموذجِ، تحتاج إلى:

  • إضافة الجدول InMemory كمصدر بيانات للنموذجِ.
  • استخدم setTempData لتكوين البيانات إِلى السجل المعين لمصدر بيانات النموذج بالطريقة Init الخاصة بمصدر بيانات نموذج الجدول InMemory، كما يلي:
    [DataSource]
    class SalesShippingLabelTmp
    {
        public void init()
        {
            super();
            salesShippingLabelTmp.setTmpData(mySalesCalcLabel.parmSalesShippingLabelTmp());
        }
    }

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

إنشاء جدول مؤقت باستخدامِ نوع جدول TempDB

تعد الجداول المؤقتة لـ TempDB مفِيدة لكميات البيانات الأكبر، ويمكنُك إنشاؤها فِي TempDB فِي SQL Server. يمكنُك إنشاء فهارس لتحسين الأداء عَلى غرار الطريقة التي تقوم بها مَع جدول عادي فِي تطبيقات التمويل والعمليات.

يتشابه استخدام جداول TempDB مع استخدام جداول InMemoryعلى الرغم من وجود بعض الاختلافات الرئيسية، حيث أن جداول TempDB:

  • تتطلب طريقة linkPhysicalTableInstance عند ربط البيانات من جدول TempDB إِلى آخر، بدلاً من طريقة InMemory الخاصة بـ setTmpData.
  • يمكن أن تكون عالمية أو وفقًا لبيانات الشركة.
  • دعم نطاقِ المعاملة أو نظام تتبعِ المعاملات (TTS).
  • دعمُ الفَهارس.
  • دعم الانضمام إِلى الجداول العادية.

توضح التعليمة البرمجية التالية استخدام جدول TempDB، المشابه لاستخدام جدول InMemory مَع linkPhysicalTableInstance المستخدم لربط البيانات بمثيلٍ جديدٍ.

    public static void main(Args _args)
    {
        SalesIdTempTable            salesIdTempTable;

        ttsbegin;

        salesIdTempTable.SalesId = 'SO-1';
        salesIdTempTable.insert();

        salesIdTempTable.SalesId = 'SO-2';
        salesIdTempTable.insert();

        ttscommit;

        while select salesIdTempTable
            order by SalesId
        {
            Info(strFmt('%1', salesIdTempTable.SalesId));
        }

        SalesIdTempTable salesIdTempTable2;
 
        salesIdTempTable2.linkPhysicalTableInstance(salesIdTempTable);
    }

يُمكنك استخدام TempDB فِي إطار عمل أمان البيانات القابل للتوسيع (XDS) لإنشاء جدول مؤقت مع البيانات المسموح بها للمستخدمين. وبعد ذلك، يُمكنك تحديثه بناءً على مدى تكرار التحديث.

عندما يغلق المستخدم جلسة العمل الخاصة به، يقوم النظام بإزالة جميع البيانات الموجودة فِي جدول TempDB.