جديدترين مقالات مرتبط با مدیریت فناوری اطلاعات IT
ارسال شده توسط احمد محمدی | 21 08, 2017 | بازدید‌ها (580)

CDN چیست؟

در این مقاله قصد داریم تا شما را با مفهوم CDN یا همان Content Delivery Network و تاثیر آن بر عملکرد بهتر سایت و افزایش سرعت بارگذاری آن آشنا کنیم. همانطور که از اسم آن مشخص است CDN وظیفه رساندن و توزیع محتوا و اطلاعات شما به سرور بازدیدکننده سایت را بر عهده میگیرد. ولی در عمل وظیفه CDN چیست؟ با استفاده از این سیستم سرعت ارسال اطلاعات به بازدیدکنندگان سایت افزایش یافته و زمان بارگذاری صفحات تا حد زیادی کاهش می یابد.

نحوه عملکرد CDN برای کاربران سایت

نحوه عملکرد CDN برای کاربران سایت

زمانیکه شما یک سیستم CDN را فعال میکنید تاثیر آن بصورت زیر خواهد بود:

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

2- CDN تمام اطلاعات ثابت شما مانند تصاویر، کدهای CSS و javascript، mp3، pdf و فایلهای ویدئویی شما را پشتیبانی میکند و تنها اطلاعاتی که قابل تغییر و بروزرسانی هستند مانند متون و کدهای HTML از سرور اصلی شما فراخوان میشوند. با این کار مصرف پهنای باند هاست شما کاهش یافته و هزینه ای که سالانه برای آن میپردازید کاهش چشمگیری خواهد داشت.

3- تفاوت سرعت و عملکرد برای خودتان یا افرادی که در نزدیکی سرور اصلی شما هستند تفاوت زیادی نخواهد داشت، ولی برای کسانی که ار نقاط مختلف جهان به سایت شما وارد میشوند این افزایش سرعت ناشی از CDN کاملا محسوس خواهد بود. با توجه به اینکه سایتهای ایرانی معمولا سرور و هاست خود را از خارج و کشورهایی مانند آلمان و آمریکا تهیه میکنند و عموم بازدیدکنندگان از داخل کشور هستند استفاده از CDN میتواند بسیار موثر باشد. برای تعیین تاثیر CDN بر سرعت سایت میتوانید عملکرد خود را با ابزارهایی مانند Pingdom و GTmetrix بعد و قبل از فعال سازی CDN بررسی و مقایسه کنید.

برای شناخت اهمیت سرعت سایت و دیگر روش های افزایش آن میتوانید به مقاله 15 نکته برای افزایش سرعت سایت در همین وبلاگ مراجعه کنید.

مزایای استفاده از CDN چیست

در این بخش برخی از مزایای بکارگیری سیستم Content Delivery Network را بصورت مختصر بیان خواهیم کرد:

  • سرعت بیشتر سایت و افزایش رضایت بازدیدکنندگان
  • بهبود وضعیت سئو سایت
  • کسب رتبه بهتر در نتایج جستجوی گوگل
  • کاهش مصرف پهنای باند و ترافیک هاست
  • افزایش تعداد صفحات بررسی شده در روز توسط روبات های گوگل
  • ارتباط و همخوانی راحت با مدیریت محتوای وردپرس

CDN  چرا ساخته شد

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

اینجاست که تکنولوژی CDN بسیار کارآمد می‌شود و می‌تواند به تمامی شرکت‌های کوچک و وبمسترهای سایت‌های خصوصی قدرت شرکت‌های بزرگ را بدهد. این سرویس به اینگونه کار می‌کند که از روی اطلاعات قابل دانلود شدن سایت شما (مانند فایل کدهای CSS، فایل کدهای جاوااسکریپت، فایل‌های مولتی مدیا و …) یک نسخه کپی بر روی nodes یا سرورهای مختلف خود که در سراسر جهان دارد تهیه می‌کند و می‌توانند به صورت اشتراکی به بسیاری از سایت‌ها سرویس دهند. در این حالت وقتی کاربری با مرورگر خود می‌خواهد سایت شما را مشاهده کند اطلاعات از نزدیک‌ترین سرور موجود به آن کاربر به او ارسال می‌شود و این چون این اطلاعات قبلاً ثبت (Cache) شده‌اند و نیاز به پروسه خاصی نیست سرعت تبادل اطلاعات تغییر چشم گیری می‌کند و …

زمانیکه شما یک سیستم CDN را فعال میکنید تاثیر آن بصورت زیر خواهد بود:

1- شبکه توزیع محتوا یا همان CDN تمامی سرورهای شبکه جهانی اینترنت را پوشش میدهد. بنابراین زمانیکه شما این سیستم را برای سایت خود فعال میکنید اطلاعات شما بر روی تمامی این سرورها کپی و ذخیره میشود و زمانیکه یک بازدیدکننده به سایت یا وبلاگ شما وارد میشود محتوای سایت شامل تصاویر و متون را از نزدیک ترین سرور نزدیک به خود دریافت میکند و مستقیماً به هاست یا سرور شما متصل نمی‌شود. این کار موجب بهبودی چشمگیر در عملکرد سایت شما خواهد شد.

2- CDN تمام اطلاعات ثابت شما مانند تصاویر، کدهای CSS و javascript، mp3، pdf و فایلهای ویدئویی شما را پشتیبانی میکند و تنها اطلاعاتی که قابل تغییر و بروزرسانی هستند مانند متون و کدهای HTML از سرور اصلی شما فراخوان میشوند. با این کار مصرف پهنای باند هاست شما کاهش یافته و هزینه ای که سالانه برای آن میپردازید کاهش چشمگیری خواهد داشت.

3- تفاوت سرعت و عملکرد برای خودتان یا افرادی که در نزدیکی سرور اصلی شما هستند تفاوت زیادی نخواهد داشت ولی برای کسانی که ار نقاط مختلف جهان به سایت شما وارد میشوند این افزایش سرعت ناشی از CDN کاملاً محسوس خواهد بود، با توجه به اینکه سایتهای ایرانی معمولاً سرور و هاست خود را از خارج و کشورهایی مانند آلمان و آمریکا تهیه میکنند و عموم بازدیدکنندگان از داخل کشور هستند استفاده از CDN میتواند بسیار مؤثر باشد. برای تعیین تاثیر CDN بر سرعت سایت میتوانید عملکرد خود را با ابزارهایی مانند Pingdom و GTmetrix بعد و قبل از فعال سازی CDN بررسی و مقایسه کنید.

چند سرویس دهنده CDN در حال حاضر وجود دارد

بسیاری از سرویس دهنده‌ها و شرکت‌های مختلف هم اکنون می‌توانند این امکان را برای شما نیز فراهم کنند که به دو بخش CDNهای رایگان و CDNهای تجاری (برای فروش) تقسیم می‌شوند. از معروف‌ترین سرویس‌های CDN رایگان می‌توان به Coral CDN، Speedy Mirror, CloudFlare اشاره کرد و همچنین در بخش CDNهای تجاری می‌توان به مایکروسافت ویندوز Azure (سرویس CDN مایکروسافت که البته خود یک هاست کامل است)، EdgeCast (که ویدئوهای وردپرس دات کام، و بخش‌هایی از لینکدین، تامبلر، تکنوراتی و … از آن استفاده می‌کنند)، Cache Fly و maxcdn و VPS.net و Amazon Cloudfront اشاره کرد که در میان آنها بهترین شرایط هزینه ای را MaxCDN دارد.
 
 

CDN چیست و چرا ساخته شد

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

اینجاست که تکنولوژی CDN بسیار کارآمد می‌شود و می‌تواند به تمامی شرکت‌های کوچک و وبمسترهای سایت‌های خصوصی قدرت شرکت‌های بزرگ را بدهد. این سرویس به اینگونه کار می‌کند که از روی اطلاعات قابل دانلود شدن سایت شما (مانند فایل کدهای CSS، فایل کدهای جاوااسکریپت، فایل‌های مولتی مدیا و …) یک نسخه کپی بر روی nodes یا سرورهای مختلف خود که در سراسر جهان دارد تهیه می‌کند و می‌توانند به صورت اشتراکی به بسیاری از سایت‌ها سرویس دهند. در این حالت وقتی کاربری با مرورگر خود می‌خواهد سایت شما را مشاهده کند اطلاعات از نزدیک‌ترین سرور موجود به آن کاربر به او ارسال می‌شود و این چون این اطلاعات قبلاً ثبت (Cache) شده‌اند و نیاز به پروسه خاصی نیست سرعت تبادل اطلاعات تغییر چشم گیری می‌کند و …

زمانیکه شما یک سیستم CDN را فعال میکنید تاثیر آن بصورت زیر خواهد بود:

1- شبکه توزیع محتوا یا همان CDN تمامی سرورهای شبکه جهانی اینترنت را پوشش میدهد. بنابراین زمانیکه شما این سیستم را برای سایت خود فعال میکنید اطلاعات شما بر روی تمامی این سرورها کپی و ذخیره میشود و زمانیکه یک بازدیدکننده به سایت یا وبلاگ شما وارد میشود محتوای سایت شامل تصاویر و متون را از نزدیک ترین سرور نزدیک به خود دریافت میکند و مستقیماً به هاست یا سرور شما متصل نمی‌شود. این کار موجب بهبودی چشمگیر در عملکرد سایت شما خواهد شد.

2- CDN تمام اطلاعات ثابت شما مانند تصاویر، کدهای CSS و javascript، mp3، pdf و فایلهای ویدئویی شما را پشتیبانی میکند و تنها اطلاعاتی که قابل تغییر و بروزرسانی هستند مانند متون و کدهای HTML از سرور اصلی شما فراخوان میشوند. با این کار مصرف پهنای باند هاست شما کاهش یافته و هزینه ای که سالانه برای آن میپردازید کاهش چشمگیری خواهد داشت.

3- تفاوت سرعت و عملکرد برای خودتان یا افرادی که در نزدیکی سرور اصلی شما هستند تفاوت زیادی نخواهد داشت ولی برای کسانی که ار نقاط مختلف جهان به سایت شما وارد میشوند این افزایش سرعت ناشی از CDN کاملاً محسوس خواهد بود، با توجه به اینکه سایتهای ایرانی معمولاً سرور و هاست خود را از خارج و کشورهایی مانند آلمان و آمریکا تهیه میکنند و عموم بازدیدکنندگان از داخل کشور هستند استفاده از CDN میتواند بسیار مؤثر باشد. برای تعیین تاثیر CDN بر سرعت سایت میتوانید عملکرد خود را با ابزارهایی مانند Pingdom و GTmetrix بعد و قبل از فعال سازی CDN بررسی و مقایسه کنید.

چند سرویس دهنده CDN در حال حاضر وجود دارد

بسیاری از سرویس دهنده‌ها و شرکت‌های مختلف هم اکنون می‌توانند این امکان را برای شما نیز فراهم کنند که به دو بخش CDNهای رایگان و CDNهای تجاری (برای فروش) تقسیم می‌شوند. از معروف‌ترین سرویس‌های CDN رایگان می‌توان به Coral CDN، Speedy Mirror, CloudFlare اشاره کرد و همچنین در بخش CDNهای تجاری می‌توان به مایکروسافت ویندوز Azure (سرویس CDN مایکروسافت که البته خود یک هاست کامل است)، EdgeCast (که ویدئوهای وردپرس دات کام، و بخش‌هایی از لینکدین، تامبلر، تکنوراتی و … از آن استفاده می‌کنند)، Cache Fly و maxcdn و VPS.net و Amazon Cloudfront اشاره کرد که در میان آنها بهترین شرایط هزینه ای را MaxCDN دارد.
 

راهنمای کامل در مورد(content delivery network)و مزایای استفاده

۰۴ اسفند
۱۳۹۵
  • مهدیزاده
  • آموزش سئو, فناوری اطلاعات
  • 3 نظر

 شبکه توزیع محتوا (CDN) چیست؟

شبکه توزیع محتوا از تعدادی سرویس دهنده ی (سرور) به هم پیوسته تشکیل شده است که با معیار های خاصی در سراسر دنیا پراکنده شده اند تا با استفاده از فاکتور نزدیکی جغرافیایی به توزیع محتوا بپردازند و صفحات وب را با بیشترین سرعت به کاربران ارائه نمایند.

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

با این سرویس حتی با وجود محدودیت در پهنای باند، وب سایت ها می توانند بسیار کارآمدتر به درخواست های کاربران برای دریافت محتوا پاسخ دهند. دلیل این موضوع این است که سرویس CDN با محاسبه نزدیکترین سرور به کاربر به توزیع محتوا می پردازد.

در واقع اتفاقی که می افتد این است که کاربر یک کپی از محتوای اصلی را دریافت می نماید که در نزدیکترین سرور به او قرار گرفته است. روشن است که این پروسه در مقایسه با دریافت داده از یک سرور مرکزی کارکرد بسیار سریعتری خواهد داشت و هرگز درگیر تنگناهای مربوط به شلوغی و عدم پاسخگویی سرور نخواهد شد.

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

راهنمای کامل در مورد شبکه توزیع محتوا (content delivery network) 

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

یکی از سوء تفاهم های رایج در مورد شبکه توزیع محتوا این است که عده ای گمان می کنند که با کار گیری آن نیازی به داشتن یک میزبان وب نیست. اما در واقع شبکه توزیع محتوا تنها به بهبود سایت کمک می کند و نمی تواند نقش سرویس میزبان وب را برای وب سایت بازی کند. به طور معمول نیاز است که از سرویس های میزبان برای وب سایتتان بهره بگیرید و از سرویس شبکه توزیع محتوا برای بالاتر بردن سرعت وب سایت استفاده نمایید تا با این کار تجربه ی بهتری را به کاربرانتان هدیه کنید.

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

شبکه توزیع محتوا مسائل مربوط به تاخیر در نمایش محتوا را برطرف می کند. این تاخیر به مدت زمانی میان لحظه ای که درخواست باز کردن یک صفحه وب ارسال می شود و لحظه ای که این صفحه برای شما به نمایش در می آید، گفته می شود. این تاخیر گاهی می تواند بسیار خسته کننده باشد و مهمترین موضوعی است که یک شبکه توزیع محتوا می تواند آن را حل کند.

چرا به شبکه توزیع محتوا (CDN) نیاز دارید؟

اگر مخاطب های شما در سراسر دنیا گسترده شده اند و تلاش می کنید تا به همه آنها سرویس دهی نمایید، مطمئنا به شبکه توزیع محتوا نیازمند خواهید بود. این سرویس به شما کمک می کند تا محتوای شما برای همگان در سراسر دنیا قابل دسترسی باشد. این سرویس مزایای بسیاری را برای وب سایت شما به همراه خواهد داشت. از جمله آنها می توان به افزایش سرعت بارگذاری سایت، بهبود تجربه کاربران (user experience) و جلوگیری از اختلال در نمایش سایت(site crashes) اشاره کرد. این مزایا به این دلیل بوجود آمده اند که شبکه توزیع محتوا بجای رسیدگی به تمام ترافیک از طریق یک سرور مرکزی، پهنای باند را بین چندین سرور توزیع می نماید. نکته مهم دیگر این که استفاده از این سرویس  و افزایش سرعت بارگذاری سایت می تواند در بهبود سئو سایت تاثیر گذار باشد و رتبه ی سایت را در نتایج جستجو بهبود دهد.

شاید مهمترین مزیت استفاده از شبکه توزیع محتوا جلوگیری از اختلال در نمایش سایت باشد چرا که این سرویس میزان ترافیک موجود در سرور مرکزی را تا حد قابل ملاحظه ای کاهش می دهد و ترافیک را بین سرور های مختلف توزیع می نماید. بنابر این از اختلال در سایت به دلیل حجم بالای ترافیک جلوگیری می شود.

استفاده از یک سرویس توزیع محتوای قابل اعتماد بسیار مهم است زیرا فقط یک ثانیه تاخیر در بارگذاری سایت می تواند نرخ تبدیل مخاطب به مشتری را به اندازه ی قابل توجهی کاهش دهد. تحقیقات نشان می دهد که تنها یک ثانیه تاخیر بیشتر در نمایش سایت تا ۱۵% رضایت مشتری را کاهش داده و بازدید از سایت را تا ۱۰% کمتر می کند. در هر تجارتی رضایت مشتری یکی از ارکان موفقیت به حساب می آید و ارتباط مستقیمی با درآمدهای آن تجارت خواهد داشت.

شبکه توزیع محتوا (CDN) چگونه عمل می کند؟

نحوه عملکرد

اکثر سرویس های شبکه توزیع محتوا به عنوان Application Service Providers عمل می کنند. تعدادی از صاحبان شبکه اینترنت شروع به تولید شبکه توزیع محتوای اختصاصی می نمایند و به این طریق نحوه ی ارسال داده ها را به کاربران بهبود می دهند و در نهایت درآمد بیشتری به دست می آورند.

تکنولوژی استفاده شده

به منظور کاهش فاصله سرور شما با کاربر، سرویس CDN محتوای استاتیک وب سایت ها را در مکان های جغرافیایی مختلف ذخیره سازی می نمایند که این نقاط در مراکز داده به نام points of presence (PoP) شناخته می شوند. هر PoP از گره ها و سرورهایی تشکیل شده اند. بعضی از شبکه های توزیع محتوا از هزاران گره و ده ها هزار سرور برای کمک به توزیع محتوا استفاده می نمایند که این کار موجب تسریع در بارگذاری صفحات می شود.

به طور خلاصه، هنگامی که یک کاربر قصد بازدید از سایت شما را داشته باشد، درخواست او به سرور شبکه توزیع محتوا فرستاده می شود. سپس شبکه توزیع محتوا این درخواست را به نزدیکترین PoP ریدایرکت می نماید. این گره (node) محتوای مورد نظر کاربر را برای او بصورت استاتیک فراهم می کند، از این رو میزان تاخیر در ارسال داده کاهش می یابد و در نتیجه میزان رضایت کاربر از ارائه ی محتوا بالاتر می رود.

تکنیک های شبکه های محتوا

شبکه های توزیع محتوا از تکنیک های شبکه ای مختلفی برای ارائه محتوا استفاده می نمایند تا اینکه بتوانند رساندن آن را به کاربر هدف بهینه کنند. این تکنیک ها شامل حافظه پنهان وب (web caching)، تعادل بار سرور، مسیر یابی درخواست و سرویس های محتوا می شوند.

حافظه های پنهان وب

این حافظه محتواهایی که از دید کاربران محبوب هستند را بر روی سرورهایی با بیشترین تقاضا برای دریافت آن محتوا ذخیره می نماید. استفاده از این فرآیند نیاز به پهنای باند را کاهش می دهد، بار موجود بر روی سرور را کمتر می کند و پاسخگویی به کاربران را سرعت می بخشد.

تعادل بار سرور

در این تکنیک می توان از یک یا چند فرآیند به طور همزمان استفاده نمود. از جمله یک لایه سوئیچ ۷-۴ تایی (سوئیچ وب یا سوئیچ محتوا) که به یک آی پی آدرس اختصاص داده می شود تا ترافیک را بین چند سرور یا حافظه ی پنهان تقسیم نماید. این سوئیچ ها ترافیک آی پی های متصل شده به آن را به سرورهای مختلف هدایت می نماید و بنابراین بار ترافیکی بر روی سرورهای مختلف تقسیم می شود. علاوه بر این اگر یک سرور در ارائه ی محتوا دچار اختلال شود، بار موجود بر روی آن سرور بین سرور های دیگر تقسیم می شود و از این رو قابلیت اطمینان بالایی برای ارائه ی محتوا فراهم می شود.

مسیر یابی درخواست

این تکنیک، درخواست های کاربران را به نزدیکترین گره، با بیشترین ظرفیت ارائه ی محتوا، هدایت می نماید. برای انجام این کار از الگوریتم های مختلفی استفاده می شود. از جمله این الگوریتم ها می توان به مسیر یابی درخواست با توجه به DNS کاربر، بازنویسی HTML و بالانس جهانی بار بر روی سرور ها اشاره کرد. مجاورت کاربر به نزدیکترین سرور با استفاده از متدهای مختلفی از جمله reactive probing ، proactive probing و بازبینی ارتباط (connection monitoring) محاسبه می شود.

پروتکل های سرویس محتوا

به منظور دسترسی کاربران به سرویس های محتوای قابل دسترسی از طریق شبکه توزیع محتوا، چندین پروتکل سرویس محتوا طراحی شده است. در اواخر دهه ۹۰ میلادی، پروتکلی به نام انطباق محتوا در اینترنت (ICAP) طراحی شد تا یک استاندارد برای ارتباط با سرورها فراهم کند. پس از آن پروتکل OPES با راه حلی مختلف ارائه شد که با عنوان سرویس OPES از آن یاد می شود و می تواند بر روی پردازنده های OPES ذخیره شود یا از راه دور از روی سرور فراخوانی گردد. علاوه بر اینها برای رفع مشکل سیستم های حافظه پنهان که با هدف ذخیره ی محتواهای وب سایت ها تولید شده بودند، پروتکل ESI بوجود آمد.

مزایای استفاده از (CDN) شبکه توزیع محتوا

مزایای استفاده از شبکه توزیع محتوا برای کاربران

مهمترین مزیت این سرویس برای کاربران کاهش زمان بارگذاری سایت ها است. زیرا کاربران می توانند با این سرویس سریعتر به درخواست خود برسند و محتوای کمتری را از دست بدهند. زیرا محتوا سریعتر و از فاصله ای کوتاهتر به آنها ارائه می شود.

از آنجایی که محتوای وب بر روی سرورهای زیادی در سراسر دنیا توزیع شده است، می توان گفت که عموما کاربران به یکی از سرورها نزدیک هستند و به همین دلیل تاخیر در بارگذاری تا حد بسیار زیادی کاهش می یابد.

مزایای استفاده از شبکه توزیع محتوا (CDN) برای صاحبان وب سایت ها

از جمله مزایای مربوط به صاحبان سایت در استفاده از شبکه توزیع محتوا می توان به بار شبکه ی کمتر اشاره کرد که این موضوع از اختلالات سرور جلوگیری می نماید، هزینه ی رساندن محتوا به مخاطب کمتر می شود. همچنین سایت هایی که از این سیستم بهره می گیرند از حمله های گروهی DDoS حفاظت می شوند و با قابلیت اطمینان بیشتر، ۱۰۰% در دسترس بودن محتوا با بهترین کیفیت را برای مخاطب فراهم می نماید.

با هدایت کاربران به نزدیکترین سرور برای دریافت یک محتوای خاص بار شبکه تا حد زیادی کاهش پیدا می کند. این موضوع تا حد زیادی می تواند عملکرد یک وب سایت را بهبود دهد و از آن مهمتر از هر اختلال بالقوه در سرور جلوگیری نماید. زیرا با استفاده از شبکه توزیع محتوا بار شبکه بصورت متعادل بین سرور ها تقسیم می شود.

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

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

از آنجا که با این سرویس روند تحویل محتوا سریعتر می شود، قابلیت اطمینان محتوا نیز بطور قابل توجهی افزایش می یابد که این موضوع به خوبی بر روی تجربه ی کاربران اثر مثبت خواهد گذاشت. با داشتن نسخه های کپی شده از محتوا که بین سرور های مختلف در تمام دنیا توزیع شده است، می توان گفت که کاربران به طور ۱۰۰% به تمامی محتواهای شما دسترسی خواهند داشت.

نقاط قوت و ضعف (CDN) شبکه توزیع محتوا

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

نقطه ضعف دیگر شبکه توزیع محتوا مربوط به فایل های بهینه نشده شما است. میزبان های رایگان شبکه توزیع محتوا فایل ها را بصورت ۱۰۰% در دسترس قرار می دهند اما بسته های فایل ها ممکن است حجم بسیار بالایی داشته باشند و در ارائه آنها مشکلاتی بوجود بیاید. شما می توانید با ادغام فایل های CSS و JavaScript فایل ها را کم حجم تر کنید تا سرعت دانلود آنها را افزایش دهید. به این طریق شما می توانید فایل های بهینه شده را در یک شبکه توزیع محتوای خصوصی بارگذاری نمایید. استفاده از این روش علاوه بر صرف زمان و تلاش های فراوان، هزینه های اضافی نیز به همراه خواهد داشت.

در صورتی که از شبکه های توزیع محتوای رایگان استفاده کنید، امنیت داده ها اصلی ترین نگرانی شما خواهد بود و در صورتی که یک پایگاه داده ی شبکه توزیع محتوا دچار اختلال شود و در اصطلاح کرش (crash) کند، هیچ کاری غیر از انتظار برای بازگردانی دوباره داده ها از دست شما بر نمی آید. البته لازم به ذکر است که این اتفاق به ندرت برای این سرویس ها رخ می دهد.

چگونه می توان یک شبکه توزیع محتوای مناسب (CDN) را انتخاب کرد؟

هنگام انتخاب یک شبکه توزیع محتوا باید به ویژگی های خاص آن توجه داشته باشید تا مطمئن شوید که سرویسی با بهترین کیفیت را برای پاسخ به نیازتان برگزیده اید. اگر چه هزینه در انتخاب سرویس فاکتور مهمی به شمار می آید اما باید در انتخاب به ویژگی های مهم دیگری نیز توجه داشته باشید.

سرعت سرویس یکی از مهمترین فاکتورهای انتخاب آن به شمار می آید زیرا هدف استفاده از این شبکه بالا بردن سرعت و بهبود عملکرد سایت از دید کاربران است. از این رو باید بدانید که سرویسی که در اختیار شما قرار داده می شود با چه سرعتی می تواند محتوای شما را به دست کاربران برساند. از طرف دیگر می توان گفت که یک سرویس با کیفیت تنها فاکتور سرعت را برای یک سایت به همراه نمی آورد. قابل اعتماد بودن سرویس نیز به اندازه ی سرعت آن اهمیت دارد. از این رو در انتخاب سرویس باید مطمئن شوید که با بهترین کیفیت به نیاز های مخاطب پاسخ داده می شود.

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

علاوه براین اپراتورهای یک سرویس مناسب، پیوسته به آن رسیدگی می نمایند و با توجه به یک اصول منطقی پیوسته آن را به روز می کنند. بسیار مهم است که در بروز رسانی ها دسترسی به شبکه برای مشتریان حتی برای لحظاتی از بین نرود و همواره شبکه به درستی به خدمت رسانی ادامه دهد.

هنگام انتخاب شبکه توزیع محتوا تمامی موارد بالا از اهمیت بالایی برخوردار هستند اما شاید بتوان گفت که مهمترین نکته در انتخاب سرویس، محل قرار گیری سرور های شبکه باشد. این موضوع در مقایسه با ویژگی هایی که در بالا به آنها اشاره شد ممکن است کمی بی ربط باشد اما این نکته از ارزش بسیاری برخوردار است. اگر از یک شبکه توزیع محتوا استفاده می کنید، دیگر هیچ کدام از کاربران شما نباید از سرورهای ارائه دهنده ی محتوای شما دور بمانند. در صورتی که این فاکتور ارضا نشود ممکن است تمامی فاکتورهای دیگر را تحت الشعاع قرار دهد و در نتیجه محتوای شما با کیفیت به دست مخاطب نرسد.

بنابر این منطقی است که در اولویت اول محل قرار گیری سرور های شبکه توزیع محتوای مد نظرتان را شناسایی کنید تا مطمئن شوید در هنگام استفاده از آن، شما و کاربرانتان از آن سرویس بهره کافی را خواهید برد.

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

