بهینه‌سازی پایگاه داده با شاخص گذاری

وب سرور

وب سرور


بهینه‌سازی پایگاه داده با شاخص گذاری-موسسه چشم انداز-آموزش کاربردی GIS و RS

شاخص گذاری، تکنیکی در پایگاه داده است که جستجوهای زیادی را در یک ستون خاص انجام می‌دهد. شاخص گذاری داده‌های یک ستون را تجزیه و تحلیل می‌کند و جستجوی داده‌ها را مدیریت می‌کند. در مرحله‌ی برنامه ریزی، کاربران سیستم سرویس‌های GIS را جستجو می‌کنند تا رستوران‌های نزدیک را پیدا کنند. پس بهتر است روی ستون مورد جستجو، شاخص گذاری قرار دهیم. دقت داشته باشید که نیازی نیست همه‌ی گروهبندی‌های موجود در پایگاه داده را روی نقشه نمایش دهیم مثلاً نیازی نیست که فعالیت‌ها را نشان دهیم و به‌جای پاک کردن بعضی از رکوردها، از فیلتری استفاده می‌کنیم که رکوردهای مورد نظرمان را نشان دهد. از جستجویی استفاده می‌کنیم که فقط مکان‌های موجود درلایه‌ی Food and Drink را نمایش دهد.

