إنشاء جداول مؤقتة أو تعديلها لتحسينِ البيانات
يخزّن النظام جداول 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.