در صورتی که از سرویس های مدیریت محتوای شناخته شده مانند وردپرس استفاده می کنید، پیاده سازی این سرویس بسیار ساده تر هم خواهد بود. زیرا در سیستم های مدیریت محتوا افزونه هایی طراحی شده است که شما بتوانید بدون هیچ مشکلی از شبکه توزیع محتوا استفاده نمایید.

به خاطر داشته باشید که استفاده از یک شبکه توزیع محتوای کم کیفیت نیز بسیار بهتر از استفاده نکردن از این شبکه ها می باشد. با استفاده از این سرویس مخاطب اقبال بیشتری به سایت شما نشان خواهد داد و در نتیجه رتبه ی شما در نتایج موتورهای جستجو بالاتر خواهد رفت.

سرویس های عمومی شبکه توزیع محتوای رایگان و محبوبترین سرویس های CDN پرداختی

هنگامی که بهترین سرویس شبکه توریع محتوا را برای وب سایت خود انتخاب می کنید، می توانید از نسخه های پولی و یا نسخه های رایگان عمومی آن بهره بگیرید. هر دوی این نمونه ها مزایا و معایبی را برای شما به همراه خواهند داشت، اما مهم این  است که آن سرویسی را انتخاب نمایید که به بهترین شکل به نیازهای شما پاسخ می دهد.

 

سرویس های شبکه توزیع محتوای عمومی (CDN) رایگان

CDN رایگانبه عنوان بهترین سرویس های رایگان می توان از سرویس CDN گوگل، سرویس CDN مایکروسافت، سرویس jsDelivr CDN ، سرویس cdnjs CDN و سرویس jQuery CDN نام برد.

Google CDN

سرویس شبکه توزیع محتوای گوگل یک سرویس جهانی برای محبوبترین کتابخانه های منبع باز JavaScript از جمله jQuery ، jQuery UI ، jQuery Mobile ، Dojo ، Prototype ، AngularJS ، MooTools ، SPF و بسیاری دیگر می باشد.

به منظور بارگذاری کتابخانه jQuery از شبکه توزیع محتوای گوگل، کافی است کد زیر را در صفحه ی وب خود جاسازی نمایید:

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js”>

</script>

 Microsoft CDN

شبکه توزیع محتوای ماکروسافت نیز از کتابخانه های محبوب JavaScript از جمله jQuery, jQuery UI, jQuery Migrate, jQuery Mobile, Ajax Control Toolkit, Bootstrap, Globalize و بسیاری دیگر میزبانی می نماید. این سرویس CDN می تواند در بهبود عملکرد برنامه های Ajax بسیار موثر باشد.

به منظور بارگذاری کتابخانه jQuery سرویس CDN ماکروسافت می توانید کد زیر را در صفحه ی وب جاسازی نمایید:

<script src=”//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js”></script>

jsDelivr CDN

این سرویس ارائه دهنده ی یک شبکه توزیع محتوای منبع باز است که از ارائه دهندگان MaxCDN و CloudFlare CDN استفاده می نماید. از این رو می تواند بهترین عملکرد و زمان کار را ارائه نماید. این سرویس به توسعه دهندگان اجازه می دهد که از پروژه های شخصی خود میزبانی نمایند و همچنین ۱۲۰۰ پروژه میزبانی شده از جمله jQuery, Bootstrap و  Modernizr را به آنها ارائه می دهد. هیچ محدودیتی در مورد پهنای باند وجود نخواهد داشت و این سرویس امکان فعالیت کتابخانه های JavaScript، افزونه های jQuery و فریم ورک های CSS و … را فراهم می نماید.

به منظور بارگذاری کتابخانه jQuery از سرویس jsDelivr CDN کافی است کد زیر را در صفحه ی وب جایگذاری نمایید:

<script src=”//cdn.jsdelivr.net/jquery/2.1.4/jquery.min.js”></script>

cdnjs CDN

این سرویس یک شبکه توزیع محتوای رایگان است که توسط CloudFlare راه اندازی شده و صدها کتابخانه ی محبوب JavaScript و CSS از جمله jQuery, Bootstrap, Modernizr و … را شامل می شود.

به منظور بارگذاری کتابخانه ی jQuery از cdnjs CDN ، می توانید کد زیر را در صفحه وب خود جاسازی نمایید:

<script src=”https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js”></script>

jQuery CDN

شبکه توزیع محتوای jQuery سرویسی است که توسط MaxCDN ارائه شده و از کتابخانه های مخصوص خود از جمله jQuery UI, jQuery Mobile, jQuery Code, jQuery Unit, jQuery Color و PEP میزبانی می نماید.

برای بارگذاری کتابخانه jQuery از سرویس jQuery CDN می توانید کد زیر را در صفحه ی وب مورد نظرتان جاسازی  نمایید:

<script src=”https://code.jquery.com/jquery-2.1.4.min.js”></script>

سرویس های محبوب CDN پرداختی

از جمله سرویس های محبوب CDN پولی می توان به CDN77, MaxCDN, Amazon CloudFront, BitGravity, Akamai, CDNetworks, CacheFly, EdgeCast, Limelight و Incapsula اشاره کرد.

CDN77

این سرویس یکی از بهترین شبکه های توزیع محتوا را ارائه کرده است و بر خلاف دیگر سرویس ها، هیچ محدودیتی برای تعداد سایت ها نداشته و پوشش بسیار عالی را فراهم کرده است. قیمت این سرویس از ۴۹$ برای هر ترابایت انتقال داده شروع می شود. نکته جالب در مورد این سرویس عدم نیاز به تغییر DNS یا پیکربندی های اختصاصی می باشد.

MaxCDN

MaxCDN یکی از محبوبترین سرویس های CDN است که علاوه بر پشتیبانی تمام وقت (۲۴/۷)، ویژگی هایی همچون SSLهای اشتراک گذاری شده ی رایگان ، ارائه آمارهای لحظه ای و درصد کارکرد ۱۰۰% را به ازای دریافت ۷۹ دلار برای هر ترابایت انتقال داده به مشتریان ارائه می نماید. همچنین این سرویس در صورت عدم رضایت شما تضمین می دهد که پول یک ماه را به شما برگرداند.

Amazon CloudFront

این سرویس رابط کاربری بسیار ساده ای دارد و به راحتی قابل استفاده است. این سرویس به منظور کار با Amazon Simple Storage Service و Elastic Computer Cloud بهینه سازی شده است. با استفاده از CloudFront شما تنها مبلقی را برای استفاده هایتان پرداخت می نمایید و میزان پرداخت از ۰٫۱۲ دلار به ازای هر گیگابایت انتقال داده آغاز می شود.

BitGravity

BitGravity اولین سرویس شبکه توزیع محتوا است که برای فایل های ویدئویی HD بهینه شده و با استفاده از این سرویس شما می توانید مطمئن باشید که انتقال داده ای بسیار باکیفیت خواهید داشت. زیرا این سرویس بیش از دیگر سرویس ها در سراسر دنیا سرور فعال دارد و ارتباطات بیشتری را برقرار می نماید.

Akamai

با استفاده از Akamai پوشش بسیار مطلوبی خواهید داشت و انتقال داده بی عیب و نقص خواهد بود. این سرویس در ۷۲ کشور صدها هزار سرور فعال دارد و با این شبکه می توانید با خیال راحت داده هایتان را به کاربران ارائه نمایید.

CDNetworks

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

 

CacheFly

CacheFlyیک از قابل اعتماد ترین و سریعترین شبکه های توزیع محتوا است. این سرویس ۱۰ برابر سریعتر از دیگر سرویس های CDN می باشد و تمامی بسته های پیشنهادی استاندارد آن بصورت آزمایشی به مدت یک ماه به مشتریان بصورت رایگان ارائه می شود.

EdgeCast

این سرویس هم یکی دیگر از پرسرعت ترین و قابل اعتماد ترین سرویس های شبکه توزیع محتوا است و در حال حاضر به بیش از ۳ میلیون مشتری در سراسر دنیا خدمات ارائه می نماید.

Limelight

این سرویس عملکردی فوق العاده و دسترسی بسیار عالی را به شما پیشنهاد می کند. عملکرد سایت شما با این سرویس به هیچ گونه عیب و نقصی از طرف سرور دچار نخواهد شد. علاوه براین، با توجه به داشتن نرم افزارهای بر پایه ی cloud می تواند داده های ویدئویی را با سرعت بالا انتقال دهد. خدمات پشتیبانی سرویس Limelight بصورت ۲۴ ساعته در تمامی ۷ روز هفته به مشتریان ارائه می گردد.

Incapsula

این سرویس از کشینگ هوشمند و گزینه های کنترل حافظه پنهان (کش) استفاده می نماید. همچنین با استفاده از ابزارهای بهینه سازی شبکه و محتوا باعث می شود تا وب سایت های تحت پوشش آن از سرعت بسیار مطلوبی برخوردار شوند. در صورتی که از این سرویس استفاده نمایید می توانید مطمئن باشید که سرعت وب سایتتان ۵۰% افزایش خواهد یافت و پهنای باند مورد نیاز آن تا ۷۰% کمتر خواهد شد.

KeyCDN

KeyCDN یک سرویس قدرتمند است و به آسانی می توان از آن استفاده کرد. این سرویس از ویژگی هایی از جمله HTTP/2، سرویس رایگان Let’s Encrypt integration و آمارهای به روز و قابل دسترسی در لحظه برخوردار می باشد. قیمت ترافیک این سرویس پایین می باشد ( از ۰٫۰۴$ به ازای هر گیگابایت انتقال داده به بالا) و رفته رفته با افزایش مصرف شما فزایش می یابد.

 

تقریبا تمامی سرویس های شبکه توزیع محتوا  به شما یک دوره استفاده آزمایشی رایگان ارائه می دهند تا به شما کمک کنند که دید درستی از آن سرویس ها پیدا کنید و دریابید که آیا سرویس انتخابی شما پاسخگوی نیازهایتان است یا خیر. برخی از این سرویس ها نیز به ازای ارائه خدمات قیمت ثابتی را از شما دریافت نمی کنند و شما باید بسته به میزان مصرفتان به آنها هزینه پرداخت نمایید.

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

راه های پیاده سازی یک شبکه توزیع محتوا

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

نکات کلیدی که باید به ان توجه شود

باید توجه داشته باشید که CDN ها اغلب توسط شبکه های ثالثی اداره می شوند. این شبکه ها باید دارای پشتیبانی مشتریان قابل قبولی داشته باشند تا در مواجهه با بد افزارها و قطعی های بالقوه، مشکل شبکه را برطرف نمایند. در صورتی که سرویس CDN از پشتیبانی مناسبی برخوردار نباشد برطرف نمودن مشکلات شبکه از عهده ی شما خارج خواهد بود و ممکن است حل این مشکلات نیاز به زمانی طولانی برای شما داشته باشد.

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

نکته دیگر که باید به آن توجه شود این است که اگر چه ممکن است یک شرکت تعداد زیادی سرور در سراسر دنیا داشته باشد اما ممکن است سرور های آن شرکت محدوده ی کشور شما را به خوبی پوشش نداده باشند. در این موارد بهتر است که تمامی منابع شما در سرور اصلی خودتان ذخیره شود.

نتیجه گیری

اگر چه سرویس های CDN نقاط ضعفی دارند که شما را ملزم به دقیق تر شدن در انتخاب می نماید اما مزایای استفاده از این سرویس ها آنقدر زیاد است که همواره کفه ترازو به سمت استفاده کردن از آنها سنگینی می کند. استفاده از سرویس های شبکه نوزیع محتوا منافع مهمی را برای وب سایت شما به همراه خوهد داشت و با استفاده از آنها می توانید هم عملکرد سایتتان را بهبود دهید و هم برخورد بهتری با مخاطبانتان داشته باشید.

 
ارسال شده توسط احمد محمدی | 24 01, 2017 | بازدید‌ها (140)

SMO چیست؟

SMO مخفف Social Media Optimization و به معنای بهینه سازی سایت ها برای شبکه های اجتماعی می باشد. در راهکارهای SMO, طراحان و مدیران وب سایت ها طراحی وب سایت خود را به گونه ای بهینه سازی می کنند تا بتوانند ترافیک کاربران شبکه های اجتماعی مثل فیسبوک، توییتر، گوگل پلاس و دیگر شبکه های اجتماعی را به سمت سایت خود بیاورند.


مخفف Social Media Optimization و به معنای بهینه سازی سایت ها برای شبکه های اجتماعی می باشد. در راهکارهای SMO, طراحان و مدیران وب سایت ها طراحی وب سایت خود را به گونه ای بهینه سازی می کنند تا بتوانند ترافیک کاربران شبکه های اجتماعی مثل فیسبوک، توییتر، گوگل پلاس و دیگر شبکه های اجتماعی را به سمت سایت خود بیاورند.


بهینه سازی شبکه های اجتماعی برای اولین بار در سال ۲۰۰۶ مطرح شد و از همان زمان به ندرت و با پیشرفت های شبکه های اجتماعی معانی جدیدتری به خود گرفت. اما همانطور که در ویکی پدیا اشاره شده، SMO را می توان اینگونه نیز تعریف کرد:


بهینه سازی شبکه های اجتماعی شبیه بهینه سازی موتورهای جست و جو است که هدفش افزایش ترافیک و آگاهی در مورد یک سایت مشخص است. به طور عام، بهنیه سازی شبکه های اجتماعی یعنی بهینه سازی یک سایت و محتوای آن در حیطه اشتراک گذاری در شبکه های اجتماعی.


با توجه به اهمیت روز افزون شبکه های اجتماعی، موتورهای جست و جو نیز به این شبکه ها توجه می کنند و اتفاقاتی که در شبکه هایی مثل فیسبوک و توییتر و گوگل پلاس رخ می دهد می تواند تاثیر مستقیم روی امتیاز یک سایت در صفحات نتایج موتورهای جست و جو یا همان SERP داشته باشد.ه بیان دیگر هر چه سئو روی ترکیب فنی وبسایت ها تمرکز دارد، SMO بیشتر به کیفیت محتوا، اعتبار نویسنده و تجربه کاربران در ارتباط با محتوا و نویسنده می پردازد. مشخصا تمامی این ویژگی های SMO می تواند روی سئوی یک سایت تاثیر به سزایی داشته باشد.


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


اخطار مهم  :  SMO را با اشتراک گذاری های بی رویه اشتباه نگیرید


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

 

ارسال شده توسط احمد محمدی | 25 12, 2016 | بازدید‌ها (502)

BPM مخفف یا سر واژه عبارت  Business Process Management و به معنی مدیرت فرآیندهای کسب و کار و مفهومی مدیریتی و حتی شاید دیگر بتوان گفت مفهومی گسترده و میان رشته ای است.
BPMS مخفف یا سر واژه عبارت Business Process Management System و به معنی سیستم های مدیرت فرآیندهای کسب و کار است. BPMS ها، بعنوان مجموعه ای از ابزارهای مدیریتی سعی دارند تا به سازمان ها کمک کنند تا مفاهیم و نگاه مطرح در نظریات BPM را پیاده سازی نمایند.
BPMN نیز همانگونه که در مطلبی دیگر توضیح داده شد مخفف یا سر واژه عبارت Business Process Model & Notation می باشد که به مجموعه ای از علائم، نشانه ها و شیوه ای استاندارد برای مدل سازی فرآیندهای کسب و کار اطلاق می شود که با استفاده از این زبان نمادین مدلسازی می توانیم فرآیندهای کسب و کار خود را مدلسازی کنیم. حال این فرایندهای مدلسازی شده می توانند توسط ابزارهای BPMS به منظور تحلیل، شبیه سازی، اجرا و ... بکارگرفته شوند.
با توجه با آنچه در بالا به آن اشاره شد هر چه پیشتر می آییم، نگاه جزء تر و ابزاری تر می شود و جامعیت مفهوم BPM نسبت به BPMS و همچنین BPMS نسبت به BPMN به خوبی قابل درک است.

نویسنده : حجت جوادی
ارسال شده توسط احمد محمدی | 25 12, 2016 | بازدید‌ها (451)

   

 

ERP and best of breed  :  a comparative analysis

http://www.emerald-library.com/ft

 

چکیده:

