افزایش کارایی و پرفرمنس در کلیک‌ویو

موضوعات : فوق‌تخصصی, طراحی

یکی از مهم ترین چالش های نرم‌افزارهای کاربردی بخصوص در زمینه دیتا‌بیس سرعت اجرا و پاسخ سریع به جستجو است. حتما تابحال با نرم‌افزارهایی برخورد داشته‌اید که با افزایش حجم داده‌ها، سرعت و کارایی آنها کاهش یافته حتی گاهی باعث شده عطای نتیجه را به لقای سرعت بخشید. کلیک‌ویو برای نمایش داده‌ها، نخست تمامی اطلاعات را از جداول دریافت و در درون خود ذخیره کرده و ارتباط میان جداول را برقرار می‌کند. عوامل بسیاری وجود دارد که بر عملکرد یک نرم‌افزار مانند کلیک‌ویو تأثیر می گذارد، از جمله نحوه استفاده از کلیدها، ساختار داده‌ها و نحوه مدل سازی آنها. کاهش سرعت و کارایی در کلیک‌ویو بسیار قابل مشاهده خواهد بود اگر حجم داده‌ها، تعداد رکوردها و فیلدها، تعداد جداول، نوع کلیدها که در ارتباط میان جداول ایجاد می‌شود و ... و بیش از حد باشد.


کارهای مختلفی برای افزایش کارایی میتوان انجام داد که در زیر به شرح آنها میپردازم.

  • تعداد رکوردها را کم کنید: اگر مدیریت نیازی به اطلاعات گذشته دور مثلا ده سال پیش ندارد پس چه لزومی دارد آنها را داخل برنامه کنید.
  • تعداد فیلدها را کم کنید: موقع لود برنامه فقط فیلدهایی را که نیاز دارید و یا مدیریت نیاز دارد را بارگذاری کنید
  • ارتباط میان جداول را برپایه فیلد از نوع عددی بسازید: فرض کنید یک جدول(جدول مشتری) دارید شامل کد مشتری و نام مشتری و جدول دیگری که دارای اطلاعات فروش(جدول فروش) شامل کد مشتری و مبلغ میباشد, ارتباط این دو از طریق کد مشتری برقرار میشود.
Customer:LOAD * Inline [customer, name]; 
Sale:LOAD * Inline [customer , sale];

پس از لود کردن اسکریپت ارتباط میان جداول بصورت زیر خواهد بود

ارتباط جداول

حال چگونه میتوان این ارتباط را برپایه عدد کرد؟

بهترین راه استفاده از AutoNumber  میباشد یعنی اسکریپت را به صورت زیر تغییر می‌دهیم:

Customer:LOAD * Inline [customer, AutoNumber(customer) As account, name];
Sale:LOAD * Inline [AutoNumber(customer) As account , sale];

آنگاه ارتباط میان دو جدول به صورت زیر برقرار میگردد:

این ارتباط بسیار سریعتر از ارتباط پیشین خواهد بود.

  • حل مشکل کلیدهای ترکیبی: مشکل کلیدهای ترکیبی مشکلی بزرگی است، با یک مثال میتوان موضوع کلیدهای ترکیبی را بهتر روشن نمود: فرض کنید سه جدول یه صورت زیر داریم
  1. جدول کشور: کد و نام
  2. جدول شهر: کد کشور و کد شهر و نام شهر
  3. جدول مشتری: کد مشتری و نام مشتری و کد کشور و کد شهر
Country:load * Inline [countryCode, countryName];
City:load * Inline [countryCode, cityCode, cityName];
Customer:load * Inline [countryCode, cityCode, customerId, customerName];

پس از لود برنامه ارتباط میان این سه جدول بصورت زیر خواهد بود:

همانگونه که مشاهده می‌کنید جدولی به نام $Syn 1 Table ایجاد شده کار این جدول برقراری ارتباط میان سه جدول اصلی میباشد و کلیک ویو بدلیل ساختارش نیاز به آن دارد، واضح است این جدول بار اضافه برای کلیک ویو دارد اگر بتوان آن را حذف نمود سرعت بسیار بیشتر خواهد شد بخصوص اگر حجم داده ها بسیار باشد. برای این منظور یک فیلد جدید به جدول شهر اضافه میکنیم که مقدار آن عددی و ترکیب دو فیلد کد کشور و کد شهر و همین فیلد را در جدول مشتری هم ایجاد می‌کنیم.

Country:load * Inline [countryCode, countryName];
City:load * Inline [AutoNumber(countryCode & - & cityCode) as ccID, countryCode, cityCode, cityName];
Customer:load * Inline [AutoNumber(countryCode & - & cityCode) as ccID, customerId, customerName];

پس از این تغییر ارتباط این سه جدول به صورت زیر خواهد بود

همان‌گونه که مشاهده می‌کنید هیچ اثری از جدول اضافه نمیباشد.



کپی
لینک اشتراک گذاری

  • 783
  • 0