زبان جستجوی ساختاریافته‌ی (Structured Query Language (SQL، زبان برنامه‌نویسی خاصی است که داده‌های موجود در یک پایگاه داده‌ی رابطه‌ای را بازیابی، تولید و مدیریت می‌کند. کد زیر یک جستجو را با زبان SQL نشان می‌دهد:

SELECT * FROM LANDMARKS WHERE CATEGORY = ‘Food and Drink’;

در نمودار ER نمی‌توان شاخص‌گذاری انجام داد؛ اما می‌توان شاخص‌گذاری را با DBMS مورد نظرمان پیاده‌سازی کنیم.

طراحی GIS سرویس‌ها

هنگامی‌که زیرساخت یک سازمان را ایجاد می‌کنیم، طراحی GIS سرویس‌ها فرآیندی اساسی و پایه‌ای است. نیازهای سازمان باید به دقت بررسی و تعیین شوند و برای رفع این نیازها راه حل‌های مناسبی ارائه شود. با استفاده از تکنیک‌های طراحی به سمت این پیشنهادها و راه حل‌ها حرکت می‌کنیم. سرویس‌های پیشنهادی، باید ارائه دهنده‌ی راه حل باشند. در مرحله‌ی برنامه ریزی دو گزینه را پیشنهاد کردیم متعاقباً به دو طراحی UML نیاز داریم.

گزینه‌ی اول: سرویس نقشه‌ای منفرد

طراحی سرویس نقشه‌ای منفرد سرویسی است که همه‌ی رستوران‌ها را نگه می‌دارد. سرویس، یک سند نقشه‌ای است که روی سرور منتشر می‌شود و شامل لایه‌هایی است که به پایگاه داده اشاره می‌کنند. در بخش‌های قبلی پایگاه داده را طراحی کردیم، حال باید GIS سرویس را طراحی کنیم. می‌توانیم با استفاده از لایه‌ی Food and Drink یک طراحی خیلی ساده شروع کنیم. این لایه شامل سه گروه بندی رستوران‌ها، کافه‌ها و سالن‌ها است. جدول Landmarks شامل همه‌ی مکان‌ها است. در این لایه فقط آن مکان‌هایی که در گروه بندی Food and Drink قرار دارد را جستجو کنیم. سرورها، اجزاء و مولفه‌های آن‌ها و چگونگی ارتباط آن‌ها با هم را با استفاده از نمودار، مدل می‌کنیم. در این مثال دو سرور داریم: 1- سرور پایگاه‌ داده‌ شامل یک نمونه از پایگاه‌ داده‌ی BelizeDB است که این پایگاه داده را طراحی می‌کند. 2- سروری که ArcGIS for Server را نگه می‌دارد. در این سرور، سرویس food and drink را قرار می‌دهیم. در این سرویس، لایه‌ای برای اشاره به سرور پایگاه داده وجود دارد.

زمان انتشار سرویس رسیده است اما این سرویس چه چیزی را به گردشگر نشان می‌دهد؟ گردشگر باید همه‌ی رستوران‌ها، کافه‌ها و سالن‌ها را در یک لایه‌ ببیند و یک راهنمای نقشه باید در کنار این لایه قرار گیرد. فرض کنید که گردشگر می‌خواهد امشب به مراسم شعرخوانی که در سالن اجرا می‌شود برود. پس گردشگر فقط می‌خواهد سالن‌ها را ببیند اما نقشه کافه‌ها و رستوران‌ها را هم نمایش می‌دهد زیرا رستوران‌ها، کافه‌ها و سالن‌ها همه در یک لایه قرار دارند. هر کارشناس GIS به‌خوبی می‌داند که نمی‌توان یک لایه را بدون سمبولوژی نمایش داد بدین معنی که نمی‌توان لایه‌ی مذکور را تنها با سمبولوژی سالن‌ها نمایش داد. پس کلاً یا یک لایه به همراه تمام سمبولوژی اش نمایش داده می‌شود و یا لایه و همه‌ی سمبولوژی اش نمایش داده نمی‌شود. پس در طراحی ما مشکل مذکور وجود دارد. برای حل این مشکل باید هر گروه بندی (رستوران، کافه و سالن) را در یک لایه قرار دهیم.

گزینه‌ی دوم: سرویس‌های نقشه‌ای چندگانه

در این روش، هر کدام از لایه‌ها را به‌عنوان یک سرویس نقشه‌ای جداگانه منتشر می‌کنیم. به بیان دیگر رستوران‌ها، کافه‌ها و سالن‌ها هر کدام در یک سرویس جداگانه قرار می‌گیرند. اگر بخواهید سرویس‌هایتان را از سرویس‌های دیگر جدا کنید مواردی مانند مدیریت بهتر منابع، امنیت مقاوم و هر گونه بهینه‌سازی دیگر مسئله ساز خواهد بود. نمودار UML مربوط به سرویس‌های نقشه‌ای چندگانه را در زیر می‌بینید:

طراحی سرویس‌های نقشه‌ای منفرد و چندگانه

با توجه به نیازهای سازمان، طراحی به دو صورت سرویس نقشه‌ای منفرد و یا چندگانه می‌باشد. در مرحله‌ی پیاده‌سازی دو نوع طراحی را پیشنهاد کردیم. می‌توانید برای آزمایش و بررسی مقاومت طراحی‌تان تجزیه و تحلیل‌های بیشتری انجام دهید تا طراحی خوبی را انتخاب کنید. بیائید این طراحی‌ها را با هم بررسی کنیم. اگر می‌خواهید از منابع کمتری استفاده کنید، طراحی سرویس نقشه‌ای منفرد راه حل خوبی است. یک سرویس همه‌ی داده‌های را در خود نگه می‌دارد و یکپارچگی داده‌ها تضمین می‌شود و به هنگام سازی داده‌ها و انتشار دوباره‌ی سرویس راحت است. علاوه بر این اگر مواردی با داده‌ی‌های اشتباهاً وارد سرویس شده‌اند، به‌جای مدیریت چندین سرویس، مدیریت واحدی روی همه‌ی داده‌ها دارید. نقصی که در طراحی سرویس نقشه‌ای منفرد وجود دارد این است که از نظر امنیتی محدود خواهید شد زیرا ArcGIS for Server فایل log را در سطح سرویس تولید و نگهداری می‌کند. پس در انتخاب نوع طراحی پارامترهای مورد نظرتان را به‌خوبی بررسی کنید. اگر امنیت و کنترل برای شما موارد مهمی نیستند، می‌توانید همه‌ی داده‌ها را در یک سرویس قرار دهید؛ اما اگر داده‌های زیادی دارید و می‌خواهید به داده‌ها مجوزهای دسترسی اعمال کنید، بهتر است از سرویس‌های نقشه‌ای چندگانه استفاده کنید.

گسترش سرویس‌های GIS

این مرحله جایی است که اسناد نقشه‌ای (.mxd)، نمودارها و مراحل انجام کار را به‌صورت واقعی پیاده‌سازی می‌کنیم. هم‌چنین سیستم‌های موردنیاز را انتخاب می‌کنیم. این انتخاب بستگی به DBMS ای دارد که پایگاه داده‌ی شما را مدیریت می‌کند. همانطور که قبلاً بیان شد نمی‌توان مدلسازی را در مرحله‌ی طراحی پیاده کرد. در این مرحله پایگاه داده را به ژئودیتابیس تبدیل می‌کنیم و برای انتشار سرویس‌ها از این ژئودیتابیس استفاده می‌کنیم.

فعال سازی ژئودیتابیس

در پایگاه داده‌ای که طراحی کردیم، ژئودیتابیس را فعال نکرده‌ایم. پس نمی‌توان سرویس‌های GIS را منتشر کرد. برای فعال سازی ژئودیتابیس به یک DBMS و یک ژئودیتابیس Enterprise نیاز داریم. البته می‌توان از ژئودیتابیس personal نیز استفاده کرد.

Microsoft Office را نصب کنید تا ArcMap به فایل excel متصل شود.

ArcMap را بازکنید. Add Data را بزنید. فایل Belize_landmarks.xls را پیدا کنید و دو بار روی آن کلیک کنید. شیت Belize_Landmarks$ را انتخاب کنید تا به نقشه اضافه شود. فعلاً چیزی روی نقشه نمایش داده نمی‌شود زیرا شیت excel یک جدول است و ArcMap نمی‌تواند آن را نمایش دهد. این جدول باید به یک کلاس عارضه تبدیل شود. روی شیت Belize_Landmarks$ که در TOC قرار دارد، راست کلیک کنید و Display XY Data را انتخاب کنید. در پنجره ظاهر شده فیلدهای طول و عرض جغرافیایی را معرفی می­کنیم. در شیت excel دو ستون به نام‌های longitude و latitude وجود دارد که شامل مختصات طول جغرافیایی و عرض جغرافیایی هستند. ArcMap به‌طور خودکار ستون‌های شیت را شناسایی می‌کند.

در لیست بازشوی X Field ستون Longitude و در لیست بازشوی Y Field ستون Latitude را انتخاب کنید. روی Edit کلیک کنید و Geographic Coordinate System را گسترش دهید. گره North America را بازکنید و Mexican Datum of 1993 را انتخاب کنید. OK را بزنید تا پنجره‌ی Spatial Reference Properties بسته شود.

مجدداً OK را بزنید. ممکن است اعلانی ظاهر شود که ” فیلد ObjectID برای جدول وجود ندارد”. ماژول  ArcMap برای پیمایش رکوردها به این فیلد نیاز دارد پس این فیلد را ایجاد می‌کند.

ArcMap اطلاعات طول و عرض جغرافیایی را روی نقشه نمایش می‌دهد. این اطلاعات را به‌صورت نقاطی با استفاده از سمبولوژی پیش‌فرض خواهید دید. این نقاط هنوز در قالب یک جدول هستند و هنوز به یک شی جغرافیا مبنا تبدیل نشده است. پس باید از این جدول یک کلاس عارضه خروجی گرفت تا در ژئودیتابیس قرار داده شود. روی لایه‌ی Belize_Landmarks راست کلیک و از گزینه‌ی Data گزینه‌یExport Data را انتخاب کنید. در پنجره‌ی ظاهر شده در لیست بازشوی Export گزینه‌ی All Features را انتخاب کنید و در فیلد output feature class روی آیکون browse کلیک کنید.

این مرحله از یک ژئودیتابیس می‌خواهد تا این کلاس عارضه را در آن قرار دهد. ازآنجا که هنوز ژئودیتابیسی ایجاد نکرده‌ایم، یک ژئودیتابیس موقتی ایجاد می‌کنیم. در پنجره‌ی Saving Data در مسیر 7364EN_04_Files\AGSA\Data قرار بگیرید و در کادر پائین این پنجره لیست بازشوی Save as type را بازکنید و گزینه‌ی File and Personal Geodatabase feature classes را انتخاب کنید. روی آیکون New File Geodatabase کلیک کنید. این آیکون در بالای پنجره‌ی Saving Data قرار دارد. نام ژئودیتابیس را Belize بگذارید و روی این ژئودیتابیس دو بار کلیک کنید. سپس نام کلاس عارضه را Landmarks بگذارید و روی Save کلیک کنید.

OK را بزنید تا از لایه‌ی Belize_Landmarks خروجی گرفته شود. اعلانی با عنوان “آیا می‌خواهید این کلاس عارضه به نقشه اضافه شود؟” ظاهر می‌شود. روی Yes کلیک کنید. در TOC تیک جدول قبلی را بردارید.

بهتر است که کلاس عارضه‌ی Landmarks را به ژئودیتابیس Enterprise که در نمودار UML طراحی کرده بودیم، منتقل کنید.

اضافه کردن یک نقشه‌ی مبنای جهانی

به اطلاعات پوشش اراضی (مانند مسکونی، تجاری، خیابان و …) برای نمایش رستوران‌ها، کافه‌ها و سالن‌ها نیاز داریم. برای این کار از سرویس نقشه‌ای عمومی ESRI استفاده می‌کنیم. برای اضافه کردن این نقشه‌ی مبنا از URL پروتکل REST که به‌صورت زیر است، استفاده می‌کنیم.

http://server. arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer

می‌توانیم این URL را به سرویس اضافه کنیم. همانطور که در فصل قبلی توضیح دادیم، می‌توانید از JavaScript API برای کد نویسی سرویستان استفاده کنید و این URL را به کد اضافه کنید تا نقشه‌ی موجود در این سرویس را در مرورگر ببینید. با رجوع به فصل قبل می‌توانید عملیات مذکور را در قالب کد پیاده‌سازی کنید.

ایجاد سرویس‌های GIS

حال که یک ژئودیتابیس دارید، از مهارت‌هایی که در فصل قبل کسب کردید استفاده می‌کنید تا طراحی را پیاده‌سازی کنید. از مراحل برنامه ریزی، تجزیه و تحلیل و طراحی عبور کردیم و حالا به مرحله‌ی پیاده‌سازی راه حل رسیدیم.

قبل از پیاده‌سازی طراحی، به مواردی نیاز داریم.

یک سند نقشه‌ای جدید بازکنید و کلاس عارضه‌ی Landmarks را که در ژئودیتابیس Belize قرار دارد را به سند اضافه کنید. این کلاس عارضه شامل تمامی گروهبندی‌ها است. این کلاس عارضه را باید فیلتر کنیم و تنها داده‌های Food and Drinks را برای نمایش انتخاب کنیم. اولین کار این است که لایه‌ی Landmarks را به Foods and Drinks تغییر نام دهید. حال باید یک جستجو روی این لایه تعیین کنیم. روی لایه‌ی Foods and Drinks راست کلیک و از منوی ظاهر شده روی Properties کلیک کنید. سربرگ Definition Query را بزنید. عبارت زیر را در کادر متنی موجود در پنجره وارد کنید:

“Category” = ‘Food and Drink’

برای پیشگیری از خطا می‌توانید از ابزار query builder استفاده کنید. این ابزار که در ArcMap قرار دارد، برای ایجاد و تغییر عبارات SQL به کار می‌رود. عبارت بالا تنها عوارض موجود در گروهبندی Food and Drinks را برمی‌گرداند. سربرگ Symbology را بزنید و از سمت چپ پنجره روی Categories کلیک کنید و Unique values را انتخاب کنید. در لیست بازشوی Value Field فیلد SubCategory را انتخاب و یک سمبولوژی برای آن انتخاب کنید. سرور هنوز از سمبولوژی‌های پیچیده و سه بعدی پشتیبانی نمی‌کند.

حالا باید نقشه‌ی جهانی Esri را پاک‌کنید زیرا این نقشه قابلیت انتشار را ندارد. سپس از این سند نقشه‌ای یک سرویس نقشه‌ای به نام Food_and_Drinks منتشر کنید. به یاد داشته باشید که این سرویس باید قابلیت جستجو داشته باشد تا کاربران سرویس بتوانند مکان‌های مورد نظرشان را جستجو کنند. پس باید گزینه‌ی query را برای این سرویس فعال کنید. در فرم Service Editor سربرگ Mapping را انتخاب کنید و تیک گزینه‌ی Query را بزنید. با استفاده از تکنیک‌های موجود در گزینه‌ی 1 می‌توانید گزینه‌ی چندسرویسه را پیاده‌سازی کنید و با تکنیک‌های موجود در گزینه‌ی 2 باید سه سند نقشه‌ای جداگانه ایجاد کنید.

گزینه‌ی 2 را با استفاده از تکنیک‌هایی که در فصل‌های قبلی یاد گرفتید، به کار ببرید. سه سرویس برای رستوران، کافه و سالن‌ها ایجاد و منتشر کنید. برای هر سرویس بر اساس فیلد Rating سمبولوژی اعمال کنید.

برگرفته از کتاب نصب، اجرا و مدیریت Arc GIS for server

نویسنده: دکتر محمد بافقی زاده

نشر: انتشارات اکادمیک

وب جی آی اس (WebGIS)


Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

Warning: ltrim() expects parameter 1 to be string, object given in /home/gisland1/public_html/wp-includes/formatting.php on line 4494

ArcGIS for ServerArcMapDBMSDisplay XY DataERExcelGeographic Coordinate SystemgisGIS سرویسJavaScript APIlatitudelongitudeMicrosoftMicrosoft OfficemxdSpatial Reference PropertiesSQLStructured Query LanguageURLX FieldY Fieldئودیتابیس Enterpriseبازیابیبهینه‌سازی پایگاه دادهپایگاه دادهپایگاه‌ داده‌ی BelizeDBپروتکل RESTپوشش اراضیپیاده‌سازیتجاریتجزیه و تحلیلتولیدجستجوی داده‌هاخیابانژئودیتابیسژئودیتابیس personalستون‌های شیتسرویس نقشه‌ای عمومی ESRIسرویس نقشه‌ای منفردسرویس‌های GISسمبولوژیسند نقشه‌ایسیمبولوژیشاخص گذاریطراحی GIS سرویس‌هاطراحی UMLطول جغرافیاییعرض جغرافیاییفایل excelفایل logفعال سازی ژئودیتابیسفیلد ObjectIDکارشناس GISکد نویسیگسترش سرویس‌های GISماژول ArcMapمختصاتمدلمدیریتمسکونینقشه‌ی مبنانمودار

بدون دیدگاه

دیدگاهتان را بنویسید