نرم‌افزار برنامه‌ریزی منابع سازمان(ERP)‌ پلت‌فرم راهبردی برتر برای حمایت از فرایندهای تجاری بنگاه‌ بشمارمیرود. با این حال به دلیل عدم انعطاف‌پذیری و عدم تامین نیازهای خاص سازمان و صنایع مورد انتقاد قرار گرفته است. (Best of Breed( BoB (بهترین نوع تولید)، مولفه‌های یک بسته‌ استاندارد و/یا نرم‌افزار سفارشی را ترکیب می‌کند. هدف، ایجاد یک سیستم سازمانی است که فرایند‌های کسب و کار یک سازمان ، همراستایی بیشتری داشته باشند. موردکاوی پیاده‌سازی BoB ، تحلیل طبیقی مسائل مرتبط با این راهبرد و گزینه فروشنده ERP را تسهیل می‌کند. این مقاله، تفاوت پیچیدگی پیاده‌سازی، سطح عاملیت، پتانسیل همراستایی فرایند کسب و کار و نگهداری مرتبط با آن را آسان می سازد.

 

کلیدواژه: سیستم مدیریت منابع، سیستم‌های اطلاعاتی، پیاده‌سازی BPR


مقدمه

فروشندگان تشکیلات سیستم‌های برنامه‌ریزی براساس منابع بر چشم‌انداز IT تسلط دارند اما آنها در برخی از سازمان‌ها مشکل‌آفرین بوده‌اند. سیستم‌های ERP‌ عموماً برای غلبه بر دشواری‌های مرتبط با  پیاده‌سازی و توسعه سفارشی پیاده‌سازی روبرو میشوند چرا که آنها با داده های مشترک و مجموعه برنامه‌های یکپارچه، بنیان مناسبی را فراهم می‌آورند. با این حال اگر سازمان‌ها یک سیستم ERP را پیاده‌سازی کنند اما مدل کسب و کار ضمنی را با تغییر کد منبع تغییر دهند آنگاه ERP مشکلات کهنگی را بوجود آورده و معایب راهبرد IT مبتنی بر بسته استاندارد را از بین می‌برد. به عنوان مثال بسته‌های استاندارد می‌توانند سرعت توسعه را افزایش دهند، الزامات توسعه کارکنان را کاهش دهند و قابلیت مدرن پیوسته IT را از طریق بروزرسانی‌ها عرضه کنند. در حالی که مزایای مذکور قابل بحث و بررسی هستند اما تغییر اساسی نرم‌افزاری استاندارد :

  • مدت زمان توسعه را افزایش می‌دهد.
  • الزامات کارکنان در خلال و پس از پیاده‌سازی را افزایش می‌دهند.
  • قابلیت قبول بروزرسانی‌ها را کاهش می‌دهند.
  • استانداردسازی و یکپارچگی موردنیاز را خنثی می‌کنند.

از این گذشته فرایندهای کسب و کار در سیستم ERP متضمن نمایش بهترین رویه و یک مدل کسب و کار رقابتی‌تر به عنوان یکی از گزینه‌های ممکن مطرح می‌باشند. گرچه مسائل جاری، از سازمان‌ها در جریان مهندسی مجدد کار بصورت همزمان به نرم‌افزارهای استاندارد کمک می‌کنند، اما این کار پیچیدگی پیاده‌سازی را بیشتر خواهد ساخت. سازمان‌ها استدلال می‌کنند که عاملیت نرم‌افزار ERP غالباً وجود ندارد. مدل کسب و کار ضمنی به منزله خود فرایندهای کسب و کار و در نتیجه مهندسی مجدد آنها نیست. به عنوان مثال ریبوک با SAP کار کرده است تا بتواند بر مشکلات مذکور غلبه کند اما هنوز نمی‌تواند وارد وضعیت راهکار تک‌فروشنده شود. مدیران فناوری اطلاعات و کسب وکار استدلال می‌دارند که بسته های ERP تنها در یک کلاس از برنامه‌ها، عالی عمل می‌کنند. Peoplesoft با ماژول منابع انسانی خوبی همراه است و Oracle یک ماژول مالی خوب دارد. از این گذشته زمانی که سازمان‌ها به عاملیت بیشتر نیاز دارند، منتظر بروزرسانی نرم‌افزار ERP خواهند بود. مدیریت رابطه مشتری و مفاهیم تجارت مجازی یکی از دغدغه‌های مهم سالهای اخیر بوده‌اند و فروشندگان ERP باید با این ایده‌ها دست و پنجه نرم‌ کنند. طبیعتاً برخی از سازمان‌ها مجموعه برنامه‌های تشکیلاتی سفارشی خود را معروف به راهبرد فناوری اطلاعات BoB ابداع کرده‌اند. وعده آنها، انعطاف‌پذیری بیشتر و همراستایی نزدیک‌تر نرم‌افزارها با فرایندهای کسب و کار سازمان است. مورد آخر می‌تواند پیاده‌سازی سیستم IT و BPR‌ مرتبط با آنرا تسهیل کند. این مقاله از این پیشینه، مروری بر راهبرد BoB IT و یک موردکاوی پیاده‌سازی BoB برای انجام تحلیل تطبیقی دلالت‌های BPR استفاده می‌کند. قبول داریم که مسائل دیگر مانند هزینه فناوری مهم هستند اما در این مقاله نمی‌توانیم عمیقاً به آنها بپردازیم.

راهبرد BoB IT

 BoB و راهبرد نوظهور استفاده از برنامه‌ها و پلت‌‌فرم‌های مختلف در کل سازمان، موارد متفاوتی هستند. BoB اعلام یک راهبرد است؛ هدف آن یکپارچه‌سازی تشکیلات و جهت‌گیری فرایند می‌باشد. در مقابل این راهبرد نوظهور غالباً از بعد فنی و سازمانی پراکنده است و این باعث تقویت زمینه‌های کارکردی خواهد شد. BoB بر یکپارچه‌سازی نرم‌افزارهای استاندارد برای چندین فروشنده مبتنی است. جنرال‌موتورز برنامه‌های منابع انسانی PeopleSoft و برنامه مالی SAP را ترکیب کرده است. برخی از شرکت‌ها مانند مورد گزارش شده در این مقاله، به دلیل نبود بهترین نرم‌افزار استاندارد به ایجاد مولفه‌های اختیاری پرداخته‌اند. نقاط قوت BoB بر توانایی سازمان برای بهره‌گیری از کارکرد بهترین نرم‌افزار مبتنی می‌باشند. همچنین این رویکرد زیرساختاری را فراهم می‌آورد که پیاده‌سازی برنامه‌های جدید و بهبود‌یافته و فرایندهای کسب و کار را در خود جای می‌‌دهد و بدین وسیله قابلیت مدرن پایداری را در اختیار شرکت‌ها قرار خواهد داد. مزیت آخر BoB، میزان آسان‌سازی BPR است. بارها عنوان شده است که BPR مفهومی است که تحت تاثیر ساختار قرار می‌گیرد. بسیاری از مشکلات مرتبط با پروژه‌های ERP تک‌فروشنده، از بازگشت به ایده‌های شروع دوباره BPR نشأت می‌گیرند. در مقابل BoB، ساختار را به عنوان کلید موفقیت‌آمیز BPR‌ شناسایی می‌کند. زیرا اعضای سازمان می‌توانند مولفه‌های IT را براساس تفکرشان درباره میزان حمایت از فرایندهای سازمانی، انتخاب کنند. اعضای سازمان می‌توانند با انجام گزینش مناسب، از سیستم‌های جدید BPR اجرا شده مبتنی بر آن، به مقصود خود دست یابند.

روش پژوهش

این پژوهش براساس دو مصاحبه شخصی با دو نفر از پرسنل مهم پروژه BoB ، در یک سازمان محصولات فرهنگی جهانی تدوین شده است. مصاحبه‌ها دو تا سه ساعت طول کشیدند و هر شش ماه یکبار در مدت دو سال برگزار گردیدند. داده‌های مصاحبه با شواهد مکمل شامل برنامه‌های IT و طرح‌های کسب‌وکار و حساب‌های سالیانه تکمیل شدند. گردآوری داده‌ها از منابع مختلف، به مانند روش مثلثی عمل کرد که اعتبار درونی داده‌ها را ارتقا بخشید. با این حال این مورد به عنوان نتایج یک مطالعه طولی ارائه نشده است. هدف نویسنده، ارائه داده‌های قضیه انتخاب‌شده در سطح کلان برای تایید این نظریه است که سیستم ERP جایگزین دارند. مسائل مرتبط با سیستم‌های ERP از ادبیات دانشگاهی و تجاری و تحقیقات قبلی دو نویسنده یعنی هولاند و لایت اقتباس گردیده‌اند. این رویکرد امکان مقایسه سیستم‌های ERP و رویکرد BoB بخصوص از لحاظ تاثیر وارده بر فرایندهای کسب و کار و پیاده‌سازی BPR را فراهم می‌آورد.

موردکاوی یک تشکیلات جهانی

این موردکاوی، زمینه آشنایی با وضعیت را فراهم می‌آورد اما بر ابعاد راهبرد و پیاده‌سازی پروژه تاکید دارد. این تمرکز، بزرگترین پتانسیل را برای آزمایش تفاوت بین راهبردهای ERP و BoB فراهم می‌آورد؛ بخصوص زمانی که تاثیرگذاری بر BPR‌مدنظر باشد.

پیشینه

این مورد درباره تقسیم عملیات ضبط شرکت فرهنگی جهانی یعنی Global Entertainment است. گردش حساب این شرکت نزدیک به ۳ میلیارد دلار است و بیش از ۱۰۰۰۰واحد نگهداری کالا دارد. رقابت در این صنعت بر ظواهر هنرمندانه شرکت مبتنی است. خرده‌فروشان محصولات این شرکت در دهه گذشته میزان پیچیدگی مدیریت موجودی را افزایش داده‌اند بطوری که غالباً به موجودی کمتری نیاز دارند. چرخه حیات محصول نیز کاهش یافته است و بازارهای متنوعی مانند بازار موسیقی و رقص هندوستان نیز ظاهر گردیده‌اند.

دو بخش در شرکت وجود دارد. بخش بازاریابی رکوردها(ضبط شده ها)، آهنگ‌خوانی خوانندگان و بازاریابی محصولات فیزیکی نهایی مانند سی‌دی‌ها را مدیریت می‌کند. بخش عملیات، محصولات فیزیکی را به مصرف‌کننده تحول می‌دهد. بخش عملیات در گذشته یکی از قابلیت‌های هسته‌ای نبوده است و هنوز نیست؛ گرچه مدیریت شرکت متوجه شده است که این گزینه یکی از مسائل مهم است. بخش عملیات، کارکرد ‌مدار بوده است تا سرویس‌مدار و تیم‌ها در گروه‌های سازمانی فعالیت کرده‌اند. اولویت‌ها و نیازهای برتر قبلی بر کارکردهای متناظر آن دلالت دارند که برنامه‌های نرم‌افزاری مختلف و پلت‌فرم‌های متعددی وجود داشته‌اند. همچنین عدم وجود استانداردهای مدیریت پروژه و توسعه سیستم‌ها در کل بخش IT احساس می‌شود. نتیجه پنج واحد و راهبرد پراکنده  IT‌است.

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

راهبرد مدیریت پروژه

 مدیر IT استفاده از تخصص خارجی و داخلی را متعادل ساخت. مدیر IT برای حفظ هزینه‌ها در سطح معقول و تضمین اینکه بنیان مهارت‌ مدیریت و پیاده‌سازی پروژه‌ها را می‌توان بصورت داخلی تولید کرد، تصمیم گرفت از مشاوران شرکت‌های بزرگ حسابداری استفاده کند. مهارت‌های فنی بیشتر از فروشندگان بخش‌های متناظر گرفته شدند. این کار باعث تضمین آشنایی با نرم‌افزار‌ها شد و مشکلات پیاده‌سازی ERP تک‌فروشنده را برطرف کرد؛ در این موارد مشاوران غالباً تجربه اندکی را در رابطه با محصول دارا بودند. از تعداد معدودی تدوین‌کننده به حالت قراردادی استفاده شد. پرسنل داخلی توانستند تحول سازمانی را مدیریت کنند چرا که آنها با فرهنگ داخلی آشنا بودند.

راهبرد مهندسی مجدد فرایند کسب و کار

هدف Global Entertainment تدوین یک جهت‌گیری فرایندی براساس فرایند کسب و کار عادی و بهبود یافته در یک کسب و کار جهانی بود. مبنای این کار این شده است که شرکت، فرایندهای خود را همگام با بسته‌‌های نرم‌افزاری تهیه شده، بازمهندسی(BPR) می‌کند. به دلیل پیچیدگی پروژه BoB، شرکت تصمیم گرفت که تحولات را بصورت تدریجی اجرا کنند تا بصورت یکباره(بیگ بنگ). تحولات داخلی بر مبنای مورد به مورد اجرا شدند تا بصورت همزمان در کل سازمان . همزمان با دستیابی به شتاب و اعتماد، پیاده‌سازی همزمان نیز در پیش گرفته شد.

راهبرد IT

 مدیر IT با رویکرد اصل ۲۰/۸۰ با مدیران ارشد کسب و کار موافقت کرد تا در پروژه‌ها حق رای داشته باشد و تحول خوب کسب و کار با زیرساخت نهایی IT را تضمین کند. بدین معنی که بسته‌ها در صورت امکان پیاده‌سازی می‌شوند و اینکه در این شرایط نرم‌افزار ۸۰% عاملیت‌های مطلوب را برآورده خواهد کرد. ۲۰ درصد باقیمانده با پیشرفت‌های دیگر MIS در خارج از بسته محقق می‌گردد. مدیر IT معتقد بود که اصلاحات کد منبع بسته‌ها باید در کمترین حد بماند. مولفه‌های تشکیل‌دهنده سیستم BoB با استفاده از سری‌های MQ  از IBM  یکپارچه‌سازی شدند.

فرایند پیاده‌سازی

پیاده‌سازی در ژانویه ۱۹۹۵ با اجرای تحلیل سازمانی با هدف ساخت یک نقشه فرایند کسب و کار آغاز شد که امکان ارزیابی برنامه‌‌های آتی نسبت به آن وجود داشت. این کار تضمین می‌کرد که مولفه‌های برنامه با نیازهای کسب‌ و کار همخوانی داشتند. فرایندهای کسب و کار براساس حوزه‌های کارکردی مستند‌سازی می‌شدند. تحلیل سازمانی توانست حوزه‌های پیچیده و منحصربفرد مانند داده‌های محصول و مدیریت انتشار، کپی‌رایت و حقوق ناظر و صورت‌حساب را شناسایی کند. تامین‌کنندگان نرم‌افزاری به مزایده دعوت شدند و می‌بایست عاملیت‌های الزامی متفاوت را عرضه کنند. آزمایش‌های مرجع برای آزمایش نرم‌افزار براساس فرایندهای کسب و کار اجرا گردیدند و بایسته‌های متداخل شناسایی شدند. حوزه‌های پیچیده و منحصربفرد می‌بایست بواسطه مولفه‌های مشتری پشتیبانی می‌شدند.چندین نرم‌افزار حضور داشتند، چندین رابط گرافیکی ارائه شدند و این کار مستلزم آموزش سنگین کارکنان بود. کارکنان IT نیز نمودار یادگیری شیبداری را تجربه کردند. با این حال انتظار می‌رود که الزامات وارده بر کارکنان IT، برنامه‌نویسان را به تحلیل‌گر کسب و کار تبدیل خواهد کند. مدیر IT عنوان داشت که تحلیل‌گران کسب و کار در حال درک چگونگی کارکرد چرخه فرایند کسب و کار هستند. همچنین وی عنوان داشت که این کار آنها را قادر می‌سازد تا ارزش افزوده قابل‌توجهی را به پروژه‌ها اضافه کنند. شرکت Global Entertainment تضمین کرد امروزه اصلاحاتی که اکنون بر بسته‌های نرم‌افزاری اعمال می‌شوند، بخش عمده ساختار سیستم‌ها را تشکیل می‌‌دهند.

مولفه‌های سیستم BoB

با فروشندگان‌ بسته‌های نرم‌افزاری قرارداد منعقد گردید تا سیستم‌ها را بنا به ضرورت، نگهداری و بروزرسانی کنند و گروه کوچکی از برنامه‌نویسان برای سرویس‌دهی به توسعه سفارشی حفظ گردیدند. تحول موثر بیش از ۸۰% در رابطه با هر مولفه محقق گردید و چون از چندین مولفه استفاده شده بود در نتیجه شرکت به یک تامین‌کننده وابسته نشد. این کار باعث تغییرات چشمگیری شد که به دلیل ماهیت تدریجی فرایند است و همچنین به دلیل اینکه کاربران مطمئن بودند که برنامه‌ای را دریافت می‌کنند که نیازهای آنها را بطور کامل تامین می‌کنند. شرکت احساس کند انجام کارها در حوزه‌هایی که فرایندهای آنها تغییر کرده است، نسبت به شرایطی که فرایندهای کسب و کار همراه با بخشی از نرم‌افزار ERP تغییر می‌کرد که عاملیت موردنیاز را دارا نبود، آسانتر شده است.

بکارگیری و پیاده‌سازی برنامه‌ها از ۱۹۹۶ آغاز گردید. هر حوزه کارکردی به عنوان یک پروژه قلمداد گردید و پیاده‌سازی برنامه‌ها براساس موردی مرحله‌بندی شد. کل پروژه سه سال طول کشید اما راهبرد آن امکان ثبت توسعه را فراهم می‌آورد و در نتیجه مجموعه ای متشکل از چندین پروژه است تا اینکه یک تلاش بزرگ کلی باشد. کسب‌ وکار و فناوری پیوسته در حال تکامل هستند و از این رو تاریخ مصرف مشخصی ندارند.

بحث

بزرگترین تفاوت بین دو راهبرد نشان داده شده است و در ادامه مفصلاً بررسی خواهد شد.

سیستم‌های ERP تک‌فروشنده، هم‌نیروزایی‌های متعددی را وعده می‌دهند. سطح بالای یکپارچگی فنی پدید آمده و مهندسی مجدد گسترده که غالباً با پیاده‌سازی همراه است، انسجام سازمانی را بهبود می‌بخشد. علاوه بر این فروشندگان نرم‌افزار ERP عنوان می‌دارند که شرکت‌ها از طریق فناوری‌ها از بروزرسانی‌ها برخوردار می‌شوند و در نتیجه اتکای کمتری بر بخش IT داخلی خواهند داشت. با این حال همراه با بلوغ بازار ERP، مشکلات فرایند و سیستم پیاده‌سازی نیز ظاهر شده‌اند. سیستم‌های ERP عموماً بیش از انتظارات هزینه دارند و سطح مشکلات سازمانی مربوط به آنها باعث دشواری‌های پیچیده‌ای می‌شود. یکی از عوامل مهم، نیاز به پیاده‌سازی  BPR‌است که معمولاً بصورت جابجایی مرحله به مرحله انجام می‌گیرد. سازمان‌ها نمی‌دانند که آیا سیستم‌های ERP تک‌فروشنده بهترین رویه در حوزه‌های کارکردی هستند یا نه و مهمتر از آن کم کم برایندهای راهبردی آنها را درک می‌کنند. پیاده‌سازی سیستم‌های تک‌فروشنده باعث ایجاد فرایند‌های مشابه کسب و کار و زیرساختارهای IT یکسان خواهد شد. این وضعیت دلالت‌های مهمی برای مزیت رقابتی خواهد داشت ؛ مشروط به آنکه این دیدگاه نظری که قابلیت رقابتی از تفاوت سازمان‌ها نشات می‌گیرد، اتخاذ شود. طبیعتاً برخی از سازمان‌ها، راهبردهای «فراتر از ERP» را پیاده‌سازی می‌کنند مانند سیستم‌های مدیریت رابطه با مشتری و توسعه‌های وب‌بنیان ؛ هدف‌ این سیستم‌ها، پشتیبانی از نوآوری و تسهیل متمایز‌سازی است. سازمان‌ها در این مرحله باید تصمیم بگیرند که ایا با رویکرد تک‌فروشنده ادامه می‌دهند یا نه. اگر فروشنده، محصول را عرضه کند آنگاه سازمان‌ها باید قدرت انرا ارزیابی کنند. اگر محصول وجود ندارد آنگاه آیا سازمان‌‌ها منتظر راه‌اندازی می‌مانند یا اینکه آنرا از منبع دیگری تامین خواهند کرد؟ BoB می‌خواهد سیستم‌های ERP تک‌فروشنده‌ را مولفه‌ای کند تا امکان تلفیق آنها با این راهبرد فراهم گردد. Global Entertainment با در نظر گرفتن مسائل پرسنل و قابلیت تکامل، معماری خاصی را پدید آورده است .BoB مزایای متعددی نسبت به سیستم‌های تک‌فروشنده دارد. می‌توان هر مولفه BoB را به عنوان یک برنامه مستقل اجرا کرد. عرضه سریع عاملیت به معنای بازپرداخت از خود پروژه در کل دوران پیاده‌سازی خواهد بود تا پس از پایان آن.رویکرد تدریجی، سازمان را با تحولات کوچکتری روبرو می‌کند و بدین وسیله معضلات سازمانی را کاهش می‌دهد. همچنین BoB انعطاف‌پذیری فرایند طراحی کسب و کار را کاهش می‌دهد. چنانکه در مورد Global Entertainment نشان داده شد، شرکت‌ها باید برنامه‌های متعددی را با نقشه فرایند کسب و کار موجود یا بهبود‌یافته خود همراستا سازند. این روند در Global Entertainment بر تسهیل فرایند پیاده‌سازی تاثیر گذاشت. از این گذشته رویکرد چندفروشنده به پشتیبانی توزیع ریسک بلندمدت کمک می‌کرد. یعنی اینکه اگر یکی از فروشندگان از بازار خارج می‌شد آنگاه کل سیستم تحت تاثیر قرار نخواهد گرفت. Global Entertainment باید بین ادامه پشتیبانی داخلی برنامه یا تامین خارجی مولفه‌های جدید، انتخاب کند.دشواری‌های اصلی BoB به دلیل پیچیدگی پیاده‌سازی و هزینه‌های احتمالی مالکیت در آینده، در ابعاد نگهداری ارتباط های نرم‌افزاری بوجود خواهند آمد. مورد Global Entertainment بر دشواری‌های پیاده‌سازی در رابطه با آموزش گسترده موردنیاز و توسعه رابطه ‌‌های لازم میان مجموعه‌ برنامه‌ها تاکید می‌کند. یکی از مشکلات بالقوه که در مورد فوق عنوان نشد ، تلاش برای ایجاد اصلاحات متعدد است که به دلیل ساختارگرایی روی می‌‌دهد. این مسئله در مورد پیاده‌سازی تک‌فروشنده جهانی مانند مواردی که هولاند و لایت معرفی کرده‌اند، مشکل آفرین بوده است. یکی از نکات مهم در رابطه با قضیه Global Entertainment این است که آنها از اصل ۲۰/۸۰ برای مقابله با چنین مشکلاتی استفاده کرده‌‌اند.

نتیجه‌گیری

راهبردهای ERP تک‌فروشنده و سیستم تشکیلات BoB بنیان، در زمره چالش‌های پیاده‌سازی قرار دارند. هر دو رویکرد بدون شک به دلیل مقیاس، دورنما و الزامات BPR پیچیده هستند. ERP مستلزم یک رویکرد تازه تر است که BoB طی آن، شانس شناسایی روش‌های اثربخشی کنونی و روابط پرزحمت با ذینفعان، را به سازمان می‌دهد. مسئله فوق یک تفاوت حیاتی است چرا که BPR مرتبط با BoB می‌تواند پیاده‌سازی و مدیریت پیچیدگی را تسهیل کند. تفاوت مهم دیگر این است که سیستم‌های ERP همان سطح پیچیدگی و پاسخگویی مرتبط با BoB را عرضه نمی‌کنند. با این حال رابطه پرزحمت به احتمال زیاد با الزامات آتی نگهداری ارتباط دارد. رویکردهای BoB به نگهداری بیشتری نیاز دارند که این به دلیل ارتباطات پیچیده بین مولفه‌های مختلف است؛ در حالی که نگهداری مولفه‌ها و ارتباط‌ بین مولفه‌ها در یک سیستم ERP تک‌فروشنده، به یک فروشنده خارجی برون‌سپاری می‌شود. این مقاله بر توسعه زیرساختIT تاکید می‌کند. تفاوت بین BoB و رویکردهای ERP تک‌فروشنده بررسی شده است؛ و مسائلی که سازمان‌ها باید در جریان تصمیم‌گیری در مورد راهبرد مدنظر قرار دهند، حول پیچیدگی پیاده‌سازی، میزان همراستایی و نگهداری فرایند کسب و کار می‌چرخد. به دلیل حیاتی بودن تشکیلات سیستم‌ها برای سازمان‌ها و محدودیت‌های آنچه که می‌توان در اینجا ارائه کرد، به تحقیقات بیشتری در این حوزه نیاز است. دلالت‌های راهبردهای مختلف برای رویکردهای توسعه سیستم‌ها، کارکرد IT و مزیت‌های رقابتی نقاط شروع بسیار خوبی هستند.

منبع : http://shiraziali.ir

ترجمه : علی شیرازی ، اردیبهشت ۹۳

ارسال شده توسط احمد محمدی | 6 11, 2016 | بازدید‌ها (692)

تحقیقات حاکی از آن است که سه نوآوری فناوری ; شبکه اجتماعی (Social Networking)، ارتباطات راه دور (Telematics) و معماری سرویس‌گرا‌ (Service-Oriented Architecture) برای شرکت‌هایی که می‌خواهند پیشرو در صنعت باشند حیاتی است .

در صنعت بیمه هم شرکت‏ها به دنبال استراتژی‏هایی برای رشد و موفقیت هستند که بسیاری از این راهبردها در جهت بهبود و تقویت رابطه موثر با مشتریان/ بیمه گذاران به کار می‏روند مانند حضور در شبکه‏های اجتماعی، استفاده از سرویس‏های مخابراتی و معماری سرویس‏گرا . برای نمونه شبکه های اجتماعی مانند فیس‌بوک (Facebook) دارای این قابلیتند که تعاملات با مشتریان را بهبود دهند و به فروش بیشتر منجر شوند. اخیرا موسسه A.T.Kearney مطالعاتی را در خصوص ظهور فناوری‌هایی که باعث کسب امتیازات راهبردی می‌شوند انجام داده است. این تحقیقات که حاصل گفت‌وگو با بیش از ۱۵۰ متخصص و مدیر فناوری در سراسر جهان است چنین نتیجه‌گیری می‌کند که شبکه‌های اجتماعی، ارتباطات راه دور و معماری سرویس‌گرا برای دستیابی به پیشرفت و مزیت رقابتی حیاتی هستند.

*شبکه‌های اجتماعی و کاهش هزینه‏ها

در چند سال اخیر، شبکه‌های اجتماعی و فناوری‌های مرتبط، باعث رشد آشکاری شده‌اند و مردمان زیادی با علایق فراوان را به خود جذب کرده‌اند ، بطور مثال فیس‌بوک بیش از یک میلیارد نفر کاربر دارد که جمعیت سنی بالای 30 سال آن به صورت دو رقمی در حال رشد است. مردم در هر سن، مذهب، سطح درآمد و گرایشات سیاسی از شبکه‌های اجتماعی استفاده می‌کنند.
این شبکه های اجتماعی، انتظارات مشتریان را تغییر داده‌اند، همان‌طور که امروزه عموما مردم از سازمان‌ها انتظار دارند که به‌صورت برخط (
Online) پاسخگوی سوالات باشند، برای آنها راه حل ارائه دهند و بازخورد محصولات و خدمات را فراهم کنند.
بیشتر شرکت‌های بیمه دنیا از شبکه‌های اجتماعی استفاده می‌کنند. برای مثال
Allstate و Traveler از «فیس‌بوک» برای آگاهی دادن و تاثیر بر تصمیم مشتریان که در حال انتخاب یک شرکت بیمه هستند استفاده می‌کنند. همچنین شرکت «State Fram» برای تماس با مشتریان و ارتقای خدمات خود از فیس‌بوک بهره می‌گیرد.
همچنین، شبکه‌های اجتماعی موجب کاهش هزینه‏ها هم می‏شوند. برای مثال بعضی بانک‌ها از شبکه‏های اجتماعی برای شناسایی وام‏گیرندگان پرخطر استفاده می‏کنند. یک سیستم نرم‏افزاری به نام
SAS رابطه متقاضیان با جرائم را شناسایی و با پیشنهادهایی از زمینه بروز تقلب جلوگیری ‏می‏کند. بیمه‏گران از بانک‏هایی که از این روش‏ها استفاده می‏کنند حق بیمه‏کمتری دریافت می‏کنند. اگرچه هنوز ارزش مالی استفاده از شبکه‌های اجتماعی در کسب و کارها کاملا شفاف نیست، اما پتانسیل بهبود محصولات و خدمات، کاملا روشن است.


*تکنولوژی‏های ارتباطی (نسل‏های جدید موبایل و ردیابی رفتار رانندگان)

تکنولوژی‏های ارتباطات باعث یکپارچگی سیستم‏های نظارت خودرو و فناوری‏های موقعیت‏یابی شده است. به عنوان مثال برنامه اسنپ شات (Snapshot) مبتنی بر فناوری پیشرفته نسل سوم موبایل است که حق بیمه را به رفتار رانندگی و دیگر شاخص‌های مرتبط با راننده مرتبط می‏کند. در ۵ سال گذشته استفاده از این وسیله از ۱۵ هزار نسخه به بیش از ۱۵۰ هزار نسخه افزایش یافته است.
با استفاده از چنین سیستم‏هایی اطلاعات در لحظه رانندگی به بیمه‏گر ارسال شده و از طریق آن کیفیت و اندازه ریسک رانندگان محاسبه می‏شود. حالا به لطف فناوری ردیابی وسیله نقلیه از طریق سیستم ماهواره‏ای موقعیت‌یابی جهانی (
GPS) صورت می‏گیرد.سخت نیست که تصور کنیم چقدر این روش ما را به جهان آینده بیمه خودرو پیوند می‌دهد.
راننده‌ها می‌توانند بیمه خودرو را در لحظه با اشاره بر صفحه نمایش خودروی خود خریداری کنند و پس از چند ثانیه، بعد از وقوع تصادف، اورژانس و خدمات جاده‌ای به‌صورت خودکار فراخوانی می‌شوند، خسارت خودرو برآورد می‌شود و با نزدیک‌ترین تعمیرگاه تماس حاصل می‌شود. در واقع تجربه مشتری از حالت سنتی بیمه به سیستم ناوبری در لحظه می‏رسد.
همچنین ارتباطات راه دور روش‏هایی جدید در کسب درآمدی پرسود و مدل‏های دقیق قیمت‏گذاری را به بیمه‏گر پیشنهاد می‏کند که می‏توانند به بهبود دارایی‏ها و کاهش مصرف هزینه ها و افزایش ایمنی منجر شوند.
به عنوان مثال در کالیفرنیا، مقررات «پرداخت حق بیمه با توجه به نحوه رانندگی» (
Pay-As-You-Drive) وضع شده است که به بیمه‌گران این امکان را می‌دهد که نرخ‌ها را با توجه به مسافت واقعی طی شده تعیین کنند و این می‌تواند یک انگیزه مالی برای رانندگی کمتر باشد.

*
معماری سرویس گرا، یک فناوری پنهان

معماری سرویس‌گرا (SOA) به شرکت‌ها این امکان را می‌دهد که برنامه‌های کاربردی و منابع محاسباتی (مثل پایگاه داده مشتریان و کاتالوگ تامین‌کنندگان) را در دسترس کاربران قرار دهند.
تعجب برانگیز نیست که صنعت بیمه به معماری سرویس‌گرا کشش پیدا کرده است، یک دلیل آن است ، که این روش  ، راهی جهت یکپارچگی سیستم‌های بزرگ و مستقل قدیمی و استفاده از آنها در روشی جدید است، مثل تجارت الکترونیک.
شرکت های  بیمه گر  می توانند از معماری سرویس‌گرا برای توزیع اطلاعات مشتریان در میان واحدهای کسب‌و‌کار خود بهره می‌گیرد، در حالی که از هزینه‌های اضافی و توسعه نرم‌افزارهای جدید، جلوگیری می‌شود.
به عنوان مثال شرکت بیمه هلوتیا (
Helvetia) یک نمونه عالی از امتیازات معماری سرویس‌گرا به‌دست آورده است. این شرکت سوئیسی به‌خاطر ناکارآمدی سیستم‌های رایانه‌ای، جوابگوی درخواست‌ها نبود. امروزه، استراتژی رشد این شرکت با توجه به استقرار معماری سرویس‌گرا و یکپارچگی سیستم‌های قدیمی و برنامه‌های کاربردی جدید، محقق شده است.
انتظار می‏رود که معماری سرویس‌گرا بیشتر در میان شرکت‌های بیمه که به ساختار فناوری اطلاعات خود به‌عنوان یک دارایی استراتژیک توجه می‌کنند، محبوب شود.

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

منبع: A.T Kearney

 

Normal 0 false false false EN-US X-NONE FA
ارسال شده توسط احمد محمدی | 15 10, 2016 | بازدید‌ها (474)
Normal 0 false false false EN-US X-NONE FA MicrosoftInternetExplorer4

چرا node.js اینقدر طرفدار داره

 

Normal 0 false false false EN-US X-NONE FA MicrosoftInternetExplorer4

به جرأت میتونم بگم node.js انقلابی‌ترین حرکت در زمینه توسعه وب توی یکی دو سال گذشته بوده. node در github سومین پروژه از لحاظ محبوبیته و همین الان که من دارم این مطلب رو می‌نویسم این پروژه بیش از 4000 تماشاچی داره و بیش از 400 بار fork خورده و 100 ها ماژول براش نوشته شده و همه این اتفاقات در کمتر از یک سال و اندی که از شروع این پروژه می‌گذره افتاده.

اگر اخبار و تحولات توسعه وب رو دنبال کرده باشید حتما تا به حال مطالبی در موردش شنیدید اما ممکنه به اهمیت موضوع پی نبرده باشید. به عبارت دیگه اکثر افراد در وهله اول متوجه نمیشن که node چه چیز جدیدی برای ارائه داره و چی باعث محبوبیت اون شده.

اگر می‌خواهید در مورد node بیشتر بدونید در ادامه این مطلب با من همراه باشید.

حالا این node.js چی هست؟ یک فریم ورک جدید مثل jquery؟

نه اشتباه نکنید. node.js هیچ ربطی به مرورگر نداره و کدی که برای node نوشته میشه قرار نیست روی مرورگر اجرا بشه.

پس لابد یک زبان برنامه نویسی جدیده!

زبان جدید هم نیست. برنامه‌های node به زبان جاوا اسکریپت نوشته میشن. جاوا اسکریپتی که سمت سرور اجرا میشه. البته از node میشه برای نوشتن برنامه‌های غیر سروری هم استفاده کرد ولی بیشتر کاربردش برای نوشتن برنامه‌های سروری مخصوصا وبسرورهاست.

پس node رو میشه مثل php و python روی وبسرور نصب کرد.

نه. node مستقله. در واقع node خودش وبسرور داره و از وبسرور فعلی شما (مثلا آپاچی) استفاده نمیکنه.

میشه دقیقتر توضیح بدی یک برنامه تحت وب با node چه جوری اجرا میشه؟

node از طریق خط دستور (command line) اجرا میشه و برنامه شما رو اجرا میکنه. حالا برنامه شما میتونه از ماژول وبسرور node استفاده کنه و یک وبسرور راه بندازه.

ولی من هر کاری که بخوام با php و python و ruby ومیتونم انجام بدم.

خوب آره. node هم قرار نیست کار جدیدی که قبلا غیر ممکن بوده رو انجام بده. قرار هم نیست جای php و python و … رو بگیره. حداقل هنوز نه.

خوب پس چی باعث شده اینقدر طرفدار پیدا کنه؟

دلایل مختلفی داره. اگر ایده و هدف اصلی node و نحوه کارش رو بدونید خیلی از دلایلش مشخص میشه.

هدف node ایجاد راهکاری آسان برای نوشتن برنامه‌های مرتبط با شبکه با سرعت، کیفیت و مقیاس پذیری بالاست. پس دلیل اول محبوبیت node رو میشه این جوری نوشت که با node حتی برنامه‌نویس‌های غیرحرفه‌ای هم می‌تونن برنامه‌های حرفه‌ای برای شبکه بنویسند.

مگه node چه جوری کار میکنه؟

سوال خیلی خوبیه. برای اینکه به این سوال جواب بدیم اول باید ببینیم که بقیه وبسرورها چه جوری کار می‌کنند.

معمولا وبسرورها اینجوری کار می‌کنند که به ازای هر کانکشن یک thread جدید می سازند و این thread تا زمانی که کانکشن مربوطه باز باشه باقی می‌مونه. این کار بار پردازشی و مصرف مموری اضافی برای هر کانکشن ایجاد میکنه و به عبارتی باعث میشه تعداد کلاینت هایی که یک وبسرور همزمان میتونه پاسخگو باشه محدود باشه، عددی که به 10 هزار نمیرسه. برای همین این مشکل با نام «مسئله 10 هزار کانکشن همزمان» یا C10K معروفه. البته این مسئله‌ی جدیدی نیست. بحث سر این مسئله و راهکارهای موجود از حدود 11 سال پیش وجود داشته. وبسرورهای جدید نظیر nginx و lighttpd و cherokee این مشکل رو حل کردند. و البته node.js هم با توجه به هدف اولیه ای که داشته جزو اون دسته از وبسروهایی محسوب میشه که این مشکل رو ندارند.

و این مشکل چطور حل شده؟

قبل از اینکه به راه حل مشکل بپردازیم باید ببینیم مشکل از کجا ناشی میشه.

مشکل از اونجایی ناشی میشه که دریافت، پردازش و پاسخ دادن به یک درخواست از یک کلاینت اونقدر طول میکشه که نمیشه برای دریافت کانکشن بعدی منتظر اتمام کار کانکشن قبلی موند. بنابراین وبسرورها برای پاسخ به کلاینت جدید یک thread جدید ایجاد می‌کردند.

خوب پس مشکل اصلی در واقع کند بودن روند دریافت، پردازش و پاسخ  هست.

دقیقا. اما مسئله اینجاست که پردازنده ها به اندازه کافی سریع هستند و اون چیزی که باعث کند شدن این روند میشه I/O هست. یعنی عملیات ورودی و خروجی، چه از شبکه و چه از سیستم فایل.

اونوقت مشکل IO رو چطور حل کردند؟

برای رفع این مشکل به جای اینکه عملیات ورودی/خروجی مستقیما انجام بشه از معماری رویداد گرا برای پیاده سازی IO استفاده میشه. به عبارتی به جای اینکه منتظر نتیجه IO بمونیم یک رویداد برای دریافت نتیجه تعریف می‌کنیم و اجرای برنامه ادامه پیدا میکنه. به این ترتیب عملیات های ورودی/خروجی باعث بلاک شدن اجرای برنامه نمیشه. و node هم با همین معماری نوشته شده برای همین اولین جمله ای که در توصیف node در سایتش نوشته شده اینه: «Evented I/O for V8 JavaScript»

اگر وبسرورهایی مثل nginx قبلا این مشکل رو حل کردند پس node چه حرفی واسه گفتن داره؟

درسته که این مشکل قبلا حل شده ولی این مشکل فقط در سطح وب سرور حل شده. منظورم اینه که مثلا وقتی میخوای یک برنامه php رو روی این وبسرور اجرا کنی با اینکه وبسرور برای هر درخواست thread ایجاد نمیکنه ولی php این کار رو میکنه.

پس با این حساب node راهکاری برای برنامه نویسی رویداد گرای IO سمت سرور فراهم کرده.

درسته. البته node اولین نیست. قبل از node این سبک برنامه نویسی با Twisted در python و EventMachine در ruby هم امکان پذیر بوده. خود برنامه نویس node هم گفته که توی طراحی node از این دو پروژه ایده گرفته.

پس چرا اونها به اندازه node معروف نشدند؟

دلایل مختلفی داره.

یکی اینکه برنامه های node به زبان جاوا اسکریپت نوشته میشن. و اکثر کسانی که تو کار توسعه وب هستند کم و بیش با این زبان آشنایی دارند. علاوه بر این زبان جاوا اسکریپت زبان فوق العاده ای برای معماری رویداد گراست و اکثر کسانی که قبلا با جاوا اسکریپت برای مرورگر کد نوشتند برنامه نویسی رویداد گرا با جاوا اسکریپت رو تجربه کردند.
یک مزیت دیگه جاوا اسکریپتی بودن اینه که برای برنامه نویسی سرور و کلاینت از یک syntax استفاده میشه که قطعا راحت تره و حتی بخش‌هایی از کد رو برای هر دو طرف میشه استفاده کرد (مثل اعتبار سنجی فرمها).
دیگه اینکه node برای موتور جاوا اسکریپت از V8 استفاده میکنه که جزو سریعترین مفسرهای اسکریپتی محسوب میشه و حتی از پایتون هم سریعتره.
دلیل دیگه اینه که node از اول با این ایده یعنی رویداد گرا طراحی شده نه به صورت یک library جداگانه، بنابراین کار باهاش خیلی راحت تره.

ولی به درد من نمی‌خوره. من هیچ وقت 10 هزار تا بازدیدکننده همزمان ندارم. مشکلی هم با سرعت برنامه هام ندارم.

مسئله فقط سرعت و مقیاس پذیری نیست.

برای مقایسه یک برنامه php رو در نظر بگیرید. هر بار که یک درخواست به سرور ارسال میشه برنامه php اجرا میشه و یک نتیجه ای رو بر میگردونه و تموم میشه. ولی برنامه ای که با node نوشته شده یکبار اجرا میشه و تو حافظه می‌مونه. اینجا به جای اینکه وب‌سرور برنامه رو اجرا کنه این برنامه هست که وب‌سرور رو اجرا می‌کنه. بنابراین برنامه به همه کانکشن‌های سرور دسترسی داره و مثلا میتونه اطلاعاتی رو از یک کلاینت بگیره و به یک کلاینت دیگه بفرسته بدون اینکه از دیتابیس یا shared memory استفاده کنه. برای مثال با این ویژگی میشه بدون استفاده از دیتابیس و یا هیچ ابزار جانبی دیگه ای یک چت روم نوشت.
یک مثال دیگه از قابلیت‌های node حالتیه که برای همه درخواست ها احتیاج به یکسری اطلاعات مشترک داریم که باید از دیتابیس خونده بشه. با php یا باید همه اطلاعات هر بار از دیتابیس خونده بشه و یا اینکه یکبار کش بشه و دفعات بعد از کش خونده بشه. ولی با node میشه این اطلاعات رو یکبار خوند و برای همه کانکشن ها ازش استفاده کرد.

در ضمن امروزه با فراگیر شدن وب 2 استفاده از comet هم رایج تر شده. برای پیاده سازی comet در واقع یک کانکشن به سرور برقرار میشه و باز نگه داشته میشه. که با وبسروری مثل آپاچی با زیاد شدن تعداد کانکشن‌ها عملا این کار غیر ممکن میشه. ولی node برای این کار فوق العادست.

نکته دیگه ای که در مورد node وجود داره تعدد ماژول هاشه. تقریبا توی هر زمینه ای که بخواهید برای node ماژول پیدا میشه.

برای نمونه socket.io ماژولی برای پیاده سازی ارتباط دو طرفه بین سرور و مرورگر هست. این ماژول برای پیاده سازی comet تقریبا از همه روش‌های موجود نظیر Ajax long pulling و Flash Socket و WebSocket پشتیبانی می‌کنه و بسته به اینکه مرورگر شما با کدامیک از این روش‌ها سازگار باشه خودش بهترین روش ممکن رو انتخاب می‌کنه. و تقریبا همه مرورگرهای رایج رو پشتیبانی می‌کنه.
با این ماژول به راحتی میشه ارتباطات دوطرفه و بلادرنگ بین سرور و کلاینت برقرار کرد.

خلاصه اینکه ابزارها و ماژول های فوق العاده ای برای node نوشته شده نظیر express و hummingbird و vows و ماژولهای مختلفی برای کار با دیتابیس‌های مختلف. حتی به خاطر تعدد ماژولها برای node ابزار مدیریت بسته ها (node package manager) هم نوشته شده تا نصب و بروزرسانی ماژول‌ها راحت تر باشه.

خوب دیگه فکر کنم همینقدر برای شروع کافی باشه.

برای حسن ختام چند تا لینک مرتبط هم معرفی میکنم:

 

  منبع : وبلاگ شخصی علی فرهادی

 

ارسال شده توسط احمد محمدی | 29 08, 2016 | بازدید‌ها (582)

چكيده

مديران ارشد سازمان تأثير قابل توجهي را که فناوري اطلاعات مي‌تواند روي موفقيت سازمان داشته باشد، درک کرده‌اند. مديران اميدوارند که درک و شناخت خود را از روشهاي مبتني بر فناوري اطلاعات که به کار برده شده است و نيز احتمال به کار بردن موفقيت‌آميز آن را براي کسب مزيت رقابتي افزايش دهند.
بنابراين هيئت مديره و مديران اجرايي نياز دارند که مديريت و نظارت روي IT را افزايش دهند، براي اينکه اطمينان يابند که IT سازمان، استراتژيها و هدفهاي سازمان را دنبال مي‌کند و برآورده مي‌سازد. از اينرو راهبري فناوري اطلاعات (IT Governance = ITG) به عنوان بخش جدايي ناپذير مديريت سازمان در نظر گرفته مي‌شود. اين مقاله با هدف معرفي راهبري فناوري اطلاعات و دلايل اهميت آن و آشنايي با چگونگي پياده‌سازي آن تهيه شده است تا مديران را در جهت به کارگيري راهبري فناوري اطلاعات در سازمانها ياري كند.
راهبري فناوري اطلاعات عبارتي است که براي توصيف اينکه چطور افراد براي مديريت يک نهاد، فناوري اطلاعات را درسرپرستي، نظارت،کنترل و رهبري مورد توجه قرار مي‌دهند، به کار برده مي‌شود.

مقدمه
در اين مقاله سعي بر آن شده است كه رهبري فناوري اطلاعات معرفي شود و دلايل نياز به آن در سازمانها براي نظارت و سرپرستي فعاليتهاي مرتبط با فناوري اطلاعات شرح داده شود.
سازمانها نياز دارند که به سمت فرايندگرايي حرکت کنند و آنچه که به سازمانها در اين راه کمک كرده، آنها را پشتيباني مي‌كند فناوري اطلاعات است. فناوري اطلاعات ستون فقرات مهمي براي فرايندها است. براي اينکه فناوري اطلاعات در سازمانها وارد شود و همينطور براي ايجاد يکپارچگي و بهبود در سازمانها لازم است براي کنترل و نظارت روي آن ، راهبري فناوري اطلاعات پياده‌سازي شود.

وضعيت ساختار IT در سازمانهاي سده بيست و يکم
در سده بيست و يکم، سازمانها به سمت فرايندگرايي حرکت مي‌کنند و توجه مديران روي فرايندهاي شرکت متمرکز شده است، در نتيجه فناوري اطلاعات، يک عامل توانمند براي اين اطلاعات است. سازمانها براي افزايش يکپارچگي و استاندارد کردن فرايندها، افزايش سرعت روند جهاني شدن، بازسازي و تغييرات مکرر تجارت به فناوري اطلاعات نيازمندند. فناوري اطلاعات به فرايندگرا بودن سازمان کمک مي‌کند. در اين مسير چهار فرايند و شش اصل مربوط به فناوري اطلاعات ، سازمان را پشتيباني مي‌كنند. چندين سال پيش، مديران اجرايي IT روي سه فرايند اصلي IT، شامل برنامه‌ريزي، انتقال و عمليات، براي دستيابي به هماهنگيIT با تجارت متمرکز شدند اما تحليل و آناليز امروزه، چهار فرايند اصلي را براي سازمانهاي IT مشخص کرده است که عبارتند از:
- توانايي ايجاد تغييرات سازماني: قابليتهاي متداول فناوري اطلاعات، تکنولوژيهاي وب، بسته‌هاي نرم‌افزاري و ... ،
- ارائه راه‌حل براي الزامات استراتژيک: سفارشي کردن، درون سپاري، برون‌سپاري و ... ،
- اطمينان يافتن از خدمات زير ساختي که از نظر هزينه‌اي کارآمد مي‌باشند: وجود پايگاه‌هاي داده‌اي متمرکزو... ،
- مديريت سرمايه‌هاي فکري: به کارگيري دانشهاي تخصصي.
شش اصل فناوري اطلاعات که براي عملکرد مؤثر چهار فرايند ياد شده مهم هستند عبارتند از:
- طراحي معماري: معماري IT مشخص مي‌کند که زير ساخت چگونه ايجاد و نگهداري خواهد شد.
- مديريت برنامه: شامل مديريت راه‌حلهاي کاربردي پويا و راه‌حلهايي که باعث افزايش هم افزايي مي‌شود.
- مديريت قراردادها و منابع: واحدهاي فناوري اطلاعات مسئول مذاکره و مديريت قراردادهاي بسته شده با واحدهاي تجاري داخلي و قراردادهاي خارجي هستند.
- تحليل و طراحي فرايند: شرکتها براي فرايندگرا شدن به مکانيزمهايي براي شناسايي، تحليل، ذخيره و ارتباط برقرار کردن فرايندهاي تجاري نياز دارند.
- مديريت تغيير: براي بهبود مستمر فرايندها و پياده‌سازي راه‌حلهاي نرم‌افزاري جديد.
- توسعه منابع انساني ماهر در فناوري اطلاعات: اطمينان يافتن از وجود متخصصين فناوري اطلاعات با مهارتهاي مورد نياز.
با توجه به ساختارهاي پيچيده‌اي که سازمانهاي IT در به کارگيري فناوري اطلاعات داشتند و نيز با توجه به نياز آنها براي به کارگيري استانداردهاي جديد يعني استفاده از استانداردهايي جامع و پيوسته براي فرايندگراتر بودن سازمانها و همچنين براي ايجاد هماهنگي و يکپارچگي بين فرايندها و هم با توجه به نياز به تخصصهاي سيستمهاي اطلاعاتي و آموزش کارکنان، نياز به کنترل و نظارت اقدامات مربوط به فناوري اطلاعات در سازمــان احساس مي‌شد که به اين منــظور راهبري فناوري اطلاعات معرفي شد.



راهبري فناوري اطلاعات چيست؟

راهبري فناوري اطلاعات (ITG) مسئوليت هيئت مديره اجرايي است. راهبري فناوري اطلاعات يک بخش جدايي‌ناپذير مديريت سازمان، شامل راهبري و سازماندهي ساختارها و فرايندها است؛ تا اطمينان حاصل شود که فناوري اطلاعات سازمان، هدفها و استراتژي سازمان را پشتيباني مي‌کند و توسعه مي‌دهد يا نه؟
تجربه‌هاي منفي مديران از به کارگيري اين فناوري، شامل از بين رفتن اعتبار، تأخير در ارائه خدمات، عدم کارايي فرايندهاي اصلي فناوري اطلاعات سازمان و شکست اوليه آن، سازمان را برآن داشت که راهبري فناوري اطلاعات را به کار گيرند و بنا به اين دلايل بود که راهبري فناوري اطلاعات اهميت پيدا کرد و در سازمانها به کار گرفته شد.
راهبري فناوري اطلاعات براي اطمينان يافتن از دستيابي عملکرد فناوري اطلاعات به هدفهاي زير به کار گرفته مي‌شود:
- هماهنگي فناوري اطلاعات با سازمان و تحقق مزاياي وعده داده شده.
- به کارگيري فناوري اطلاعات براي توانمند کردن سازمان براي استفاده از فرصتها و حداکثر کردن مزايا.
- به کارگيري منابع مربوط به فناوري اطلاعات به گونه‌اي مؤثر.
- مديريت مناسب ريسکهاي مرتبط با فناوري اطلاعات.
راهبري فناوري اطلاعات معمولا در لايه‌هاي مختلف، با گزارش‌دهي سرپرستان به مديران و مديران به مديران اجرايي و آنها نيز به هيئت مديره، انحراف از هدفها را مشخص مي‌کنند و در جهت رفع آنها اقدامات و دستوركارهاي لازم با تأييد مديريت انجام مي‌شود. تعاملات هدفها و فعاليتهاي مرتبط با فناوري اطلاعات از ديد راهبري آنها در شكل 1 نمايش داده شده است و مي‌توانند در لايه‌هاي مختلف در سراسر سازمان به کار برده شوند.



چرا راهبري فناوري اطلاعات اهميت دارد؟

علت اينکه راهبري فناوري اطلاعات بسيار اهميت دارد اين است که اغلب، انتظارات با آنچه که در واقعيت رخ مي‌دهد، منطبق نيستند، در نتيجه مديريت روي موارد زير بايد انجام شود:
- به کارگيري امكانات فناوري اطلاعات با کيفيت مناسب و به موقع و با بودجه مناسب.
- کنترل و استفاده از فناوري اطلاعات براي بازگشت ارزشهاي تجاري.
- به کارگيري فناوري اطلاعات براي افزايش بهره‌وري و کارايي در حالي که ريسکهاي فناوري اطلاعات هم کنترل مي‌شوند.

چه کساني در سازمان درگير راهبري فناوري اطلاعات هستند؟
مسئوليت راهبري فناوري اطلاعات در سازمانها در درجه اول به عهده مديران اجرايي و هيأت مديره است و سپس مديران عامل بايد ساختارهاي سازماني را براي پشتيباني از اجرا و پياده‌سازي استراتژي فناوري اطلاعات، تهيه كنند و مديران اطلاعات براي ايجاد پلي بين فناوري اطلاعات و تجارت و نيز کميته‌هاي راهبري فناوري اطلاعات و ساير کميته‌هاي مشابه نيز درگير هستند.

راهبري فناوري اطلاعات چه فعاليتهايي را پوشش مي‌دهد؟
راهبري روي پنج سطح اصلي در سازمان تمرکز دارد که در شکل 2 نشان داده شده است.
دو مورد از پنج سطح اصلي خروجي هستند که عبارتند از:
- انتقال ارزش: تمرکز روي بهينه‌سازي مخارج و ايجاد ارزش فناوري اطلاعات. منظور از انتقال ارزش اعتباري است که سازمان از به کارگيري فناوري اطلاعات کسب مي‌کند.
- مديريت ريسک: حفاظت از دارايي‌هاي مربوط به فناوري اطلاعات، بهبود اشتباهها و عدم انطباقها و پيوستگي و دوام عمليات و استمرار آنها.
سه مورد از پنج سطح اصلي، محرکهايي هستند که براي دستيابي به خروجيها لازمندکه عبارتند از:
- تعيين و تنظيم استراتژي: با تمرکز روي هماهنگي استراتژي فناوري اطلاعات با راه‌حلهاي تجاري.
- مديريت منابع: بهبود دانش و زيرساختهاي فناوري.
- ارزيابي و سنجش عملکرد: پيگيري خروجي پروژه (آنچه که تحويل داده مي‌شود) و نظارت بر خدمات فناوري اطلاعات.
هيچ يک از چهار عامل اول، بدون وجود عامل ارزيابي و سنجش عملکرد نمي‌تواند به خوبي مديريت شود.
پس از معرفي راهبري فناوري اطلاعات به سازمان، براي شروع اجرا و پياده‌سازي راهبري فناوري اطلاعات، براي اينکه مشخص شود که سازمان در چه وضعيتي قرار دارد، استفاده از چک ليستهاي مربوطه که پنج عامل ياد شده را در نظر مي‌گيرد، روش مؤثري است.
براي اجراي کامل راهبري فناوري اطلاعات، استانداردهاي مختلفي مثل: (
COBIT= Control Objective For Information & Related Technology)i) ,Cadbury وTurnbull وجود دارد که از ميان آنها، COBIT که توسط مؤسسه IT Governance تهيه شده است و به گونه بين المللي به عنوان يک مدل خوب براي کنترل اطلاعات، IT و ريسکهاي مرتبط پذيرفته شده و براي پياده‌سازي و مميزي راهبري فناوري اطلاعات انتخاب شده است.

چارچوب
COBIT
در سالهاي اخير بديهي است که به يک چارچوب مرجع براي کنترل و امنيت در خبرهاي فناوري اطلاعات نياز است، همچنين نياز بيشتري وجود دارد براي اينکه کاربران از ارائه خدمات فناوري اطلاعات، از راه مميزي خدمات ارائه شده توسط گروه‌هاي داخلي و شخص ثالث، اطمينان حاصل كنند. همچنين براي دستيابي به مزيت رقابتي و کارآمد بودن از نظر هزينه با تکيه بر تکنولوژي، براي دستيابي به موفقيت در مديريت سازمان و مديريت فناوري اطلاعات و نظارت و ارزيابي بر عملکرد سازمان، براي برآورده کردن هدفها و الزامات تجاري در جهت پاسخگويي به نيازها، از چارچوب مرجع به نام
COBIT استفاده مي‌شود.
تعاريفي که در چارچوب
COBIT بايد در نظر گرفته شود، عبارتند از:
- کنترل: خط مشي‌ها، روشهاي اجرايي، فعاليتها و ساختارهاي سازماني که طراحي شده‌اند، براي ايجاد اطمينان از اينکه هدفهاي تجاري برآورده خواهند شد و از حوادث نامطلوب جلوگيري كرده، يا کاهش و يا اصلاح خواهند شد.
- هدفهاي کنترل فناوري اطلاعات: بيان نتايج يا طرح مطلوبي که از راه پياده‌سازي روشهاي اجرايي، کنترل يک فعاليت خاص، به دست خواهد آمد.
- راهبري فناوري اطلاعات: ايجاد ارتباطات و فرايندها براي هدايت و کنترل سازمان براي دستيابي به هدفهاي سازمان براي ايجاد ارزش افزوده يا ايجاد تعادل و توازن ريسکهاي حاصل از به كارگيري فناوري اطلاعات و فرايندهاي آن.
هدف اصلي پروژه
COBIT، توسعه خط مشيهاي واضح و مدلهاي مناسب براي امنيت و کنترل فناوري اطلاعات، براي تأييد جهاني توسط سازمانهاي تخصصي، دولتي و تجاري است. هدف COBIT برآورده کردن هدفهاي تجاري است.

اصول چارچوب
COBIT
COBIT مدلي است براي راهبري فناوري اطلاعات. مفهوم اساسي چارچوب COBIT آن است که کنترل روي فناوري اطلاعات از راه توجه به اينکه اطلاعات بايد هدفها يا الزامات تجاري را پشتيباني كند، ايجاد مي‌شود.
چارچوب
COBIT در سه سطح در نظر گرفته شده است: در سطح پايين، فعاليتها و وظايفي وجود دارند که براي دستيابي به نتايج قابل اندازه‌گيري مورد نياز هستند. فعاليتها يک چرخه عمر دارند در حالي که وظايف بيشتر گسسته هستند




سپس فرايندها در يک لايه بالاتـر به عنوان مجموعه‌اي از فعاليتها و وظايف تعريف شده‌اند. در بالاترين سطح که بيشتر مورد توجه COBIT است، فرايندها در يک حوزه جمع‌آوري شده‌اند.
بنابراين چارچوب
COBIT از نظر مفهومي مي‌تواند از سه بعد در نظر گرفته شود: 1- معيارهاي اطلاعات؛ 2- منابع فناوري اطلاعات؛ 3- فرايندهاي مربوط به فناوري اطلاعات. اين سه بعد در مکعب COBIT به صورت شكل 4 نشان داده شده است.
چهار حوزه گسترده‌اي که در
COBIT در نظر گرفته شده‌اند عبارتند از: برنامه‌ريزي و سازماندهي، ايجاد و پياده‌سازي، تحويل و پشتيباني، نظارت.
بدين‌گونه که در حوزه برنامه‌ريزي و سازماندهي، استراتژي و تاکتيکها و نگراني‌هاي مربوط به شناسايي
IT را مي‌توان براي دستيابي به هدفهاي تجاري به بهترين شکل جمع‌آوري کرد. در حوزه ايجاد و پياده‌سازي براي شناخت و ايجاد استراتژي فناوري اطلاعات، امكانات بايد شناسايي، توسعه يافته و يا ايجاد شوند. در حوزه تحويل و پشتيباني، تحويل به موقع و ارائه خدمات مورد نياز، مورد توجه قرار مي‌گيرد و فرايندهاي پشتيباني مورد نياز بايد راه‌اندازي شوند. در حوزه نظارت، تمامي فرايندهاي IT لازم است که به طور منظم از نظر کيفيت و مطابقت با الزامات کنترل، مورد ارزيابي قرار گيرند.

چگونه
COBIT را به سازمان معرفي مي‌کنيد؟
COBIT معمولا فعاليتهاي تأييد شده‌اي را براي مديريت و کنترل منابع اطلاعاتي و فناوري اطلاعات، ايجاد مي‌کند. COBIT براي سه گروه طراحي شده است:
- براي مديران:
COBIT کمک مي‌کند که تعادل را بين ريسكهاي سرمايه گذاري و کنترل آنها در اغلب محيطهاي غير قابل پيش‌بيني برقرار مي‌کند.
- براي کاربران:
COBIT کمک مي‌کند که اطمينان يافتن از امنيت و کنترل خدمات IT ارائه شده، توسط گروه‌هاي داخلي و شخص ثالث.
- براي مميزان:
COBIT کمک مي‌کند که مستند کردن و ارائه نظرات و عقايدشان در مورد کنترلهاي داخلي فناوري اطلاعات براي اطلاع و آگاهي مديران، مؤثر باشد.
در نتيجه براي معرفي
COBIT در يک سازمان بايد آن را به سه گروه افراد ياد شده در سازمان معرفي كنيم و آنها را از فوايد COBIT آگاه سازيم.

براي پذيرش
COBIT چه کساني بايد تحت تاثير قرار گيرند؟
COBIT در اصل، يک چارچوب براي مديران فناوري اطلاعات و ارتباطات يک سازمان است. بنابراين، مديران به ويژه ايجادکنندگان خط مشي فناوري اطلاعات نقش مهمي را در پذيرش و ايجاد COBIT در سازمان ايفا مي‌کنند.
علاوه بر مديران عامل، مديران اطلاعات و كميته‌هاي راهبردي، افراد کليدي ديگري شامل مديران اجرايي، صاحبان فرايندهاي تجاري و مديران اصلي نيز بايد
COBIT را بپذيرند.




چرا يک سازمان بايد COBIT را بپذيرد؟
دلايلي که مديران و تصميم‌گيرندگان اصلي را به پذيرش
COBIT تشويق مي‌کند، عبارتند از:
1. به دليل مشکلات تجربه شده توسط سازمانها.
2. نياز مديران به نظارت بر منابع سازمان.
3. با کنترل منابع فناوري اطلاعات، هزينه کل ارائه خدمات آن ممکن است کاهش يابد.
4.
COBIT ترس و نگراني و عدم اطمينان مديران را نسبت به برآورده نشدن هدفهاي تجاري کاهش خواهد داد.
5. اطمينان يافتن از اينکه سازمان مطابق با قوانين کاربردي و قابل اجرا است.
6. ايجاد و برقراري ارتباطات بهبود يافته بين مديران، کاربران و مميزان با به کارگيري
COBIT.
7.
COBIT چارچوبي را براي شناسايي ريسکهاي مرتبط با فناوري اطلاعات و ارزيابي و کنترل آنها ارائه مي‌نمايد.
8. برخي سازمانها با به کارگيري
COBIT، مميزيهاي يکپارچه و سراسري، خود را بهبود داده‌اند منبع شماره 4 .

حوزه و محدوديتهاي
COBIT چه هستند؟
براي اينکه
COBIT به طور موفق اجرا شود، هر کسي بايد بداند که COBIT چيست، براي چه به کار برده مي‌شود و چه کاري مي‌تواند انجام دهد؟ در اين زمينه چندين نکته وجود دارد:
1.
COBIT روشي جديد براي تفکر است.
2.
COBIT چارچوبي است که بايد متناسب با سازمان باشد.
3.
COBIT بايد به عنوان يک منبع مديريت، کنترل و مميزي به کار برده شود.
4. کارکنان اصلي بايد براي دستيابي به يک پياده‌سازي موفق، از
COBIT آگاه باشند و آموزش ببينند.

چگونه
COBIT را در سازمانتان اجرا کنيد؟
پذيرش موفق
COBIT به آموزش احتياج دارد. پس از معرفي COBIT در سازمان، براي اجراي آن، ابتدا مسئولان اصلي بايد آشنايي کامل نسبت به آن داشته باشند و آن را بپذيرند. پس از تأييد، لازم است که COBIT در نظامنامه، خط مشي و روشهاي اجرايي به عنوان يک مدل مناسب مشخص شود و سپس از راه فرمهاي نام برده شده در زير، ارزيابي ريسک و برنامه‌ريزي مميزي انجام گيرد.
فرمها عبارتند از:
- فرم فعاليتهاي پيش مميزي: شناسايي اينکه آيا فعاليتهاي مميزي مرتبط با فرايند فناوري اطلاعات در حوزه پيش از مميزي قرار مي‌گيرد؟ اين فرم توسط تيم مميزي تکميل مي‌شود.
- فرم خلاصه گزارش بخش: شناسايي فرايندهاي مربوط به فناوري اطلاعات که با اهميت بيشتري مورد توجه قرار گيرند. اين فرم توسط مديران بخشها تکميل مي‌شود.
- فرم ارزيابي ريسک: کمک به تيم مميزي در شناسايي فرايندهاي مربوط به فناوري اطلاعات در جايي که ريسک وجود خواهد داشت. اين فرم توسط تيم مميزي يا مديران يا به طور مشترک تکميل مي‌شود.
- فرم گروه‌هاي مسئول: براي شناسايي کساني که هر فرايند مربوط به فناوري اطلاعات را انجام مي‌دهند و کساني که مسئول نهايي هر فرايند هستند. اين فرم توسط تيم مميزي با مشارکت مديران بخش مميزي شونده تکميل مي‌شود.

انجام مميزي با استفاده از
COBIT
پس از برنامه‌ريزي، فرايند مميزي براساس گامهاي زير انجام مي‌گيرد:

1. تعيين نوع مميزي: نوع مميزي مورد نياز براي بخشي که بايد مميزي شود را انتخاب کنيد. انواع مميزيهايي که ممکن است انجام شوند، عبارتند از: مالي، عملکرد، مطلوبيت و ... .

2. تعيين هدفهاي مميزي: بعد از انتخاب نوع مميزي، زمان آن است که هدفهاي کنترل
COBIT براي دستيابي به بينش و آگاهي بيشتر فرايندهاي مربوط به فناوري اطلاعات انتخاب شده براي اين مميزي به کار گرفته شود.

3. توسعه و برنامه‌ريزي مميزي: در صورتي که يک برنامه مميزي وجود داشته باشد، آن برنامه با راهنماي مميزي
COBIT مقايسه مي‌شود و اگر برنامه مميزي وجود نداشته باشد، از راه راهنماي مميزي COBIT يک برنامه مميزي تهيه مي‌شود. در اين گام فعاليتهاي زير انجام مي‌شود: مقايسه هدفهاي مميزي با هدفهاي کنترل COBIT، مقايسه برنامه مميزي با برنامه مميزي COBIT، افزودن فعاليتهاي مميزي پيشنهاد شده از راه نظامنامه‌ها و راهنماهاي سازماني و قانوني.
4. انجام مميزي: مميزي مطابق راهنماي مميزي
COBIT انجام مي‌گيرد.

5. نوشتن گزارش مميزي: نوشتن نتايج با تمرکز روي هدفهايي که برآورده شده‌اند و هدفهايي که برآورده نشده‌اند (منبع شماره‌4).

نتيجه‌گيري
فناوري اطلاعات يک بخش جدايي ناپذير از تجارت است و راهبري آن يک بخش جدايي ناپذير از مديريت سازمان است. در راهبري فناوري اطلاعات نقشها و مسئوليتها بايد به طور واضح مشخص شوند و کميته‌هايي مثل کميته راهبري (در سطح اجرايي) و کميته استراتژي (در سطح مديريتي) تشکيل شده، سپس يک طرح براي اجرا و پياده‌سازي راهبري، مثل
COBIT لازم است. براي انجام راهبري كارهاي زير بايد انجام گيرد:
- تهيه چارچوب سازماني مديران
- هماهنگي استراتژي فناوري اطلاعات با هدفهاي تجاري،
- شناخت ريسکها،
- تعريف و شناسايي سطوح فرايند،
- شناسايي عدم انطباقها و مغايرتها،
- توسعه استراتژيهاي بهبود،
- ارزيابي نتايج.
اين كارها تا بهبود کامل تکرار مي‌شود.‌

منابع:

.1 Brown, Carol and Jeanne W.Ross, 1999, The IT organization of the 21th century: Moving to a Process-Based orientation.
2. Board Briefing on IT Governance
IT Governance Institute – 2003
3. COBIT 3rd Edition- Audit Guidelines, IT Governance Institute – July 2000
4. COBIT 3rd Edition- Implementation Tool Set , IT Governance Institute – July 2000
 
عنوان مقاله: راهبری فناوری اطلاعات در سازمان
مولف/مترجم: آیدا حقیقی
سال انتشار(میلادی): 2008
منبع: ماهنامه تدبیر-سال نوزدهم-شماره 199
ارسال شده توسط احمد محمدی | 21 02, 2016 | بازدید‌ها (668)

فاکتورهای دامنه

1. سن دامنه: در حقیقت تفاوتی بین دامنه ای که 6 ماه سن دارد با آن که 1 سال، اصلا زیاد نیست. به عبارت دیگر گوگل از سن دامنه استفاده می کند اما چندان مهم نیست.

 2. کلمات کلیدی در دامنه های سطح بالا ظاهر می شود: استفاده از کلمه کلیدی در دامنه باعث ترقی نمی شود اما نشانه مرتبط بودن است. در آخر اینکه آنها کلمات کلیدی را که در دامنه ظاهر می شود بولد ( bold ) می کنند.

 200 فاکتور رتبه بندی گوگل

3. کلمه کلیدی به عنوان اولین کلمه در دامنه: اعضای انجمن فاکتورهای رتبه بندی موتورهای جستجو در سال 2011 توافق کردند، دامنه ای که با کلمه کلیدی هدف خود شروع می شود، نسبت به دامنه ای که در خود کلمه کلیدی ندارد یا کلمه کلیدی در وسط یا انتهای دامنه قرار دارد،سرتر است.

4. ثبت طول دامنه: دامنه های ارزشمند)مشروع( اغلب جلوتر برای چند سال آینده پرداخت شده اند در حالی که دامنه های( نامشروع) به ندرت برای 1 سال استفاده می شوند. بنابراین زمان انقضای دامنه می تواند به عنوان یک فاکتور برای پیش بینی مشروعیت آن مورد استفاده قرار گیرد.

5. کلمه کلیدی در اسم زیردامنه ( Subdomain ): هیئت Moz توافق کردند که وجود کلمه کلیدی در زیردامنه موجب بهبود رتبه شود.

6. تاریخچه دامنه: یک سایت با مالکیت بی ثبات ممکن است از گوگل بخواهد که تاریخچه سایت را مجددا تنظیم کند ( reset ) یا لینک هایی که به دامنه ارجاع می شود را خنثی کند.

7. دامنه دقیقا همتا ( Exact Match Domain ) : اگر سایت باکیفیتی داشته باشید، EMDs می تواند به شما برتری دهد. اما اگر EMDs در یک سایت بی کیفیت اتفاق بیفتد، به آپدیت EMDs آسیب می رساند.

8. دامنه عمومی در برابر دامنه خصوصی: دامنه خصوصی می تواند نشانه یک چیز مخفی باشد. فعال کردن خصوصی سازی بالقوه چیزی بدی نیست، اما اگر خیلی زیاد و در همه چیز اتفاق بیفتد، اندکی غیرعادی به نظر خواهد آمد.

9. جریمه مالک دامنه: اگر گوگل شخصی را به عنوان spammer تشخیص دهد، سایر سایت هایی که متعلق به این شخص است را با موشکافی بیشتر نگاه می کند.

فاکتورهای صفحه

10. گسترش مرز TLD : با داشتن کد کشور برای دامنه به رتبه بندی سایت در آن کشور خاص کمک می کند، اما سایت را در رتبه بندی جهانی محدود می کند.

11. کلمه کلیدی در تگ عنوان: تگ عنوان دومین بخش مهم محتوای صفحه است، در نتیجه سیگنال قوی در سئو on-page ارسال می کند.

12. شروع تگ عنوان با کلمه کلیدی: بر مبنای اطلاعات Moz ، تگ عنوانی که با کلمه کلیدی شروع می شود در مقایسه با تگ عنوانی که کلمه کلیدی در انتهای آن قرار دارد، از کارایی بهتری برخوردار است.

13. کلمه کلیدی در تگ توضیحات:این هم نشانه دیگر مرتبط بودن است و شما را متمایز می سازد.

14. وجود کلمه کلیدی در تگ H1 : تگ H1 دومین تگ عنوان است که سیگنال مرتبط بودن را به گوگل ارسال می کند.

15. کلمه کلیدی عبارتی است که بیشترین استفاده از آن در متن شده: انتخاب کلمه کلیدی که بیشتر از سایر کلمات مورد استفاده قرار گرفته، نشانه مرتبط بودن است.

16. طول محتوا: محتوایی که کلمات بیشتری دارد می تواند سطح گسترده تری را پوشش دهد و به مقالات سطحی و کوتاه ارجحیت دارد.

17. تراکم کلمه کلیدی: تراکم کلمه کلیدی مبنایی است که گوگل از آن برای انتخاب عنوان صفحه استفاده می کند. اما استفاده بیش از حد می تواند به شما آسیب برساند.

18. پنهان سازی معنایی کلمه کلیدی در محتوا: LSI کلمات کلیدی به موتورهای جستجو کمک می کند معنی کلماتی که بیش از یک معنی دارند را بتواند استخراج کند. وجود یا عدم وجود LSI نشانه کیفیت محتوا است.

19. کلمات کلیدی LSI در عنوان و تگ توضیحات: به عنوان محتوای صفحه، کلمات کلیدی LSI در صفحه تگ متا به گوگل در تشخیص بین مترادف ها کمک می کند. همچنین به عنوان یک نشانه مرتبط بودن هم هست.

20. سرعت بارگذاری صفحه از طریق HTML : هم گوگل و هم بینگ از سرعت بارگذاری صفحه به عنوان یک فاکتور رتبه بندی استفاده می کنند. عنکبوت های موتورهای جستجو به راحتی می توانند سرعت سایت شما را بر اساس کدهای صفحه و حجم فایل ها تخمین بزنند.

21. محتوای تکراری: محتوای یکسان در همان سایت می تواند روی دید موتورهای جستجو نسبت به آن سایت تاثیر منفی داشته باشد.

22. نگارش = متعارف: استفاده از این تگ مانع از این می شود که گوگل صفحاتتان را محتوای تکراری محسوب کند.

23. سرعت بارگذاری صفحه از طریق کروم: ممکن است گوگل از داده های کاربران کروم برای کنترل بهتر سرعت صفحه استفاده کند و بهتر است شما برای افزایش سرعت سایت از CDN استفاده کنید.

24. بهینه سازی تصاویر: تصاویر on-page سیگنال مرتبط بودن مهمی از طریق نام فایلش، متن Alt ، عنوان، توضیحات و تیتر به موتورهای جستجو ارسال می کند.

25. تاخیر در به روزرسانی محتوا: در آپدیت های اخیر گوگل ریتم قرار دادن محتوا مخصوصا برای جستجوهایی که حساس به زمان است، اهمیت پیدا کرده. این فاکتور بسیار حائز اهمیت است و گوگل تاریخ آخرین به روزرسانی را برای صفحات خاص نشان می دهد.

26. مقدار به روزرسانی محتوا: مقدار ویرایش و تغییر یک فاکتور تازگی است. افزودن یا حذف کامل یک بخش، نسبت به تغییر مفهوم چندتا از کلمات به روزرسانی چشمگیرتری است.

27. پیشینه به روزرسانی صفحه: در طول زمان، صفحه هر چند وقت یکبار به روزرسانی شده؟ روزانه، هفتگی، هر 5سال یکبار. تناوب به روزرسانی صفحه در تازگی آن تاثیرگذار است.

28. مشهود بودن کلید واژه: داشتن کلید واژه ای که در 100 کلمه اول محتوا ظاهر شود، یک نشانه مرتبط بودن مهم است.

29. کلمه کلیدی در تگ H2, H3 : وجود کلمه کلیدی در زیرعنوان H2, H3 می تواند نشانه کوچکی از مرتبط بودن باشد. هیئت Moz هم با این موضوع موافق است.

30. چیدمان کلمات کلمه کلیدی: تقدم و تاخر در کلمات کلیدی می تواند موجب کسب رتبه بهتر و یا رتبه ضعیف تر شود. بهترین کار این است که از keyword researchاستفاده کنید.

31. کیفیت لینک های خروجی: بسیاری از سئودان ها فکر می کنند که لینک فرستادن به سایت های خوشنام می تواند سیگنال اطمینان به گوگل بفرستد.

32. تم لینک های خروجی: بر اساس Moz ، موتورهای جستجو محتوای صفحه ای که شما به آن لینک کردید را به عنوان نشانه مرتبط بودن مورد استفاده قرار می دهند. به عنوان مثال اگر صفحه شما راجع به ماشین باشد و به صفحه ای که راجع به فیلم است لینک کنید، این کار به گوگل می گوید که صفحه شما راجع به فیلم ماشین ها است نه خودرو.

33. گرامر و املا: گرامر و املای مناسب و صحیح نشانه کیفیت است و حائز اهمیت می باشد.

34. محتوای همزمان: آیا محتوایی که در صفحه تان است اصل می باشد؟ اگر یک بخش یا کپی از کل محتوای یک صفحه ایندکس شده باشد، نمی توانید مانند صفحه اصلی رتبه کسب کنید.

35. محتوای تکمیلی مفید: محتوای تکمیلی مفید شاخصی است برای کیفیت سایت. برای مثال شامل مبدل ارز، ماشین حساب بهره وام و دستورالعمل های تعاملی.

36. تعداد لینک های خروجی: تعداد زیاد لینک های خروجی می تواند به رتبه بندی صفحه تان آسیب بزند.

37. عناصر چندرسانه ای: عکس ها، ویدئوها و سایر عناصر چندرسانه ای می تواند نشانه کیفیت محتوا باشد.

38. تعداد لینک های داخلی صفحه: تعداد لینک های داخلی صفحه نشان دهنده اهمیت مرتبط بودن سایر صفحات سایت است.

39. کیفیت لینک های داخلی صفحه: لینک های داخلی از صفحات معتبر در دامنه، نسبت به صفحاتی که PR ندارند یا ضعیف است، تاثیر بیشتری دارد.

40. لینک های خراب)شکسته(: داشتن تعداد زیادی لینک شکسته در صفحه می تواند نشانه ای از نادیده گرفته شده یا رها شده باشد. ارزیاب اطلاعات گوگل از لینک های خراب برای ارزیابی کیفیت صفحه اصلی استفاده می کند.

41. سطح خواندن: هیچ شکی نیست که گوگل سطح خواندن صفحات وب را تخمین می زند و یک سطح اولیه خوانده می تواند به رتبه صفحه تان کمک کند. سطح خواندن یک فاکتور است که کیفیت سایت را از تولید محتوای آن جدا می کند.

42. لینک های وابسته: لینک های وابسته به خودی خود باعث خراب کردن رتبه شما نمی شوند. اما اگر تعداد آنها خیلی زیاد باشد، ممکن است الگوریتم های گوگل توجه بیشتری به سایر نشانه های کیفیت سایت شما بکند تا اطمینان حاصل نماید که شما یک سایت وابسته نیستید.

43. خطاهای HTML / اعتبار W3C : تعداد زیاد خطاهای HTML یا برنامه نویسی نامرتب می تواند نشانه پایین بودن کیفیت سایت باشد. موضوع بحث برانگیز این است که خیلی ها در سئو فکر می کنند اعتبار W3C ، یک نشانه کیفیت ضعیف است.

44. اعتبار یا قدرت دامنه میزبان صفحه: همه چیز برابر است، یک صفحه در دامنه معتبر، بالاتر از یک صفحه در دامنه کم اعتبار است.

45. رتبه بندی صفحه: کاملا مرتبط نیست اما به طور کلی PR بالاتر صفحه در مقایسه با PR پایین تر منجر به رتبه بهتر می شود.

46. طول URL : طولانی بودن بیش از حد URL ممکن است به دیده شدگی شما در جستجو صدمه وارد کند.

47. راه URL : صفحه ای که به صفحه اصلی نزدیک تر است ممکن است اعتبار بالاتری کسب کند.

48. ویراستاران انسانی: اگرچه هرگز تایید نشده اما گوگل حق انحصاری اختراع یک سیستم را دارد که به ویراستاران انسانی امکان می دهد در SERPs نفوذ پیدا کنند.

49. طبقه بندی صفحه: طبقه ای که صفحه در آن ظاهر می شود یک نشانه مرتبط بودن است. صفحه ای که در یک طبقه مرتبط قرار می گیرد نسبت به صفحه ای که در طبقه ای غیرمرتبط است، امتیاز مرتبط بودن بیشتری کسب می کند.

50. تگ های وردپرس: تگ های خاص وردپرس نشانه مرتبط بودن است. تنها روشی که سئوتان را بهبود می بخشد، مرتبط بودن بخش های مختلف محتوا و همچنین مجموعه ای از پست ها است.

51. کلمه کلیدی در URL : این نشانه دیگر و مهم مرتبط بودن است.

52. رشته URL : طبقه داخل در رشته URL توسط گوگل خوانده می شود و یک سیگنال موضوعی راجع به اینکه صفحه در چه مورد است، ارائه می کند.

53. مراجع و منابع: با استناد به مراجع و منابع، مانند آنچه مقالات پژوهشی انجام می دهد، می تواند نشانه ای از کیفیت باشد. دستورالعمل های کیفیت گوگل می گوید که بازبین ها باید نگاه کردن به یک صفحه چشم شان به منابع باشد: موضوع باید تخصصی و منابع آن معتبر باشد.

54. فهرست های شماره و نشانه دار: فهرست های شماره و نشانه دار کمک می کند تا محتوایتان برای خواننده تفکیک شده باشد. گوگل هم با این کار موافق است و محتواهایی که شماره و نشانه دارد را تعرجیح می دهد.

55. الویت صفحه در نقشه سایت: الویتی که به یک صفحه از طریق فایل sitemap.xml داده می شود می تواند روی رتبه بندی تاثیر بگذارد.

56. تعداد بیش از حد لینک های خروجی: بعضی از صفحات راه به تعداد بسیار زیادی لینک دارند که موجب مبهم شدن صفحه و پرت شدن حواس از محتوای اصلی می شود.

57. مقدار سایر کلمات کلیدی برای رتبه بندی صفحه: اگر صفحه برای چندین کلمه کلیدی رتبه داشته باشد، این امر نشانه داخلی کیفیت برای گوگل است.

58. سن صفحه: اگرچه گوگل محتواهای جدید و صفحات قدیمی که محتوایشان را به طور منظم به روز می کنند ترجیح می دهد اما صفحات جدیدی که کارایی خوبی داشته باشند هم مورد قبول خواهند بود.

59. چیدمان کاربر پسند: وقتی طرح بندی صفحه در بالاترین کیفیت باشد موجب می شود که محتوا بلافاصله قابل مشاهده شود.

60. دامنه های رها شده ( Parked Domains  ) : برمبنای به روزرسانی دسامبر 2011گوگل، دیده شدگی در جستجو برای دامنه های رها شده کاهش یافت.

61. محتوای مفید: گوگل بین محتوای با کیفیت و مفید تمایز قائل می شود.

62. محتوایی که دارای ارزش و بینش منحصر به فرد است: گوگل شروع کرده است به از دور خارج کردن سایت هایی که محتوای جدید و مفید ارائه نمی کنند خصوصا سایت های وابسته.

63. صفحه ارتباط با ما: گوگل سایت هایی که اطلاعات تماس با ما مناسبی دارند را ترجیح می دهد و اگر اطلاعات تماس تان منطبق با اطلاعات دامنه تان باشد، پاداش در نظر می گیرد.

64. اعتماد دامنه / رتبه اعتماد: اعتماد سایت توسط لینک هایی که از سایت های معتبر به آن داده می شود مورد سنجش قرار می گیرد. این فاکتور رتبه بندی بسیار حائز اهمیت است.

65. معماری سایت: سایتی که اجزای آن به خوبی در کنار هم قرار گرفته اند و معماری مناسبی دارد به گوگل کمک می کند تا محتوای آن را از نظر موضوعی سازماندهی کند.

66. به روزرسانی سایت: ااینکه هر چند وقت سایت به روزرسانی و محتوای جدید به آن افزوده می شود، فاکتور تازگی سایت است.

67. تعداد صفحات: تعداد صفحات سایت نشانه ضعیفی از اعتبار است. این موضوع به گوگل کمک می کند تا یک سایت بزرگ را از یک سایت وابسته تشخیص دهد.

68. وجود نقشه سایت: نقشه سایت به موتورهای جستجو کمک می کند تا صفحات شما را راحت تر، کامل تر و با قابلیت دیده شدگی بهتر ایندکس کنند.

69. زمان کار سایت ( Uptime ) : زمان خرابی ( downtime ) زیاد سایت به دلیل مسائل مربوط به سرور یا تعمیرات باعث صدمه زدن به رتبه سایت می شود.

70. محل سرور: محل سرور ممکن است محل کسب رتبه سایت را در مناطق جغرافیایی مختلف تحت تاثیر قرار دهد. خصوصا برای جستجوهای جغرافیایی خاص خیلی مهم
است.

71. گواهی SSL : گوگل گواهی SSL را ایندکس می کند و از HTTPS به عنوان نشانه رتبه بندی استفاده می نماید.

72. شرایط استفاده از خدمات و صفحات حفاظت: این دو صفحه به گوگل کمک می کنند تا تشخیص دهد این سایت از اعضای قابل اعتماد اینترنت هست یا نه.

73. اطلاعات متا تکراری در سایت( Duplicate Meta Information On-Site ) وجود اطلاعات متا تکراری در سایت می تواند موجب افت قابلیت دیده شدگی سایت تان شود.

74. راهنمای اطلاعات: این شیوه چیدمان کاربر پسند به کاربر کمک تا بداند در کجای سایت قرار دارد و همچنین از فاکتورهای رتبه بندی است.

75. بهینه سازی سایت برای موبایل: این احتمال وجود دارد که سایت های ریسپانسیو در جستجوهای با گوشی در رتبه بالاتر قرار گیرند. همچنین تگ “ Mobile friendly ” به سایت هایی که در موبایل به درستی نشان داده می شوند افزوده شده است. علاوه بر این گوگل شروع به جریمه سایت هایی که در جستجوی موبایل، mobile friendlyنیستند، نموده است.

76. یوتیوب: بدون شک ویدیوهای یوتیوب در SERPs ترجیح دارد. زیرا موتورهای جستجو دریافتند که بعد از Google Panda سایت YouTube.com بیشترین ترافیک را دارد.

77. قابلیت استفاده سایت: سایتی که استفاده از آن یا مسیریابی در آن سخت است امکان دارد به دلیل کاهش زمان ماندن در سایت، مشاهده صفحات و افزایش نرخ خروج، رتبه بندی آن آسیب ببیند.

78. استفاده از :Google Analytics and Google Webmaster Toolsبرخی فکر می کنند تنها نصب این دو برنامه روی سایت می تواند ایندکس شدن آن را بهبود بخشد. همچنین موجب می شود با دادن اطلاعات بیشتر به گوگل برای کار کردن، رتبه سایت مستقیما تحت تاثیر قرار گیرد.

79. عقیده کاربران / شهرت سایت: عقیده و نظر کاربران در مورد سایت شما کمک بسیاری زیادی می کند تا موتورهای جستجو شهرت و اعتبار شما را افزایش دهند . درج نظر در سایت و فعالیت در آن توسط کاربران باعث افزایش شهرت آن نزد موتورهای جستجو می شود.

فاکتورهای backlink
 
80. لینک کردن سن دامنه: Backlink از دامنه های قدیمی تر در مقایسه با دامنه های جدید بهتر است.

81. تعداد دامنه های لینک شده: تعداد دامنه هایی که به آنها ارجاع داده می شود یکی از فاکتورهای رتبه بندی در الگوریتم گوگل است.

82. تعداد صفحات لینک شده: مجموع تعداد صفحات لینک کرده (حتی اگر برخی از آنها روی یک دامنه قرار داشته باشند) یک فاکتور رتبه بندی است.

83. تگ Alt (برای لینک های تصویری(: متن Alt ورژن تصویری متن anchorاست.

84. اعتبار صفحه لینک شده: اعتبار صفحه ای که به آن ارجاع شده یک فاکتور بسیار مهم در رتبه بندی است.

 85. اعتبار دامنه لینک: اعتبار دامنه ای که به آن ارجاع می شود می تواند نقش مستقلی در اهمیت لینک ایفا کند.

86. لینک از رقبا: لینک از سایر صفحاتی که رتبه بندی شان در SERP برابر است برای رتبه صفحه در یک کلمه کلیدی خاص ارزشمندتر می باشد.

 87. به اشتراک گذاری صفحه ای که به آن ارجاع شده در شبکه های اجتماعی: هرچه صفحه بیشتر به اشتراک گذاشته شود روی ارزش آن موثر است.

88. لینک از Neighborhoods بد(همسایه) : این امر می تواند به سایت شما صدمه وارد کند.

89. پست های مهمان: هرچند پست های مهمان می تواند بخشی از یک کمپین سئو کلاه سفید باشد اما لینک هایی که از پست های مهمان می آید به اندازه لینک های متنی ارزشمند نیست.

90. لینک به دامنه صفحه اصلی که صفحه روی آن نشسته: لینک به صفحه اصلی که به آن ارجاع شده می تواند نقش مهمی در ارزیابی سایت ایفا کند.

91. لینک های یک طرفه: این امر یک بحث مهم در سئو استو عبارت است از اینکه به طور کلی ما از آنها پیروی نمی کنیم.

92. تنوع نوع لینک ها: داشتن درصد بالای غیرمعمول لینک از یک منبع می تواند نشانه webspam باشد.

93. لینک های حمایت شده یا سایر کلمات اطراف لینک: کلماتی مانند اسپانسر، شرکای لینک و لینک های حمایت شده، می تواند ارزش لینک شما را کم کند.

94. لینک های متنی: لینک هایی که داخل محتوای یک صفحه جاسازی شده اند در مقایسه با لینک هایی که در یک صفحه خالی یا هرجایی از صفحه قرار دارند، قدرتمندتراند. یک مثال خوب از لینک متنی، بکلینک از گستوگرافیک است.

95. تعداد بیش از حد تغییر مسیر 301 به صفحه: لینک هایی که از تغییر مسیر 301می آید باعث ضعیف شده برخی یا تمام PR می شود.

96. متن Anchor بکلینک: Anchor معمولا توضیح دقیق تری از صفحه وب ارائه می دهد نسبت به خود صفحه.

97. متن لینک Anchor داخلی: این متن نشانه دیگر مرتبط بودن است، اگرچه متفاوت از متن Anchor بکلینک است. متن Anchor در مقایسه با قبل از اهمیت کمتری برخوردار است اما همچنان نشانه ضعیفی از مرتبط بودن است.

98. اختصاص دادن عنوان لینک: عنوان لینک به عنوان یک نشانه ضعیف مرتبط بودن استفاده می شود.

99. TLD کشوری که دامنه به آن ارجاع شده: لینک گرفتن از کشورهایی که پسوند دامنه شان سطح بالا است. de, .cn, .co.uk به شما در کسب رتبه بهتر در آن کشور کمک می کند.

100. محل لینک در محتوا: بهتر است لینک را در ابتدای محتوا بیاورید تا در انتهای آن.

101. محل لینک در صفحه: این که لینک در کجای صفحه ظاهر می شود مهم است. عموما لینک هایی که در محتوا جاسازی می شود قدرتمندتر از لینک هایی است که در حاشیه بالایی، پایینی یا کناری صفحه قرار می گیرد.

102. مرتبط بودن دامنه لینک: لینک از سایتی که فعالیت مشابه شما دارد خیلی موثرتر از سایت غیرمرتبط است.

103. میزان مرتبط بودن صفحه: لینک از صفحه ای که خیلی به محتوای صفحه شما نزدیک است بسیار قدرتمندتر از یک صفحه غیرمرتبط است.

104. متن اطراف دیدگاه لینک: گوگل تشخیص می دهد لینکی که به سایت تان فرستاده شده یک پیشنهاد است یا یک بررسی منفی. لینک هایی که در اطراف شان دیدگاه مثبت وجود دارد قدرتمندتر هستند.

105. کلمه کلیدی در عنوان: گوگل علاقه مضاعف به لینک هایی دارد که در عنوان شان کلمه کلیدی آن صفحه را دارند.

106. سرعت لینک مثبت: سایتی که سرعت لینک مثبت دارد معمولا افزایش SERP به دست می آورد.

107. سرعت لینک منفی: سرعت لینک منفی می تواند به طور چشمگیری رتبه تان را کاهش دهد زیرا نشانه کاهش محبوبیت است.

108. لینک از صفحات “ Hub ”: گرفتن لینک از صفحاتی که در مورد یک موضوع خاص منابع تاپ (or hubs) محسوب می شوند، به شما یک treatment خاص می دهد.

109. لینک از سایت های معتبر: لینک از سایت هایی که معتبر محسوب می شوند نسبت به سایت های کوچک و با فعالیت اندک، موجب محبوبیت بیشتری برایتان می شود.

110. لینک کردن به عنوان منبع ویکیپدیا: اگرچه لینک ها یک طرفه اند اما بسیاری فکر می کنند گرفتن لینک از ویکیپدیا باعش افزایش اطمینان و اعتبار از دید موتورهای جستجو می شود.

111. همکاری ظهور: کلماتی که اطراف بکلینک ظاهر می شوند به گوگل کمک می کنند تا بداند این صفحه راجع به چیست.

112. سن بکلینک: بر اساس یک Google patent لینک های قدیمی تر در مقایسه با لینک های جدید از قدرت بیشتری در رتبه بندی برخوردار هستند.

113. لینک از سایت های واقعی در مقایسه با صفحات ساختگی: گوگل امتیاز بیشتری به لینک هایی که از سایت های واقعی است در مقایسه با وبلاگ های ساختگی می دهد. گوگل از نام تجاری و تعامل کاربران به عنوان نشانه ای برای تشخیص این دو نوع سایت استفاده می کند.

114. مشخصات لینک طبیعی: یک سایت با مشخصات لینک طبیعی رتبه بالاتری خواهد گرفت و برای به روزرسانی هم ماندگارتر است.

115. لینک های متقابل: Google’s Link Schemes صفحاتی که تبادل لینک بیش از حد دارند به عنوان یک طرح لینک برای جلوگیری لیست کرده است.

116. لینک های محتوایی تولیدشده توسط کاربران: گوگل می تواند لینک هایی که توسط UGC یا صاحب یک سایت واقعی تولید شده را تشخیص دهد و بین این دو تفاوت زیادی وجود دارد.

117. لینک از 301 : لینک از تغییر مسیر 301 در مقایسه با لینک مستقیم ممکن است اندکی به خوشنامی تان خدشه وارد کنند هر چند که هر دو لینک شبیه هم هستند.

118. میکروفرمت Schema.org : صفحاتی که میکروفرمت را پشتیبانی می کنند نسبت به آنهایی که نمی کنند، رتبه بالاتری خواهند گرفت. این امر منجر به افزایش مستقیم یا SERP CTR بالاتر می شود.

119. لیست DMOZ : بسیاری بر این باورند که گوگل لیست سایت های DMOZ را برای اطمینان بیشتر ارائه می کند.

120. رتبه اطمینان سایت لینک دهنده: سطح اعتماد سایتی که به شما لینک می کند، مشخص می نماید که چقدر رتبه اطمینان به سایت شما منتقل می کند.

121. تعداد لینک های خروجی در صفحه: رتبه صفحه محدود است. یک لینک در صفحه با 100 ها OBLs، PR کمتری را در مقایسه با صفحه ای که تنها تعداد کمی OBLs دارد، قبول می کند.

122. بازارهای نمایش لینک: به دلیل سطح spamming ممکن است گوگل به شکل قابل توجهی لینک های از بازارهای نمایش را بی ارزش کند.

123. تعداد کلمات محتوای لینک: لینک از پستی که 1000 کلمه دارد ارزشمندتر از لینکی است که در یک متن 25 کلمه ای قرار دارد.

124. کیفیت محتوای لینک دهنده: لینک از یک نوشته بی کیفیت یا تکراری از نظر ارزش با یک محتوای چندرسانه ای و با کیفیت برابر نیست.

125. لینک های صفحات ویژه ( Sitewide ) : لینک های صفحات ویژه “فشرده شده” هستند و تنها یک لینک محسوب می شوند.

126. کلیک طبیعی از طریق میزان برای یک کلمه کلیدی: صفحاتی که کلیک بیشتری در CTR می گیرند ممکن است برای یک کلمه کلیدی خاص افزایش SERP داشته باشند.

127. CTR طبیعی برای تمامی کلمات کلیدی: CTR طبیعی صفحه برای تمامی کلمات کلیدی موجب کسب رتبه می شود برای نشانه تعامل با کاربر.


فاکتورهای تعامل با کاربر
 
128. نرخ خروج: نرخ خروج روشی است که گوگل از آن برای تست کیفیت صفحه استفاده می کند. بی شک وقتی افراد سریعا از صفحه خارج می شوند آن صفحه خوب نیست.

129. ترافیک مستقیم: گوگل از اطلاعات کروم برای تشخیص اینکه آیا افراد از سایت بازدید می کنند و هر چند وقت یکبار، استفاده می کند. سایت هایی که ترافیک مستقیم زیادی دارند کیفیت بالاتری نسبت به سایت هایی ترافیک مستقیم شان کمتر است، دارند.

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

131. سایت های بلاک شده: گوگل استفاده از این ویژگی را در کروم متوقف کرده اما Panda همچنان از آن به عنوان نشانه کیفیت استفاده می کند.

132. Bookmarks کروم : گوگل اطلاعات کروم را جمع آوری می کند. صفحاتی که در کروم Bookmarks دریافت می کنند افزایش رتبه خواهند داشت.

133. اطلاعات نوار ابزار ( Toolbar ) گوگل: گوگل از اطلاعات نوار ابزار به عنوان نشانه ای برای رتبه بندی استفاده می کند. علاوه بر سرعت بارگذاری صفحه و نرم افزارهای مخرب مشخص نیست که گوگل چه اطلاعاتی از نوار ابزار استفاده می کند.

134. تعداد نظرات: صفحه ای که تعداد زیادی کامنت در آن وجود دارد نشانه تعامل با کاربر و کیفیت سایت است.

135. زمان سکون ( Dwell Time ) : گوگل توجه زیادی به Dwell Time می کند یعنی میزان زمانی که افراد بعد از آمدن از جستجوی گوگل به صفحه شما در آن سپری می کنند. هرچه افراد زمان بیشتری سپری کنند نشانه کیفیت بالاتر سایت شماست.

136. تازگی سزاوار پرسش: گوگل به صفحات جدید برای جستجوهای خاص یک بهبود رتبه می دهد.

137. تنوع سزاوار پرسش: ممکن است گوگل برای کلمات کلیدی مبهم تنوعی به SERP اضافه کند، مانند : Ted WWF یا ruby قوانین الگوریتم های خاص

138. تاریخچه جستجوی افراد: سایت هایی که موقع ورود به گوگل اغلب آنها را بازدید می کنید SERP bump برای جستجوی شما دریافت می کنند.

139. تاریخچه جستجوی کاربران: زنجیره جستجو، نتایج را برای جستجوهای بعدی تحت تاثیر قرار می دهد.

140. هدف قرار دادن ژئو: گوگل به سایت هایی که IP سرور منطقه ای و نام دامنه خاص یک کشور دارد، گوگل به آنها ترجیح می دهد.

141. جستجوی ایمن: نتایج جستجو با کلمات دشنام یا محتواهای مربوط به بزرگسالان برای افرادی که جستجوی ایمن را فعال می کنند، نشان داده نمی شود.

142. گوگل پلاس سیرکل: گوگل نتایج بیشتری را برای نویسندگان و سایت هایی که شما به گوگل پلاس سیرکل افزوده اید، نشان می دهد.

143. شکایات DMCA : گوگل صفحاتی که شکایات DMCA دارد را کاهش رتبه ( downranks ) می دهد.

144. تنوع دامنه: به روزرسانی به اصطلاح Bigfoot دامنه های بیشتری را به هر صفحه SERP می افزاید.

145. جستجوهای معامله ای: گاهی گوگل نتایج متفاوتی برای کلمات کلیدی مربوط به خرید مانند پرواز، نمایش می دهد.

146. جستجوی منطقه ای: گوگل معمولا جستجوی منطقه ای گوگل پلاس را در بالایSERP طبیعی قرار می دهد.

147. باکس اخبار گوگل: کلمات کلیدی مشخص باعث یک باکس اخبار گوگل می شود.

148. ارجحیت برندهای بزرگ: گوگل برای جستجوهای مشخص و کوتاه به برندهای بزرگ کمک می کند.

149. نتایج خرید: گوگل گاهی نتایج خرید گوگل را در SERPs طبیعی نمایش می دهد.

150. نتایج یک سایت برای برندها: دامنه یا کلمات کلیدی برند منجر به چندین نتیجه برای یک سایت می شود.

سیگنالهای شبکه های اجتماعی

151. تعداد تویت ها ( Tweets ) : لایک کردن لینک و تویت کردن صفحه بر رتبه آن در گوگل هم تاثیر می گذارد.

152. اعتبار حساب کاربری کاربران تویتر: تویت شدن توسط یک صفحه معتبر و قدیمی که میلیون ها دنبال کننده دارد در مقایسه با یک صفحه جدید و کم تاثیر، خیلی تاثیرگذارتر است.

153. تعداد لایک های فیسبوک: اگرچه گوگل بسیاری از اکانت های فیسبوک را نمی بیند اما تعداد لایک هایی که یک صفحه در فیسبوک می گیرد را به عنوان نشانه ضعیفی برای رتبه بندی محسوب می کند.

154. به اشتراک گذاری در فیسبوک: به اشتراک گذاری در فیسبوک به دلیل آنکه بیشتر شبیه بکلینک است نسبت به لایک تاثیر بیشتری دارد.

155. اعتبار حساب کاربری کاربران فیسبوک: همانند تویتر لایک ها و به اشتراک گذاشتن هایی که توسط یک صفحه محبوب باشد تاثیرگذارتر است.

156. پین های Pinterest: Pinterest یک اکانت رسانه های اجتماعی محبوب با اطلاعات عمومی زیاد است. گوگل پین های Pinterest را یک سیگنال اجتماعی به حساب می آورد.

157. رای های سایت های به اشتراک گذاری شبکه های اجتماعی: گوگل از به اشتراک گذاری در سایت های Reddit, Stumbleupon, Digg به عنوان یک سیگنال اجتماعی استفاده می کند.

158. تعداد گوگل پلاس: اگرچه اظهار داشتند که گوگل پلاس تاثیر مستقیمی ندارد اما باورش سخت است که آنها شبکه اجتماعی خودشان را رد کنند.

159. اعتبار حساب کاربری کاربران گوگل پلاس: منطقی است که گوگل تاثیر بیشتری به اکانت های معتبر نسبت به اکانت های کم فالور بدهد.

160. اصل شناخته شده: در نتایج جستجو اطلاعاتی که مربوط به پروفایل های آنلاین تایید شده است نسبت به محتواهای بدون تایید رتبه بالاتری خواهد داشت.

161. نشانه های اجتماعی مرتبط بودن: گوگل از اکانتی که محتوا را به اشتراک گذاشته و متنهای اطراف لینک به عنوان اطلاعات مرتبط بودن استفاده می کند.

162. سطح سیگنال های اجتماعی سایت: گسترش نشانه های اجتماعی سایت موجب افزایش اعتبار کلی سایت و در نتیجه دیده شدگی بیشتر در جستجوها می شود. نشانه های برند

163. متن Anchor اسم برند: متن Anchor بسیا ساده است اما یک سیگنال برند بسیار قوی است.

164. جستجوهای برند: خیلی ساده است، افراد برندها را جستجو می کنند. اگر افراد سایت شما را در گوگل جستجو کنند، گوگل به این موضوع در تعیین یک برند توجه می کند.

165. سایت باید صفحه فیسبوک و لایک داشته باشد: برندها باید صفحه فیسبوک با تعداد لایک زیاد داشته باشند.

166. سایت باید پروفایل تویتر با فالورهای زیاد داشته باشد: پروفایل تویتر با فالورهای زیاد نشانه محبوبیت یک برند است.

167. صفحه رسمی لینکدین: اغلب کسب و کارهای واقعی صفحه لینکدین دارند.

168. لیست کارمندان در لینکدین: داشتن پروفایل لینکدینی که نشان دهد این افراد برای کمپانی شما کار می کنند یک نشانه برند بودن است.

169. قانونی بودن اکانت شبکه اجتماعی: یک شبکه اجتماعی با 10000 فالور و 2 تا پست متفاوت است با یک اکانت 10000 فالوری قدرتمند با تعاملات بسیار.

170. اشاره کردن ( Mention ) به برند در سایت های خبری: برندهای واقعا بزرگ در سایت های خبری گوگل همیشه منشن می شوند. حتی برخی از برندها فید خبری گوگل خودشان را دارند.

171. اشاره متقابل: برندها منشن می شوند بدون اینک به آنها لینک داده شود.

172. تعداد مشترکین RSS : با توجه به اینکه گوگل صاحب سرویس محبوب – Feedburner RSS است، از اطلاعات مشترکین RSS به عنوان نشانه برند بودن و محبوبیت استفاده می کند.

173. محل سکونت با فهرست منطقه ای گوگل پلاس: یک کسب و کار واقعی دارای دفتر است. گوگل از اطلاعات محل سکونت برای تشخیص اینکه یک سایت برند است یا خیر استفاده می کند.

174. وبسایت جزو کسب و کارهای پرداخت کننده مالیات است: گوگل نگاه می کند که آیا سایت جزو کسب و کارهای پرداخت کننده مالیات است یا نه.

فاکتورهای On-Page (Web Spam)
 
175. مجازات پاندا: سایت هایی که کیفیت محتوای آن پایین است بعد از مجازات پاندا در جستجو کمتر دیده می شود.

176. لینک به Neighborhoods بد: لینک کردن به سایت های غیرمرتبط به دیده شدگی شما در جستجو آسیب می زند.

177. تغییر مسیر: تغییر مسیر اصلا نباید اتفاق بیفتد. زیرا نتنهاموجب جریمه بلکه باعث ایندکس شدن مجدد هم می شود.

178. پاپ آپ یا تبلیغات پرت کننده حواس: پاپ آپ یا تبلیغات پرت کننده حواس نشان دهنده پایین بودن کیفیت سایت است.

179. بهینه سازی بیش از حد سایت: شامل فاکتور های on-page مانند انباشتن کلمات کلیدی و تگ عنوان و چیدمان افراطی کلمات کلیدی.

180. بهینه سازی بیش از حد صفحه: بسیاری از افراد گزارش کردند که پاندا را دوست ندارند در نتیجه پنگوئن صفحه را به شکل تکی مدنظر قرار داد.

181. تبلیغات بالای فلد ( Fold ) : الگوریتم طرح بندی صفحه سایت هایی را که تبلیغات زیاد و محتوای کم در بالای Fold )حاشیه( دارند را جریمه می کند.

182. پنهان کردن لینک های وابسته: تلاش زیاد برای پنهان کردن لینک های وابسته می تواند منجر به یک جریمه شود.

183. سایت های وابسته: واضح است که گوگل طرفدار سایت های وابسته نیست و سایت هایی که با لینک های وابسته پول در می آورند بیشتر تحت نظر هستند.

184. تولید خودکار محتوا: گوگل طرفدار تولید خودکار محتوا نیست و اگر شک کند که سایت شما محتوای تولید شده کامپیوتری منتشر می کند، این امر منجر به جریمه و ایندکس شدن مجدد می شود.

185. آدرس IP به عنوان اسپم علامت زده شود: اگر آدرس IP سرور اسپم شود ممکن است به کل سایت روی سرور آسیب بزند.

186. اسپم شدن تگ متا: انباشته شدن کلمه کلیدی در تگ متا هم می تواند اتفاق بیفتد. اگر گوگل فکر کند که شما کلمه کلیدی را به تگ متا افزوده اید تا با الگوریتم گوگل بازی کنید ممکن است سایت تان را جریمه کند.

فاکتورهای Off-Page (Web Spam)

187. هجوم غیر طبیعی لینک ها: هجوم ناگهانی لینک ها نشانه مطمئنی از لینک های ساختگی است.

188. مجازات پنگوئن: سایت هایی که مورد مجازات پنگوئن قرار گرفته اند به طور قابل توجهی در جستجو کمتر دیده می شوند.

189. مشخصات لینک با درصد بالای کیفیت پایین: بسیاری از لینک های از منابع، معمولا با استفاده از سئو کلاه سیاه است و نشانه بازی کردن با سیستم است.

190. ارتباط دامنه لینک کننده: سایت هایی که تعداد خیلی غیرعادی زیادی لینک از سایت های غیرمرتبط دارند برای پنگوئن حساسیت برانگیزند.

191. هشدار لینک های غیرطبیعی: گوگل هزاران اخطار Google WebmasterTools و پیام کشف لینک های غیرطبیعی ارسال کرد. این معمولا پیش از افت رتبه اتفاق می افتد)البته نه % 100 مواقع)

192. لینک از C IP کلاس یکسان: گرفتن حجم غیرطبیعی لینک از سایت هایی با IPسرور یکسان می تواند نشانه ساخت لینک شبکه وبلاگ باشد.

193. متن Anchor سمی: داشتن متن Anchor سمی می تواند نشانه اسپم یا سایت هک شده باشد. همچنین می تواند به رتبه سایت هم آسیب برساند.

194. راهنمای مجازات: گوگل راهنمای مجازات هایش را منتشر کرده، مانند مجازات علنی Interflora

195. فروش لینک: فروش لینک قطعا می تواند روی رتبه نوار ابزارتان تاثیر بگذارد و به دیده شدگی تان در جستجو آسیب بزند.

196. Sandbox گوگل : سایت های جدیدی که یکدفعه حجم زیادی از لینک دریافت می کنند گاهی در Sandbox گوگل قرار می گیرند که موجب می شود دیده شدگی آنها در جستجو به طور موقت محدود شود.

 197. رقص گوگل: رقص گوگل به طور موقت رتبه بندی ها را تکان می دهد. این روشی است برای تشخیص اینکه آیا یک سایت سعی دارد با الگوریتم های گوگل بازی کند یا نه.

198. ابزار Disavow : استفاده از ابزار Disavow می تواند باعث حذف جریمه دستی یا الگوریتمی سایت هایی که قربانی سئو منفی بودند، شود.
 
199. درخواست تجدید نظر :درخواست تجدید نظر موفق می تواند باعث برداشته شدن جریمه شود.
 
200. طرح های لینک موقت: گوگل لینک های غیر معتبر و ساخته شده توسط خود افراد را شناسایی و به سرعت حذف می کند.
ارسال شده توسط احمد محمدی | 9 02, 2016 | بازدید‌ها (868)

مایکروسافت قبل از معرفی  Entity Framework   ، تکنولوژیهای ado , rdo  و سرانجام ado.net  را ارایه کرده بود و برای اکثر این تکنولوژیها زمان زیادی گذاشته بود ، هر کدام از اینها در زمان خود یک تکنولوژی نوینی و حرکت عظیمی بود . اما با گسترش مفاهیم شی گرایی و نیاز مبرم برنامه نویسان به ایجاد اشیا از داده ها و جداول بانکهای اطلاعاتی مایکروسافت اقدام به توسعه تکنولوژی  ado.net کرد و ابتدا امکانات linq  و سپس  Entity Framework  را برای تعامل بهتر با شی گرایی مطرح کرد .

تا قبل از آن برنامه نویسان زمان زیادی را برای برنامه نویسی اشیا جدولهای بانکهای اطلاعاتی و ارتباطات آن صرف می کردند و هر گونه تغییر در جداول بانکها مستلزم تغییرات فراوانی در کد نویسی است .

ابتدا فهرستی از ابزارهای مدل سازی را معرفی می کنم :

 

1-ERM 
یا  Entity Relationship Model ابزاری برای مدل سازی پایگاههای داده ای رابطه ای .

2- UML 
یا Unified Modeling Language زبان استاندار ماژول سازی اشیا و کلاسها

3-ORM 
یا  Object-Relational Mappingروشی و ابزاری برای ایجاد تعامل ماژولار میان اشیا بانکهای اطلاعاتی رابطه ای و زبانهای برنامه نویسی شی گرا

4-DFD
یا Data Flow Diagram  ابزاری برای نمایش نموداری از جریان داده ها و فرآیند سیستم

 

البته چند ORM  دیگر هم وجود دارد یکی NHibernate و SPRINT.net هر دوتای آنها از جاوا مشتق شده اند و توانمنیدهای فراوانی دارند اما بحث ما Entity  Framework.Net4       است .

البته لیست بالا لیست کاملی نیست و از حوصله این بحث خارج است .

 

قبل از ورود به بحث Entity Framework  مقدمه ای در مورد Entity Data Model یا مختصرا EDM  باید بیان شود .EDM  در حقیقت پایه و پیش نیاز Entity Framework است و شامل سه model  است

1-
مدل مفهومی 2-مدل منطقی 3-مدل ذخیره سازی یا فیزیکی

ما می توانیم بگوییم که EDM  یک نسخه تکامل یافته ERM  است .ما در مدل EDM  در مورد ساختار شی گرای business objects داده ها بحث می کنیم در حالی که در مدل ERM  ما در مورد طرح بانک اطلاعاتی بحث می کنیم .که باید تفاوت میان مدل داده و مدل شی را متوجه شویم ، شکل زیر یک مدل داده را نشان می دهد در حالی که شکل بعدی مدل شی گرا از بانک اطلاعاتی ما را نشان می دهد.







Entity 
چیست ؟

ما برای فهم Entity Framework  باید ابتدا مفهوم Entity  را متوجه شویم ، البته بعدا در مورد این مفصلا خواهم نوشت ولی فعلا برای فهم بیشتر مقایسه ای با object  و relational data  انجام می دهم

تشابه Entity  با شی یا object

1-   Entity
مانند شی دارای انواع تعریف شده برای داده ها و فیلدها است

2-  Entity 
مانند شی دارای خصوصیت یا properties است

3-   
هر    Entity  یک هویت متمایزی دارد

4-   
یک خصوصیت   Entity  می تواند ارجاعی به Entity  دیگر باشد

 

تفاوت Entity  با شی یا object

1 -Entity 
می تواند یک فیلد اصلی یا primary keys داشته باشد

2-Entity 
می تواند دارای ارتباطی با Entity  دیگر باشدمانند ارتباطات موجود در بانک اطلاعاتی

 

تشابه Entity  با داده رابطه ای relational data

1-Entity 
یک ارتباط چند گانه مانند داده ها با دیگر entity  می تواند داشته باشد

2-Entity   
مانند داده ها می تواند کلید اصلی یا primary key داشته باشد

 

تفاوت Entity  با داده رابطه ای relational data

1-Entity 
از داده ها با نوع پیچیده  complex typesپشتیبانی می کند

2-Entity 
از وراثت موجود در کلاسها پشتیبانی می کند

3-Entity 
داده های فیزیکی را ذخیره نمی کند .

 

پس Entity  Framework   چیست ؟

درواقع Entity Framework   تکنولوژی توسعه یافته ADO.Net  است که فاصله بین برنامه نویسی شی گرایی و بانک اطلاعاتی رابطه ای را پر می کند .این فاصله معمولا تحت عنوان عدم تطابق شناخته می شود. و یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Database به مفاهیم Object Oriented در برنامه نویسی است. در واقع می‌توان گفت که کلا‌س ها را به Table ها map می‌کند. وقتی که شما می‌خواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر‌ روی اشیاء ( Object تان ) انجام می‌دهید. Entity  Framework مدل داده ها را به سه بخش تقسیم می کند 1-مدل مفهومی یا ادراکی 2-مدل منطقی 3- مدل فیزیکی

 

در نسخه های قبلی Entity Framework ما فقط می توانستیم برای بانک اطلاعاتی موجود از قبل یک مدل طراحی کنیم .که ما می توانستیم برای آن یک مدل مفهومی ایجاد کنیم .درواقع ما از بانک اطلاعاتی به مدل می رسیدیم ، اما حالا می خواهیم برعکس از مدل به بانک اطلاعاتی برسیم .

از مهمترین امکانات اضافه شده به Entity Framework 4 بصورت 2 مورد زیر است :

1-Model-first : به شما اجازه می دهد که ابتدا یک empty model ایجاد کنید ، و ابتدا model خودتان را تعریف کنید و سپس بانک اطلاعاتی و mapping و کلاسها را  بر اساس model تعریف شده ایجاد کنید .

2-Code-only: به شما اجازه می دهد که برای استفاده از Entity Framework  با استفاده از Plain Old CLR Objects یا مختصرا

POCO  درواقع Entity  خود را بدون استفاده از فایل EDMX ایجاد کنید .

اکنون برای یادگیری ابتدایی سعی می کنم ابتدا بر اساس اینکه بانک اطلاعاتی موجود است یک مدل طراحی می کنیم و بعدا با مدلی سرو کار خواهیم داشت که بر عکس یعنی اول مدل بعد بانک اطلاعاتی

آموزش حالت database-first approach

ما در اینجا با بانک اطلاعاتی northwind آموزش را ارایه می دهم با sql-server 2008 R2  و Visual Studio 2010  و دانت نت 4

شما می توانید از لینک زیر بانک اطلاعاتی را دانلود کنید .

خوب اکنون پس از نصب بانک اطلاعاتی سراغ vs  برویم و یک پروژه Windows Forms Application ایجاد می کنیم مطمن باشید که  .Net Framework 4  انتخاب شده باشد.

اکنون در پروژه ، سراغ منوی Project   بروید و گزینه  Add New Item را انتخاب کنید  مانند شکل زیر
Entity_Framework3 - Entity Framework 4  part 1 - متا

در شکل بالا دقت کنید که از قسمت سمت راست گزینه data  را انتخاب کنید و سپس گزینه ADO.NET Entity Data Model

را انتخاب کنید .با انتخاب این گزینه و وارد کردن نام مناسب ( در اینجا ما همان نام Model1.edmx را بصورت پیش فرض قبول می کنیم ) و دکمه Add را می زنیم .پس از آن وارد ویزارد Entity Data Model Wizard می شویم در این ویزارد ما گزینه

    Generates from database را انتخاب می کنیم و به مرحله بعدی می رویم .در این صفحه مطابق شکل زیر :
Entity_Framework4 - Entity Framework 4  part 1 - متا

ما ابتدا باید مقدار connections را مشخص کنیم پس بر روی دکمه New Connection  کلیک کنید تا وارد صفحه Connection Properties بشوید در این صفحه ابتدا از قسمت نام سرور server name  نام سرور بانک اطلاعاتی را انتخاب کنید و برحسب تنظیمات دستگاه شما از لیست بانکهای اطلاعاتی نام بانکnorthwind  را انتخاب کنید .صفحه ویزارد شما مشابه شکل زیر خواهد شد .در این صفحه تیک مقابل جمله save entity connection ….. باعث می شود که رشته اتصال به بانک اطلاعاتی با همان نام مشخص شده در زیر آن در فایلی تحت عنوان App.config  ذخیره شود .اکنون به مرحله بعد می رویم مطابق شکل زیر

Entity_Framework5 - Entity Framework 4  part 1 - متا

خوب اکنون در صفحه بالا جدولهای و view  ها و stored Procedure های بانک اطلاعاتی شما لیست می شوند.

در اینجا ما جدول Category  و جدول products را انتخاب می کنیم و از قسمت view ها Products by Category را انتخاب می کنیم همچنین از stored procedure هم SalesByCategory را انتخاب می کنیم . و سپس دکمه finish  را کلیک می کنیم .

نکته : حتما قبل از زدن دکمه finish دو تیک Pluralize  و include foreign…  را دیدید

Pluralize or singularize از مهمترین بهبودها در نسخه 4 EF است .در نسخه های قبلی EF  خاصیت

Entity Set Name and Entity Name properties  با یک نام بودند که این مساله باعث گیجی برنامه نویس می شد که خوشبختانه در این نسخه 4 امکان تفکیک براحتی فراهم شده است مثلا برای

category به شکل زیر دفت کنید

Entity_Framework6 - Entity Framework 4  part 1 - متا

و در نهایت شما فایل module1.edmx  را باز کنید که مطابق شکل زیر نمای جداول بانک اطلاعاتی رادر فضای ماژولار EDM نمایش می دهد ،

Entity_Framework7 - Entity Framework 4  part 1 - متا
Model-First Approach
در مطالب قبلی در مورد Entity  و نحوه استفاده از ویزارد برای تولید کلاس در صورت وجود بانک صحبت کردم ، اما امروز می خواهم در مورد حالتی صحبت کنم که ما مدل کلاسها را ترسیم می کنیم و از این مدل می خواهیم بانک اطلاعاتی را ایجاد کنیم ، این ویژگی از جالبترین و مهمترین ویژگیهای اضافه شده در EF4 است که مایکروسافت آن را اضافه کرده است .

مانند مقاله بخش 2 ، یک پروژه تحت ویندوز باز کنید ،از منوی Project  کزینه Add New Item  و سپس گزینه ADO.NET Entity Data Model را انتخاب کنید اما از پنجره ظاهر شده در زیر گزینه empty model را انتخاب کنید
Entity_Framework8 - Entity Framework 4  part 1 - متا

ماژول خالی برای شما ایجاد می شود ، اکنون جعبه ابزار   را باز کنید و ابزار زیر را مشاهده کنید .Entity_Framework9 - Entity Framework 4  part 1 - متا

ابزارهایی را مشاهده می کنید که مختصرا آنها را توضیح می دهم.

Entity  : به شما اجازه می دهد که یک  Entity  را ایجاد و طراحی کنید

Association : برای تعریف و ایجاد روابط میان دو عنصر Entity

Inheritance  : برای ایجاد رابطه وراثت بین عناصر و کلاسهای Entity

 زیاد نگران نباشید در ادامه مفصلا در مورد سه عنصر بالا توضیح خواهم داد. فعلا هدف آشنایی کلی با مفاهیم است .پس اکنون دست به کار می شویم و اولین entity  را با استفاده از جعبه ابزار ایجاد می کنیم .یک Entity  را از جعبه ابزار انتخاب کنید و آن را با کشیدن و رها کردن بر روی صفحه خالی ماژول بیاورید .

Entity_Framework10 - Entity Framework 4  part 1 - متا

اکنون به اولین Entity  ایجاد شده دقت کنید .

. یک properties  دارد با نام Id است علاوه بر آن این خصوصیت یک primary Key  برای این Entity  ایجاد شده است .شما می توانید با انتخاب آن از شکل خصوصیات و پارامترهای آن را عوض کنید .پس از تنظیم پارامترهای دلخواه ، شما می توانید بر حسب نیازتون عناصر دیگری  به Entity   اضافه کنید . برای اینکار کافیست برروی Entity کلیک راست کنید و گزینه Add  را انتخاب کنید .

Entity_Framework11 - Entity Framework 4  part 1 - متا

اگر دقت کنید با دو گزینه scalar property , complex property  مواجه می شویم ، شما نگران نباشید از بخش بعدی یعنی بخش چهارم وارد جزییات خواهیم شد و موارد را به تفصیل شرح خواهم داد .

اکنون شما گزینه scalar property  را انتخاب کنید نام آن را  CustomerFirstName قرار دهید و نوع آن یعنی Type  را از نوع کارکتری یعنی  string  انتخاب کنید و بقیه را مطابق شکل زیر


Entity_Framework12 - Entity Framework 4  part 1 - متا

و سپس خصوصیات دیگری را مطابق لیست زیر با نوعهای مشخص شده مانند حالت بالا اضافه کنید

 CustomerLastName (String)

 CustomerAddress (String)

 CustomerCity (String)

 CustomerState (String)

 CustomerZipCode (String)

 CustomerPhone (String)

 ModifyDateTime (DateTime)

سپس یک Entity دیگر ایجاد کنید و عناصر زیر را به آن اضافه کنید

OrderID (int32)

 CustomerID (int32)

 ItemID (int32)

 ModifyDateTime (DateTime)

اکنون ما 2 Entity  داریم ، حالا می خواهیم یک ارتباط بین این 2 برقرار کنیم برای اینکار  از جعبه ابزار Associtation  را انتخاب کنید و سپس از Entity1  فیلد Id  را انتخاب کنید و از Entity2   فیلد customerId  را انتخاب کنید رابطه شما بین این دو فیلد مانند شکل زیر خواهد شد .


Entity_Framework13 - Entity Framework 4  part 1 - متا

اکنون نوبت ایجاد بانک اطلاعاتی از مدول و کلاسهای بالا است . اکنون بر روی فضای خالی از صفحه مازول کلیک راست بزنید و گزینه Generate Database From Model  را انتخاب کنید صفحه زیر نمایش داده می شود .


Entity_Framework14 - Entity Framework 4  part 1 - متا

در اینجا شما باید بانک اطلاعاتی و رشته اتصال را مشخص کنید .دکمه next  را بزنید و به مرحله بعد بروید صفحه ای برای شما نمایش داده می شود که مجموعه دستورات DDl را برای ایجاد این جدولها در بانک اطلاعاتی را بصورت فایلی ذخیره می کند .

Entity_Framework15 - Entity Framework 4  part 1 - متا

دکمه Finish  را کلیک کنید تا فایل مورد نظر شما ایجاد شود که حاوی کدهایی برای ایجاد بانک اطلاعاتی است .یک فایلی با فرمت .sql  خواهد بود ، همانطور که در شکل بالا می بینید .اکنون برای اجرای اسکریپت بالا در فضای خالی از کد اسکریپت کلیک راست کرده و گزینه Execute Sql  را مطابق شکل زیر انتخاب کنید ، اسکریپت شما در بانک اطلاعاتی مشخص شده ایجاد خواهد شد

Entity_Framework16 - Entity Framework 4  part 1 - متا


نگاهی عمیق تر به Entity Data model

ابتدا از محیط کاری و پنجره های طراحی EDM  صحبت می کنیم . در کار با EDM  4 پنجره از محیط طراحی برای شما بسیار مفید است

1-Designer surface : سطح بصری طراحی می باشد که شما می توانید به کمک آن ساختار و مدل EDM  را ایجاد و یا تغییر دهید.

2-Mapping Detail windows  : پنجره ای برای map  کردن و تغییر در این پنجره شما یک ساختار فیزیکی از عناصر Entity را مشاهده می کنید

3-Toolbox  : جعبه ابزار که برای همه مشخص است و در مقاله قبل با آن بیشتر آشنا شدیم

4-Model Browser Window  : این پنجره ساختاری درختی از مدل مفهومی و منطقی مدل نمایش می دهد .
در شکل زیر این چهار پنجره به تفکیک نمایش داده شده است .


Entity_Framework17 - Entity Framework 4  part 1 - متا

Entities

برای فهم بهتر entity  باید با چند مفهوم آشنا شویم

Entity Type  : نشان دهنده نوع خاصی از داده ها است مثلا داده ای از نوع سطرهای جدول کارمند Emplyee ، در واقع می توان گفت رکوردهای جدول را نشان می دهند..

Entity Set : یک در برگیرنده یا مجموعه ای از Entity  های واحد .بنابر این Entity  ها را می توان بصورت Entity Set  گروه بندی کرد .در هر Entity set  ما می توانیم چند Entity type  داشته باشیم و هر گروه Entity Set نیز می تواند با یک Entity Set دیگر در ارتباط باشد .
فرض کنیدما 3 نوع Entity Type  به نامهای Salesperson ,SalesOrderHeader,SalesOrderDetail  داریم و دو تا Entity Set داریم که به صورت شکل زیر هستند


Entity_Framework18 - Entity Framework 4  part 1 - متا

دراینجا Entity Set  اول شامل دوتا Entity Type  است .

Scalar Properties  : اگر مقاله های قبلی را مطالعه کرده باشید متوجه شدید که هر Entity Type  دارای مجموعه ای از خصوصیات (Properties  ) می باشد که یکی از آنها Scalar Properties  است . اگر بخواهیم آن را به زبان ساده بیان کنیم باید بگویم که این آیتم در واقع خصوصیتهایی را تعریف می کند که مقادیر رایج متغیرها یعنی عدد ، رشته ، کارکتر و تاریخ و غیره را می پذیرد .به تعبیری دیگر همان فیلدها بانک اطلاعاتی هستند که هر کدام دارای نوع هستند اگر شما یک Entity Type  از مثالهای قبل ایجاد کرده باشید کافیست یکی از خصوصیات را انتخاب کنید و به پنجره Properties  دقت کنید


Entity_Framework19 - Entity Framework 4  part 1 - متا


می بینید هر کدام از فیلدها یا همان خصوصیتهای Entity  ما دارای ویژگیهایی است مانند زیر

 Name  : نام خصوصیت مورد نظر را نمایش می دهد که می توان آن را تغییر داد

Nullable : آیا فیلد مشخص شده مقدار Null  را می پذیرید

Setter : همان خاصیت Set  در تعریف خصوصیات کلاسها که ما در اینجا سطح دسترسی آن را تعریف می کنیم

Getter : همان خاصیت Get  در تعریف خصوصیت فیلد کلاسها که ما در اینجا سطح دسترسی آن را تعریف می کنیم

StoredGenerationPattern : معادل Auto –generated  در بانکهای اطلاعاتی یعنی مقادیر یک فیلد اتوماتیک اضافه می شوند

Type : نوع فید

Default Value: مقدار پیش فرض

Complex Types

حتما تا کنون با ساختارها (structure) سروکار داشته اید . ما ساختاری  تعریف می کردیم که می توانست مجموعه ای از داده های متفاوت را با هم در یک متغیر ساختاری جمع آوری می کرد . مفهموم Complex Types  چیزی شبیه به همان مغیرهای ساختاری است . در وواقع یک متغیر مرکب است .مثلا اگر بخواهید آدرس فردی را با ساختار تلفن – آدرس منزل_ایمیل _شماره موبایل ، ذخیره کنید .باید از یک متغیر مرکب یا همان complex  استفاده کرد . اکنون با مثال نحوه تعریف آن را نشان می دهم .ما در بخش قبل گفتیم که یک Entity  می تواند شامل خصوصیاتی باشد که از نوع متغیرهای متعارف باشد مثلا عددی یا کارکتری و غیره ، اما اگر بخواهیم خصوصیتی پیچیده تر و با نوع مرکب داشته باشیم ، مثلا یک خصوصیت داشته باشیم که از نوع ساختاری یا یک نوع مرکب و پیچیده ، چکار بایدکرد . جواب همان Complex Types

شما باید ابتدا یک آیتم و متغیر از نوع Complex Types  تعریف کنید و پس از آن در Entity  مورد نظرتان یک خصوصیت از نوع Complex Property تعریف کنید که این خصوصیت مرکب بعدا از نوع Complex Types خواهد بود.

فرض کنید پروژه ای که قبلا ایجاد کرده ایم را باز کرده ایم ، به پنجره Model Browser  دقت کنید
Entity_Framework20 - Entity Framework 4  part 1 - متا

همانور که می بینید گزینه Complex Types  را مشاهده می کنید . برای ایجاد آن بر روی Complex Types  کلیک راست کرده و گزینه Create Complex Types را انتخاب کنید .یک آیتم Complex Types  ایجاد می شودنام آن را AddressInfo  می نامیم اکنون بر روی همان آیتم مجددا کلیک راست کنید و گزینه Add  را انتخاب کنید و سپس گزینه Scalar Property را انتخاب کنید .لیستی از انواع برای شما باز می شود


Entity_Framework21 - Entity Framework 4  part 1 - متا

فرض کنید می خواهیم آیتمی تعریف کنیم که آدرس را بصورت شماره تلفن و آدرس ذخیره کند پس 2 قسمت داریم یکی Phone , و دیگری Address است فرض کنیم اولی از نوع عددی و دومی کارکتری پس اولی را بصورت زیر تعریف کنید

Add  ----à Scalar Property --à Int32

و سپس نام آن را phone  وارد کنید برای دومی هم به همان ترتیب با این تفاوت که نوع آن String  است .

Entity_Framework22 - Entity Framework 4  part 1 - متا


اکنون ما یک آیتم complex Types  تعریف کردیم اما ما مشخص نکردیم که این آیتم باید به کدام Entity  ارتباط داشته باشد برای اینکار بر روی یکی از Entity  های مدل فرضا Entity2  کلیک راست کرده و گزینه Complex Types  را انتخاب می کنیم مانند شکل زیر خواهد شد

Entity_Framework23 - Entity Framework 4  part 1 - متا

اکنون به پنجره

propertie مرتبط به این Complexproperty بروید و از قسمت Type  مربوطه آیتم AddressInfo را انتخاب کنید در حقیقت ما اینجا خصوصیتی تعریف کردیم از نوع AddressInfo  که در واقع یک نوع مرکب جدید تعریف شده توسط کاربر است .

وقتی شما به مدل نگاه می کنید تنها نمایی جزیی از کار را می بینید ، اکنون شما باید بدانید که در پشت پرده مدل شما چه فایلها و کدهایی ایجاد شده است .برای این کار مطابق مثالهای قبل یک پروژه جدید ایجاد کنید و از بانک اطلاعاتی Northwind  یک مدل از جداول categories  و  products ایجاد می کنیم . مطابق شکل زیر

Entity_Framework25 - Entity Framework 4  part 1 - متا

خوب اگر خاطرتان باشد گفتیم که هر مدل که ایجاد می کنیم محتویات آن در یک فایل .edmx  است .ما اکنون می خواهیم ساختار دقیقتر و جزیی تری از این فایل را بدانیم برای اینکار بر روی فایل مدل خود فرضا فایل Model1.edmx  کلیک راست کنید و از گزینه های باز شده گزینه open with  را انتخاب کنید از پنجره زیر گزینه xml Editor  را انتخاب کنید .

Entity_Framework26 - Entity Framework 4  part 1 - متا

دکمه ok  را کلیک کنید . فایلی در ساختار XML  برای شما باز می شود.

Entity_Framework27 - Entity Framework 4  part 1 - متا

در واقع ساختار بالا یک ساختار فراداده metadata از فایل model1.edmx است . فایل و ساختار Metadata  معمولا یک ساختار معنایی ، تشریح کننده محتوا ، محل نگه داری ، خصوصیات فیزیکی ، نوع و شکل منبع است . در واقع ما اینجا هم چنین فایلی برای مدل داریم .فایل .edmx دارای سه بخش Metadata  است .

1-Store schema definition language  مخفف آن ssdl  : معمولا ما به آن مدل فیزیکی و ذخیره ای از داده های مدل می گوییم

2-Conceptual Schema definition language   مخفف آن csdl  : معمولا ما با آن مدل مفهومی یا ادراکی مدل می گوییم

3-Mapping specification language   مخفف آن MSL  : معمولا مدل Map از ساختار مدل و داده ها است .

اکنون اگر به تصویر بالا دقت کنید تمام عناصر ذکر شده را به ترتیب دربخشهای SSDl content  و CSDL content  و Mapping content  مشاهده می کنید .

 

1-SSDL    مدل فیزیکی :ما  در اینجا ساختار ذخیره ای و فیزیکی مدل را با فرمت Xml  داریم . اگر به این فرمت دقت کنید مهمترین عناصر آن به ترتیب زیر هستند :

1-1-Schema  : اگر دقت کنید در سطر اول ظاهر می شود از فیلدهای اجباری است که مهمترین عنصر آن NameSpace  است که اجباری است و باید باشد و باید به فضای نام Entity  ما اشاره کند .در واقع مفهومی شبیه به همان مفهوم فضای نام Name Space  در کلاسها و کد نویسی دارد.


2-1- EntityType : نشان دهنده اشیا Object  موجود در مدل است . نام هرEntity Type  در آن فضای نام باید منحصر به فرد باشد و تکرار مجاز نیست هر کدام از EntityType  ها نشان دهنده مدلی از جدول در بانک اطلاعاتی است مثلا در این مثال products  نمایش دهنده مجموعه رکوردهای جدول product  از بانک اطلاعاتی است .


property-3-1 : هر کدام از EntitType  های مدل ما یکسری عناصر دارند ، که این عناصر دارای نام و نوع و طول و مقدار کارکتر یا محدوه عددی و مقیاس و تهی پذیر یا خیر می باشد .در واقع اگر بخواهیم تشبیه کنیم ، می توان گفت ما در اینجا با فیلدهای جدول سرو کار داریم .

4-1 - key :

1-4-1  PropertyRef : ما در اینجا فیلدی را مشخص می کنیم که کلید اصلی جدول داده ها یا مدل داده های ما است مثلا اگر در بانک اطلاعاتی Product  فیلد اصلی ProductId  باشد پس مقدار این آیتم هم productId خواهد بود.


Association  -6-1

-1-6-1    End : همانطور که می دانید بانک اطلاعاتی از ارتباطات بین عناصر برخوردار هستند ارتباطاتی مانند ارتباط یک به یک و یک به چند یا چند به چند و.. در آمزشهای قبلی ذکر کردم که عناصر مدل می توانند مانند بانکهای اطلاعاتی باهم ارتباط داشته باشند که از طریق این خصوصیت امکان پذیر است

Associationset  نشان دهنده ارتباط و نام و مشخصات آن و گره End   نشان دهنده راسهای ارتباط بین عناصر است.

referential constraint   : این قسمت در واقع نشان دهنده قیدهای ارتباط است ما می دانیم در هر ارتباط بین عناصر 2 جدول یک کلید اصلی است و کلید دیگر باید کلید خارجی یا ثانویه باشد .


                  principal : نشان دهنده منشا و کلید اصلی ارتباط

                 Dependent      : نشان دهنده کلید ثانویه یک ارتباط بین عناصر است .

 

8-1- EntityContainer     : به طور کلی در این قسمت ما دو گره Entityset  و Associatioset را داریم .و درواقع ساختاری کلی از منبع داده را برای ما نمایش می دهد


9-1-   EntitySet   : گروهی از EntityType  های منبع داده را نمایش می دهد.


10-1- Associationset  : مجموعه و ساختار کلی ارتباطات را نمایش می دهد

 

بطور کلی بحث در مورد ساختار SSDL بسیار مفصل است اما در این مطلب مختصری برای آشنایی   بیان کردم .

2-CSDL مدل مفهومی یا ادراکی : ما در اینجا می توانیم ادعا کنیم که با یک الگو و ساختاری نمونه برای مدل داده ها سرو کار داریم . ساختار آن بسیار شبیه به ساختار SSDl  است . البته با تغییراتی بیشتر .

تفاوت این دو قسمت بالا زمانی نمایان می شود که ما حالت مدل را انتخاب کنیم ، یعنی اگر ما از بانک اطلاعاتی، مدل را بسازیم در این حالت ما SSDL  را خواهیم داشت . اما اگر یادتان باشد ما حالتی داشتیم که اول مدل را طراحی می کردیم و سپس بر اساس مدل بانک اطلاعاتی را می ساختیم در این حالت ما  فقط محتویات مفهومی و معنایی مدل  CSDL  را خواهیم داشت.


3-MSL  : در واقع حلقه وصل بین SSDL  و CSDL است . به شکل زیر دقت کنید :


Entity_Framework28 - Entity Framework 4  part 1 - متا


    در شکل بالا می بینید که چگونه عمل Map  انجام می شود . مهمترین عناصر  MSL  به شرح زیر است :

1-Mapping  : عنصر ریشه ای می باشد که در برگیرنده تمام آیتمهای MSL  است .

2-EntiyContainerMapping  : در این قسمت نام هر Entitycontainer  موجود در دو بخش SSDL  و CSDL  را شامل می شود در واقع ظرفی ایجاد می کند برای ایجاد ارتباط بین   SSDL EntityContainer  و بخش

CSDL Entitycontainer

3-EntitySetMapping : این بخش نیز ارتباطی ایجاد می کند بین هر بخش Entityset موجود در SSDL  و CSDl

4-   ٍEntityTypeMapping  :  این بخش نیز ارتباطی ایجاد می کند بین EntityType های دو بخش SSDL و CSDL

بحث در مورد SSDL  و CSDL  و MSL  بسیار مفصل است ، تا اینجا بحث را در این بخش خاتمه می دهم اما در این مقاله فهمیدیم که وقتی یک مدل از بانک اطلاعاتی ایجاد می کنیم در پشت صحنه ایجاد یک فایل Metadata  چگونه اطلاعات ساختار بندی می شود.

Normal 0 false false false EN-US X-NONE FA MicrosoftInternetExplorer4

اکنون نوبت به نوشتن دستورات است و چگونه با داده های بوسیله مدلها در تعامل باشیم ، بازیابی اطلاعات و حذف و تغییر چگونه خواهد بود . ما تا قبل از آمدن مفاهیم ORM  ها و غیره برای انجام کویری برروی داده ها مستقیما با بانکهای اطلاعاتی سرو کار داشتیم در واقع با دستورات T-SQL  سرو کار داشتیم . اما از اینجا به بعد با دستورات LINQ to Entities  و Entity Sql  سروکار خواهیم داشت .این دستورات با EDM  سروکار دارند . اما لازم دانستم قبل از وارد شدن به این مبحث ابتدا در مورد Logical Query Processing  در  sql server کمی صحبت کنم . حتما تا حالا با انواع و اقسام دستورات پرس و جو با بانکهای اطلاعاتی سرو کار داشته اید ، آیا تا حالا از خود پرسیده اید که فرایند و تسلسل این دستورات چگونه است ، کلا در یک عبارت پرس و جو از چند جدول بانک اطلاعاتی ابتدا کدام دستور اجرا می شود .

ما می دانیم که هر عبارت پرس و جو دارای عناصر زیر است .

From ,select,where,on , join,group by , having ,order by,top , 
است . ترتیب اجرای آنها در یک عبارت جستجو بصورت زیر است .

 

نقل قول

1. FROM
2. ON
3. OUTER
4. WHERE
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10 ORDER BY
11. TOP


1-
عبارت from  در واقع اول از همه اجرا می شود به این دلیل که ابتدا باید جدوال منبع جستجوی ما مشخص شوند

2-
عبارت on ,outer ,…. در واقع عبارتهای الحاقی ، همان عبارتهایی که بعد از مشخص شدن جدولهای مورد نظر ، حالا باید مشخص شود که ترکیب این جدولهای چگونه است .

 

3-
از میان ترکیب چند جدول حالا بر اساس عبارت where  مجموعه ای از داده ها انتخاب می شوند

 

4-
در ادامه از میان این داده های انتخاب شده ، داده ها بر اساس فیلدهایی گروه بندی می شوند.

 

5-
وباز در ادامه از میان گروهها ممکن است مجموعه ای از عناصر بر اساس دستور having  فی_لتر شوند

 

6-select 
اینجا با این دستور در واقع داده ها برای نمایش و نتیجه برگزیده می شوند .

 

7-
از میان داده ها برگزیده شده ممکن است سورت خاصی مد نظر شما باشد که با استفاده از order by  عمل سورت برای شما انجام می شود

 

  Querying with the Entity Framework
قبل از آنکه در مورد کویری با مدل بحث کنیم بد نیست بدانیم که کویری های ما با کلاس مدل سروکار دارند لذا نیم نگاهی به کلاس سازنده مدل می اندازیم.

اگر کلاس مدل را باز کنید متوجه دو بخش عمده Context , entity  می شوید . در واقع کلاس اصلی سازنده مدل ما از کلاس objectcontext  ارث بری می کند .در شکل زیر نموداری کلی از کلاس را نشان می دهد .
Entity_Framework30 - Entity Framework 4  part 1 - متا

به طور خلاصه می توان گفت که هر کلاس مدل دارای ساختار مشابه شکل فوق است . ما وقتی مدل خود را ایجاد می کنیم ، کلاس تشکیل شده بصورت عمده دارای دو object  است . 1- شی object context  و 2- شی Entity Type

ما در اجرای کویری عمدتا با این دو شی سر و کار خواهیم داشت .

 

Object Context   : اصلی ترین و مهمترین کلاسی که ما از آن استفاده می کنیم ، با ایجاد مشتقی از این کلاس ما کلاسی خواهیم داشت که رشته اتصال به بانک اطلاعاتی و سازنده های کلاس و حالت کلاس برای انجام اعمال تغییر و حذف و ثبت استفاده می شود .

 

Entity Type  : قسمت مهم دیگر است که از کلاس Entityobject  مشتق می شوند .از مهمترین کارهایی که این کلاس برای ما ارایه می دهد تعریف عناصر موجودیت و خصوصیتهای آنها و ارتباطات بین عناصر موجودیت و ...

 

اکنون که بطور خلاصه با دو کلاس آشنا شدیم ، چگونه می توانیم کویری برای مدل ایجاد کنیم ، کلا برای نوشتن کویری بر یک مدل ما سه نوع روش کویری داریم .

 

1-LINQ to Entities  : در این روش ما از دستورات زبان LINQ  استفاده می کنیم .

 

2-Entity Sql  : یک زبانی که با اشیا سرو کار دارد و به شما امکان می دهد که کویری خود را ب روی اشیا بدون نیاز به زبان  Tsql  انجام دهید .

 

3-Querying with Method  : متدهایی از شی objectquery  هستند که به شما اجازه می دهند با ترکیبی از عبارتهای لامبدا  Lambdas   کویری خود را بنویسید .

شاید این پرسش برای خیلی ها مطرح شود که چرا برای نوشتن کوئری باید از چند روش استفاده کرد و کلا چرا این روشها معرفی شده است و تفاوت بین این روشها چیست ؟

من ترجیح دادم قبل از وارد شدن به مبحث کوئری کمی در مورد ساختار و نحوه انجام کوئریها صحبت کنم .

با توجه به پیشینه زبان  لازم دانستم مفاهیمی دیگر را نیز بیان کنم .

شاید این پرسش برای خیلی ها مطرح شود که چرا برای نوشتن کوئری باید از چند روش استفاده کرد و کلا چرا این روشها معرفی شده است و تفاوت بین این روشها چیست ؟

من ترجیح دادم قبل از وارد شدن به مبحث کوئری کمی در مورد ساختار و نحوه انجام کوئریها صحبت کنم .

با توجه به پیشینه زبان LINQ  برای مایرکروسافت ;  می توان نتیجه گرفت که هدف اصلی از ارایه LINQ TO Entities   در واقع توسعه ای برای این زبان است و امکانی برای برنامه نویسانی است که با این زبان سر و کار دارند.علاوه بر این استفاده از LINQ  مقادیر برگشتی کوئری بصورت جدولها و ردیف و ستون نیست .بلکه بصورت object  است .محدودیت زبان LINQ  در این است که فقط در زبانهای سی شارپ و vb.net  پشتیبانی می شود و برای سایر زبانهای دات نت قابل استفاده نیست . علاوه بر این به هنگام کامپایل باید به زبان متدی Query method  تبدیل شود تا برای CLR  قابل فهم باشد .

زبان Entity SQL  : این زبان بسیار شبیه به زبان T_SQL  است . با این تفاوت که این زبان می تواند با کلاسها و اشیا سروکار داشته باشد و به تبع آن از وراثت و ارتباطات بین کلاسها به خوبی پشتیبانی می کند. . در واقع ما به کمک Entity SQL  می توانیم همه به صورت شی گرا و هم بصورت داده ها رکوردی سطر و ستون ;  با بانک اطلاعاتی سروکار داشته باشیم .و این مهمترین دلیل برتری Entity Sql  بر زبان LINQ to Entity است .

 

در نهایت زبان Query Method  لایه ای پایینتر است ، چرا که فقط می تواند با با زبانهای بالا ترکیب شود و کویریهای بسیار قدرتمندتری را تولید کند . از مهمترین خصوصیت این روش خلاصه نویسی و استفاده از عبارتهای لامبدا است . .

اکنون به شکل زیر دقت کنید تا متوجه شوید که   وLINQ to Entities Entity Sql  چگونه با داده ها تعامل می کنند
IC314061 - Entity Framework 4  part 1 - متا

همانطور که در شکل بالا می بینید . اگر بخواهیم با داده ها بصورت شی یا object  سر و کار داشته باشیم . با استفاده از زبان LINQ to Entities   و Entity SQL  ما می توانیم با شی object service  در تعامل باشیم . در این تعامل ما کاملا با کلاسها از جمله کلاس objectcontext  و کلاسها داده  data class  سر و کار داریم .

حال اگر به شکل بالا دقت کنید می بینید که  LINQ to Entites برای انجام کویری چه فرایندی را طی می کند . علاوه بر این   نمی تواند مستقیما به لایه EntityClientLINQ to Entites  دسترسی داشته باشد در حالی که  Entity SQL می تواند مستقیما با لایه  EntityClient دسترسی داشته باشید و داده ها را بصورت رکوردی و ستون و ردیف داشته باشد


EntityClient  چیست ؟ همانطور که در شکل بالا و در شکل پایین می بینید ، این لایه بسیار شبیه به لایه های Sqlclient ,OracleClient ,…. است. این لایه مدیریت رشته اتصال و command ها و غیره را کنترل و پردازش می کند .سرو کار کوئری در این لایه با داده ها بصورت شی و Object  نیست بلکه بصورت داده های ستونی و ردیفی است ، علاوه بر این این لایه با EDM  در ارتباط مستقیم است .

ArticleImage - Entity Framework 4  part 1 - متا

امیدوارم توانسته باشم فرق و ساختار کویریها را به خوبی بیان کنم

Entity SQL  part 1
در بخش قبل در مورد LINQ to Entities  صحبت کردیم . همچنین در بخشهای قبلی اگر خاطرتان باشد گفتم که Entity SQL  هم می تواند از طریق ObjectService  و هم مستقیما می تواند از طریق EntityClient  با بانک اطلاعاتی ارتباط برقرار کند . علاوه بر اینها ذکر کردیم که به دستورات T_SQL  شبیه است . بنابراین باید مطالب را در 3 بخش توضیح دهم . بخش اول در مورد شباهتها و تفاوتهای Entity SQL  و بخش دوم در مورد تعامل Entity SQL  با ObjectService    و بخش سوم در مورد تعامل Entity SQL  با EntityClient  خواهد بود .

 

بخش اول : تفاوتهای Entity SQL  با دستورات T-SQL

 

1-وراثت و ارتباطات

همانطور که می دانید در مدل ما به دلیل وجود کلاسها .، از مفهوم وراثت و ارتباط بین عناصر پشتیبانی می کند در حالی که T-SQL  فقط از ارتباطات بین عناصر پشتیبانی می کند . علاوه بر این Entity SQL  در واقع با مدل مفهومی Conceptual entity  سرو کار دارد .

 

2-Collections

Entity SQL  همانند یک کلکسیونی از اشیا رفتار می کند در واقع داده های حاصل از آن براحتی در مجموعه Collection  ها قابل جایگزاری است .

 

3-پشتیبانی از عبارتها

شما در دستورات T-SQl  فقط با جدولها و ستونهای آن جدولها سروکار دارید در حالی که در Entity SQL علاوه بر اینها شما می توانید در کویری خود عبارتهای مختلفی را نیز داشته باشید .

 

4-select Value

این عبارت زمانی به کار می رود که ما بخواهیم آیتم مشخصی را بصورت آبجکت یا کلکسیون و یا یک مقدار اسکالر داشته باشیم . به شکل زیر دقت کنید .


Entity_Framework37 - Entity Framework 4  part 1 - متا

در شکل بالا یک ساختاری کلی از عبارت select value  در Entity SQL  نمایش می دهد . همانطور که می بینید . در دستور بالا ما یک Object  بر می گردانیم یعنی حاصل کویری ما یک Object  است .با همین فرم بالا ما می توانیم یک ابجکت و یا مقدار مشخص یا کلکسیونی از داده ها داشته باشیم .به شکل زیر دقت کنید .


Entity_Framework38 - Entity Framework 4  part 1 - متا

در کویری اول ما یک شی و در کویری دوم ما یک فیلد و در نهایت در کویری سوم ما یک ستونی بر می گردانیم که از نوع ارجاع Refrence  می باشد . مبحث این مطلب بعدها توضیح خواهم داد .

خوب اکنون متوجه شدیم که عبارتهای کویری در Entity SQL  تا چه حد می توانند انعطاف پذیر باشند .

اما اگر بخواهیم چندین آیتم انتخاب کنیم دیگر نیازی به عبارت value  نخواهیم داشت بلکه ذکر نام آن فیلدها کافی است .


5-Referencing Columns 

در دستورات زبان T-SQl  به هنگام انتخاب ستونهای جدول نیازی نیست که قبل از نام هر ستون ، نام جدول ذکر شود اما در Entity SQL  این امر ضروری است شما باید در مقابل نام هر ستون ، ابتدا نام مرجع آن را هم ذکر کنید .دستور پایین اولی یک دستور T-SQl  است و دومی یک دستور Entity SQL  است .

 

select a from T

 

select t.a as A from T as t

 

6- عدم پشتیبانی از *

حتما می دانید که در زبان T-SQL هر گاه بخواهیم تمام ستونهای یک جدول را انتخاب کنیم از عبارت * استفاده می کردیم اما در Entity SQL  این کار امکان پذیر نیست .

 

7-عدم پشتیبانی از دستورات DDL  و DML  در Entity SQL

 

8-پشتیانی از گروه بندی مستعار

خیلی وقتها شما نیاز دارید برای کویری خود یک گروه بندی تعریف کنید . در زبان T-SQL  شما باید نام گروهها را به صراحت و مطابق نام ستونها تعریف کنید در حالی که در زبان Entity SQL  شما می توانید از عبارتها مستعار هم استفاده کنید . در عبارت زیر یک دستور T-SQL  است .

select b + c, count(*), sum(a)

from T

group by b + c

 

حال عبارت بالا در Entity SQl مشاهده کنید که چگونه برای گروه نام مستعار انتخاب کرده است .

 

select k1, count(t.a), sum(t.a)

from T as t

group by t.b + t.c as k1

 

 

 

 

Normal 0 false false false EN-US X-NONE FA MicrosoftInternetExplorer4
ارسال شده توسط احمد محمدی | 6 02, 2016 | بازدید‌ها (1073)

راهكارهای افزایش سرعت بانك‌ اطلاعاتی SQL Server



چکیده :


اگر شما تجربه كار در محیط‌های متوسط (مثلاً با یكصد كاربر) یا بزرگ‌ را نیز داشته باشید، قطعاً با مسائل و مشكلات مربوط به كاهش سرعت ناشی از افزایش تعداد كاربران یا حجم پردازشی آن‌ها مواجه شده‌اید. در این مقاله با استناد به منابع مایكروسافتی، راهكارهایی را برای بهبود سرعت و كارایی سیستم در بانك‌های اطلاعاتی با تعداد كاربر و حجم پردازش زیاد مورد بررسی قرار می دهیم. طبق بررسی‌هایی كه كارشناسان مایكروسافت انجام داده‌اند، كارایی یك سیستم بانك اطلاعاتی به پنج عامل مختلف بستگی دارد كه به ترتیب اهمیت عبارتند از: برنامه نوشته شده، پایگاه داده موردنظر، سخت‌افزار سرور یا كلاینت، تنظیمات و نسخه مورد استفاده
SQL Server و سیستم‌عامل ویندوز. همان‌طور كه حتماً می‌بینید، ساختار پایگاه داده، برای كارایی سیستم، در رتبه دوم اهمیت قرار‌دارد. بنابراین ایجاب می‌كند كه در زمان تحلیل و طراحی سیستم، به‌صورت ویژه‌ به بانك اطلاعاتی در‌حال ساخت توجه شود و رابطه بین این بانك و برنامه‌های كاربردی و همچنین رابطه بین اجزای مختلف درون بانك، به بهترین شكل ممكن طراحی و پیاده‌سازی شود.

https://i-msdn.sec.s-msft.com/dynimg/IC42074.gif

توسعه 
به‌طور كلی برای افزایش سرعت یك بانك اطلاعاتی می‌توان به دو روش اقدام كرد. در واقع پنج عامل مورد اشاره در بالا‌، به دو دسته طولی و عرضی تقسیم‌بندی می‌شوند. در توسعه طولی كه در اصطلاح انگلیسی به Scalp up نیز شناخته می‌شود، مدیر سیستم با صرف هزینه‌، به ارتقای سخت‌افزار (مثل پردازنده‌ها یا هارددیسك‌ها) یا به‌طوركلی ایجاد شبكه‌ای سریع‌تر اقدام می‌نماید یا مثلاً سیستم‌عامل خود را به نسخه‌ای جدیدتر و پایدارتر ارتقا می‌دهد. اما در روش عرضی (Scale out) تقریباً با حفظ همان سخت‌افزار و ساختار شبكه، به بهینه‌سازی روابط موجود میان عناصر دخیل در سرعت مثل برنامه‌های كاربردی، بانك اطلاعاتی و سرور اقدام می‌كند.

توسعه طولی (Scale up) 
هدف این مقاله پرداختن به توسعه عرضی برای بهره‌برداری بهینه از امكانات موجود است. اما قبل از آن، جادارد به‌صورت خلا‌صه و فهرست‌وار به توسعه طولی و راه‌حل‌های آن نیز پرداخته شود تا زمینه برای بررسی‌های بیشتر در آینده فراهم گردد.

راه‌حل یكم: افزایش حافظه مورد استفاده
SQL Server ، برای اطلاع از چگونگی انجام‌دادن این كار، به سایت پشتیبانی مایكروسافت رجوع كنید نشانی(http://support.microsoft.com) و در آنجا عبارت AWE SQLServer را جستجو كنید تا مقالاتی كه در این زمینه وجود دارد، در دسترس شما قرار گیرد.

یا استفاده از SQL Server 2014 که جهت توضیحات بیشتر به نشانی
http://fumblog.um.ac.ir/fumindex.php?op=ViewArticle&articleId=12041&blogId=569


راه‌حل دوم: ارتقای سیستم‌عامل ویندوز سرور 2008 به بالا كه در فرایند
caching، سیستم‌عاملی پایدارتر و هوشمندتر قلمداد می‌شود.

راه‌حل سوم: استفاده از پردازنده‌های قویتر در سرور. این پردازنده‌ها به دلیل ویژگی
hyper threading، می‌توانند سرعت پردازش اطلاعات در سمت سرور را به دو برابر افزایش دهند.

راه‌حل چهارم: ارتقاء هارددیسك‌ سرور
 راه‌حل پنجم: جداسازی محل ذخیره فایل‌های داده‌ای بانك اطلاعاتی (
mdf) و فایل‌های لاگ (ldf) برروی دو هارددیسك مختلف یا دو دیسك مختلف از یك RAID

با جداسازی این فایل‌ها از یكدیگر، عمل ایجاد لاگ، وقفه‌ای در خواندن و نوشتن اطلاعات بر روی هارددیسكی كه حاوی فایل‌های داده‌ای
mdf است، ایجاد نمی‌كند.

راه‌حل ششم: راه‌حل آخر و در واقع مشكل‌ترین راه، تقسیم بانك اطلاعاتی (در صورت لزوم) به دو یا چند  بانك جدا از هم و بر روی دو سرور مختلف است.  


توسعه عرضی (Scale out) 

نام خانوادگی

نام

شماره تامین اجتماعی بیمه شده

شماره سریال بیمه شده

ب

الف

ایندكس خوشه‌ای یا خاصیت منحصر به فرد

كلید اولیه ایندكس غیرخوشه‌ای

راه‌های موجود در توسعه عرضی در واقع سریع‌ترین راه‌حل‌های افزایش سرعت در بانك‌های اطلاعاتی را تشكیل می‌دهند. برخی از این راه‌ها فقط با یك بار استفاده، اثر دایمی خود را روی سیستم به جا می‌گذارند. اما برخی دیگر باید به عنوان یك الگوی دوره‌ای در مراحل زمانی مناسب ازسوی مدیر سیستم اجرا شود. این راه‌ها در واقع جزئی از دستورالعمل‌های نگهداری و پشتیبانی سیستم محسوب می‌شوند. در ادامه  به بررسی آن‌ها می‌پردازیم:

1 - از ساخت جداولی كه فاقد كلید اولیه (
Primary key) باشند، خودداری كنید. كلید اولیه علاوه بر جلوگیری از  ورود اشتباه اطلاعات از سوی كاربر، به دلیل داشتن خاصیت منحصر به‌فرد بودن (Unique) به سریع‌تر پیدا‌شدن ركورد موردنظر از همان جدول كمك شایانی می‌كند. تا آنجا كه برای سیستم امكان دارد برای كلید اولیه از فیلدهای عددی استفاده كنید.

استفاده از فیلدهای رشته‌ای (
string) مثلchar یاvarchar به‌عنوان كلید اولیه، كمی كندتر از فیلدهای عددی است. از انتخاب فیلدهای رشته‌ای با طول زیاد و یا فیلدهایی مثل Memo ،Text و Picture به عنوان كلید اولیه نیز اجتناب كنید.

2 - تمام كلیدهای خارجی (
Foreign key) قابل تعریف در بانك را تعریف كنید. وجود كلیدهای خارجی نیز علاوه بر جلوگیری از اشتباه كاربر در واردكردن یا حذف اطلاعات، موجب می‌شود هنگام لینك شدن (join) جداول مادر و فرزند از طریق كلیدهای خارجی، سیستم سرعت بیشتری را در انجام دستورات Select شما از خود نشان دهند.

3 - همان‌طور كه می‌دانید ایندكس‌ها در دو نوع خوشه‌ای (
cluster) و غیرخوشه‌ای (Non cluster) قابل ساخت هستند. ایندكس‌ها باعث افزایش سرعت خواندن اطلاعات به‌وسیله دستور Select می‌شوند.
ما تعریف بی‌رویه آن‌ها در سیستم نیز باعث كاهش سرعت اجرای دستورات فرایندی مثل
Insert ،Update و Delete  می‌شود. بنابراین سعی كنید ایندكس‌های ضروری را در سیستم تعریف كنید. اما در این راه دست و دلبازی بی‌مورد از خود نشان ندهید. به عنوان مثال، فرض كنید در یك شعبه اداره تأمین اجتماعی، جدولی ویژه تعریف بیمه‌شدگان به شكل زیر وجود دارد.  

مبلغ

تاریخ

شماره سریال

1

جزء دوم كلید اولیه

جزء اول كلید اولیه

1

 

كلید خارجی از جدول قبل

1

جزئی از ایندكس خوشه ای

جزئی از ایندكس خوشه ای

جدولی نیز برای نگهداری وجه حق بیمه از بیمه‌شدگان نیز تعریف شده است.

همان‌طور كه مشاهده می‌كنید، ایندكس نوع خوشه‌ای به فیلدی داده شده كه نسبت به بقیه فیلدها در یك جدول كاربرد بیشتری دارد. چرا كه این نوع ایندكس نسبت به نوع غیرخوشه‌ای سرعت بیشتری دارد. در ضمن در هر جدول از بانك اطلاعاتی شما فقط قادر به تعریف یك ایندكس خوشه‌ای هستید كه انتخاب فیلد آن اهمیت زیادی دارد. بنابراین لزومی ندارد فیلدی كه كلید اولیه است، حتماً به عنوان ایندكس خوشه‌ای انتخاب شود.

نكته مهم دیگر این است كه لا‌زم است تمام كلیدهای اولیه جداول ایندكس دارای باشند (خوشه‌ای یا غیرخوشه‌ای) نكته دیگر در زمان ساخت ایندكس‌ها فاكتور پرشدن (
Fill Factor) آن‌ها است. این فاكتور در واقع بیانگر میزان فضای میانی است كه باید برای ركوردهایی كه در آینده درج یا حذف می‌شوند، خالی نگه داشته شود. بنابراین اگر احساس می‌كنید جدول شما به‌طور مداوم مورد عملیات حذف و درج (Insert،‌Delete) قرار می‌گیرد، این فاكتور را پایین (مثلاً 30 درصد) انتخاب كنید. اما اگر صرفاً عملیات درج بر روی یك جدول انجام می‌گیرد و میزان حذف اطلاعات از آن بسیار كم است، می‌توانید این میزان را به ارقام بالاتر مثلاً 90 درصد افزایش دهید. زیرا این نوع جداول نیازی به داشتن فضای خالی میانی برای ركوردهایی كه در آینده جانشین ركوردهای حذف شده می‌شوند، ندارد.

این مسئله برای ایندكس‌هایی كه برروی دیدها (
Indexed Views) ساخته می‌شوند نیز صادق است. به‌طوركلی گذاشتن ایندكس برروی دیدها به افزایش سرعت آن‌ها كمك می‌كند. در این حالت، كلیه مطالب مذكور از جمله سیاست استفاده از ایندكس‌های خوشه‌ای و غیرخوشه‌ای و همچنینFill Factor در جداول، در مورد دیدها نیز عیناً باید رعایت گردد.

4 - در هنگام نوشتن دستورات
Select یا در هنگام ساختن دیدها، از استفاده بی‌مورد از پارامترهای پردازش مثلDistinct و LIKE order by و لینك‌های خارجی (Outer join) اجتناب كنید. در صورت استفاده از این پارامترها، مطمئن باشید كه گذاشتن آن‌ها كاملاً ضروری است و چاره دیگری ندارید.

5 - از واگذاری پردازش‌های ریاضی یا آماری سنگین و مداوم به سرور بانك اطلاعاتی بپرهیزید. مثلا‌ً به دستور زیر نگاهی بیندازید.

SELECT( a*( b+c ;)) +( d* E+F))  %G/H From ... WHERE ...


به‌جای این‌كار، می‌توانید ابتدا با استفاده از یك
Select معمولی مثل Select a ,b ,c ,d ,E ,F ,G ,h  فیلدهای موردنظر را در حافظه كلاینت لود كنید و سپس عملیات ریاضی مذكور را در همان جا انجام دهید. با این كار پردازشی كه سرور باید مثلاً برای 50 كلاینت در عرض چند دقیقه انجام دهد، بین آن 50 كلاینت تقسیم می‌شود و در واقع هر كلاینت فقط سهم پردازشی مربوط به خود را انجام می‌دهد.

6 - گاهی عمل اجتماع بین دو
Select  توسط دستور Union به شدت بر عملكرد و سرعت سیستم اثر منفی می‌گذارد. بنابراین در صورت امكان به جای استفاده از روش مذكور، از روش‌های دیگری كه هدفتان را برآورده نماید، استفاده كنید.

7 - سعی نمایید فیلدهایی كه از نظر مقدار و ارزش با یكدیگر مقایسه می‌شوند، از یك جنس (
type) باشند. در غیر این‌صورت سیستم‌مجبور می‌شود به طور ضمنی، عمل تبدیل داده را انجام دهد كه كمی برایش وقت‌گیر است. به مثال زیر توجه كنید و فرض بگیرید فیلد customer ID در جدول customers از جنس nchar تعریف شده است. 

Declare@custID char (5)
Set @ CustID =" FDLKO"
Select * From Customers where customerID=@custID


8 - تاحد ممكن از به كار بردن توابع (چه پیش ساخته توسط
SQL Server و چه ساخته شده توسط كاربر) در قسمت WHERE یا order by اجتناب كنید. مثال زیر نمونه‌ای از این مورد است:

Select * Form orders Where DateAdd (Day, 15, orderdata) = "2005/23/07"


9 - در زمان نوشتن تریگر (
trigger) بر روی جداول یك بانك اطلاعاتی، از نوشتن تعداد زیادی دستورالعمل در آن‌ها خودداری كنید. به عبارت دیگر تریگرها را تا حد امكان كوتاه كنید و دستورالعمل‌ پیاد‌ه‌سازی آن‌ها را كم نمایید.
10 - در زمان ساخت كرسر (
cursor) درون توابع، روال‌ها و تریگرها از پارامترهای Forward only یا read only و همچنین local استفاده كنید تا SQL Server با دانستن این نكته كه شما قصد تغییر داده‌ها در كرسر موردنظر را ندارید، تغییر یافتنی بودن آن‌ها را درنظر نگیرد و آن را برای شما سریع‌تر بسازد.

11 - در صورتی كه تكه‌ای از برنامه شما به ساخت یك جدول موقت (
temporary table) نیاز دارد، این كار باید با ظرافت خاصی صورت بگیرد. اصولا SQL Server برای اجتناب برنامه‌نویسان از ساخت جداول موقت، از یك نوع داده(Data type) خاص به نام Table پشتیبانی می‌كند كه مزیت استفاده از آن این است كه به‌جای هارددیسك، در حافظه رم قرارگرفته است و در نتیجه نسبت به جداول موقت سرعت بیشتری دارد.

اما به یاد داشته باشید كه استفاده بی‌رویه از این نوع داده، حافظه زیادی را صرف می‌كند كه می‌تواند باعث كاهش كارایی سیستم شود. بنابراین اگر احساس می‌كنید تعداد جداول موقت، ركوردهای آن‌ها و زمان استفاده از آن‌ها كم است، از این نوع داده استفاده كنید. در غیر این‌صورت، راه‌حل جدول موقت را انتخاب كنید.
 
12-  قفل‌گذاری بر روی ركوردهایی كه در حال خواندن، درج شدن، حذف شدن یا تغییر كردن هستند، همیشه از مباحث مهم بانك‌های اطلاعاتی بوده‌است. همان‌طور‌كه می‌دانید یك فرایند (
Transaction) شامل یك یا چند دستورالعمل SQL است كه یا باید همگی به صورت موفقیت‌آمیز اجرا شوند (committed) یا در صورت ایجاد خطا در زمان اجراشدن یكی، اجرای بقیه نیز منتفی شود (Rollbacked).
 

ایندكس گذاری برروی دیده ها(Indexed Views) یكی از بهترین راههای فوری جهت افزایش سرعت جستجو بر روی دیدهااست. در حالت عادی گزینه Manage Indexes بر روی دیدها قابل انتخاب نیست مگر آنكه اولا كلیه جداول یا دیدهای موجود در آن، خود دارای ایندكس باشد و دوم اینكه كلیه دیدهای موجود در آن و هم خود دید مورد نظر با دستور زیر ساخته شده باشند.
Create View....Whit Schema Binding AS.......
 

فرایند به دو صورت قابل پیاده‌سازی است. این كار یا با استفاده از دستورات Begin trans و Committrans انجام می‌شود كه به آن حالت صریح (Explicit) می‌گویند یا به صورت ضمنی (Implicit) صورت می‌گیرد كه در آن اثری از دو دستور مذكور دیده نمی‌شود و هر دستور SQL یك فرایند مجزا به حساب می‌آید. در هر دو روش ركوردهایی كه تحت‌تأثیر دامنه فرایند قرار می‌گیرند، توسط سیستم قفل می‌گردند و برای دیگر كاربران نیز غیرقابل استفاده می‌شوند و در نتیجه باعث كاهش سرعت كار آن‌ها به دلیل ایجاد انتظار برای آزاد شدن ركوردها می‌شود.
 
بنابراین برای رسیدن به حداكثر كارایی سیستم، باید از ایجاد قفل‌های بی‌مورد بر روی ركوردهای جداول بانك اطلاعاتی جلوگیری كرد. این كار با استفاده از دستور
SET Transaction Isolation Level Read Uncommitted برای فرایندهای صریح (قبل از شروع فرایند، یعنی قبل از دستور (begin Trans  و یا استفاده از دستور WITH NOLOCK  برای فرایندهای ضمنی (پس از قسمت From هر دستور SQL) قابل انجام است. در مورد مسئله فرایندها و انواع قفل‌گذاری مطالب خواندنی زیادی در سایت مایكروسافت وجود دارد كه درصورت تمایل می‌توانید به آن‌ها نیز مراجعه كنید.

13 - روال‌های ذخیره شده (
stored Procedures) پس از هر اجرا، به ازای هر دستورالعملی كه اجرا می‌كنند،  جهت اطلاع برنامه فراخوان (كلاینت) از موفقیت‌آمیز بودن اجرای آن دستور SQL، پیغامی را به سمت آن برنامه می‌فرستند. این مسئله باعث افزایش ترافیك شبكه در اثر فرستادن مداوم پیغام ازSP به سمت كاربر می‌شود. با تایپ دستور زیر در ابتدای یكSP، می‌توانید آن را از انجام این كار منع كنید:
SET NOCOUNT ON

نتیجه‌گیری‌
مطالب فوق تنها قسمتی از راهكارهای قابل انجام برای رسیدن به‌سرعت و بازدهی مناسب در بانك‌های اطلا‌عاتی مبتنی بر
SQL Server است. در ضمن‌ باید این نكته را هم درنظر داشت كه اصولا‌ً در سیستم‌های بزرگ اطلا‌عاتی تحت شبكه، توپولوژی و نوع اجزای موجود در شبكه از اهمیت بسیار زیادی در تعیین سطح كارایی یك بانك اطلا‌عاتی برخورداراست. گاهی حتی در حالی‌كه بهترین طراحی و پیكربندی SQL Server برای یك بانك اطلا‌عاتی انجام شده، یك اشتباه كوچك در سطح شبكه می‌تواند تمام زحمات را بر ‌باد دهد یا مثلا‌ً یك سهل‌انگاری در نوشتن روال‌های ذخیره شده یا تریگرها می‌تواند سیستم را به‌یك لوپ (Loop) پردازشی بی‌نهایت ببرد و باعث افت شدید سرعت اجرای برنامه‌ها شود. بنابراین در این‌گونه سیستم‌ها، استفاده بجا و مناسب از منابع سیستم و شبكه و دقت در طراحی و پیاده‌سازی جداول، دیدها، روال‌های ذخیره‌شده و تریگرها بسیار مهم  و حیاتی است.

 

درباره من

  • 9163858398
  • احمد محمدی (کارشناس ارشد مدیریت فناوری اطلاعات و مهندس نرم افزار)

    مشاور و عضو کمیسیون نظارت و ارزشیابی سازمان نظام مهندسی رایانه ای خراسان رضوی

    بنیانگذار و مالک سایت های SEOparsian.com و SMSparsian.com

    جديدترين مقالات مرتبط با مدیریت فناوری اطلاعات

    ahmad.mohammadi.a@gmail.com

آخرين مطالب بروز شده