در نظرنسجیهای انجام شده در بین دولوپرها توسط سایتهای بزرگی همچون استک اورفلو، سؤالاتی پیرامون اینکه چهطور موضوعات جدید را میآموزند، از چه ابزارهایی استفاده میکنند و بسیاری مسائل دیگر پرسیده میشود که در نهایت تصویری روشن از طرز فکر دولوپرها و صنعت توسعهٔ نرمافزار را به ما نشان میدهد. در همین راستا، موضوعی که در نوع خود جالب میباشد این است که چرا زبان Structured Query Language یا به اختصار SQL، کماکان جزو یکی از زبانهای پرکاربرد در میان دولوپرها است؟
SQL توسط Donald D. Chamberlin و Redmond F. Boyce و Relational DataBase Management System با به اختصار RDBMS توسط Edgar F. Codd در دههٔ 70 میلادی ابداع شدهاند. بدون اغراق میتوان گفت که آنها از زمان خود جلوتر بودند به طوری که درصد قابلتوجهی از وقتشان را روی این موضوعات متمرکز کرده بودند تا امروز مقولهٔ دیتابیس، یک مسئله حلشده برای سایر دولوپرها باشد.
همانطور Google معادل جستجو و سرچ اینترنتی شده است، اگر با اطلاعات قرار است سروکله بزنید، باید از زبان SQL استفاده کنید به شکلی که این موضوع تبدیل به امری بدیهی شده است. با عرضهٔ رقبایی برای SQL، کماکان این زبان در دنیای دیتابیسها سلطنت میکند که در ادامه به برخی از دلایلی که SQL را در جایگاه امروزیاش قرار داده نگاهی خواهیم انداخت:
SQL در کاری که انجام میدهد استاد است
SQL بر اساس جبر رابطهای و حساب رابطهای Tuple پایهگذاری شده است که دو نوع از معادلات ریاضیاتی هستند که اختصاصاً برای دیتابیسهای RDBMS توسط Edgar F. Codd توسعه داده شدهاند. SQL به طور اختصاصی برای کار با دیتا ساخته شده است و منطقی هم به نظر میرسد که در دستیابی و مرتبسازی اطلاعات نسبت به سایر رقبا برتری بیشتری داشته باشد.
SQL امتحانش را پس داده است
RDBMS در سناریوهای مختلفی استفاده شده است؛ از دیتابیسهای سادهٔ آفلاین گرفته تا دیتابیسهای مورد استفاده توسط غولهایی مثل فیسبوک و در یک کلام، SQL و RDBMS آزمونشان را دادهاند و این را میلیونها ساعت فعالیت بدون وفقهٔ سرویسهای آنلاین مبتنی بر این تکنولوژیهای به خوبی نشان داده است. وقتی با اطلاعات سروکار دارید، باید مسائل مختلفی را مد نظر قرار دهید؛ مخصوصاً زمانی که پاک شدن و یا خراب شدن و خطا در اطلاعات مد نظر ممکن است فاجعهآمیز باشد که البته SQL تقریباً همیشه برای شرایطی اینچنین یکی از بهترین انتخابها است.
انجمنها و تالارهای گفتگوی بسیار برای پرسش و پاسخ در مورد SQL
وقتی یک فناوری روانهٔ بازار شده و مدتی در دسترس و در حال استفاده باشد، طبیعی است که حجمهای از اطلاعات مختلف پیرامون فناوری مد نظر به وجود آید و SQL هم از این قاعده مستثنی نیست. از دههٔ 1970 تاکنون، پرسش و پاسخهای زیادی پیرامون SQL در انجمنها، مستندات آموزشی و ... منتشر شده و بسیاری از مشکلات مرتبط با شرایط خاص را که نیاز به خلاقیت برای حل آن مشکل است، پوشش میدهد. چنین حجم وسیعی از اطلاعات و انجمنهای فعال حول هر تکنولوژیای، به سرپا نگاه داشتن آن تکنولوژی کمک شایانی میکند. این فعالیتها و داکیومنتهای بسیار کامل باعث کشیده شدن افراد و شرکتها به سمت استفاده از SQL میشود و هرچه دولوپرهای علاقمند به SQL افزایش پیدا کند، انجمنها گسترش مییابند و اطلاعات دربارهٔ SQL نیز بیشتر رشد میکند.
سادگی و راحتی در آموختن SQL
در یک کلام، SQL زبانی ساده برای یادگیری است به طوری که شاید بیشتر از چند روز زمان برای یادگیری توابع محدود و اندک SQL نیاز نباشد تا یک نفر به سادکی بتواند با SQL کار کند و این در حالی است که حتی آدمهای غیرفنی نیز توان یادگیری این زبان را دارند (درک عمیق دیتابیس رابطهای که SQL بر روی آن کار میکند موضوع دیگری است اما برای اکثر کوئریهای ساده، میتوان خود SQL را به سادگی فرا گرفت.)
گستردگی و فراوانی استفاده از SQL
برخی نظرسنجیها حاکی از آنند که چیزی در حدود 50٪ دولوپرهای سراسر دنیا از SQL و RDBMS استفاده میکنند؛ پس میتوان گفت که این زبان عمومیت بالایی دارد. در یک کلام، SQL به دلیل سادگیاش، دانش مشترکی بین همهٔ دولوپرها و آنهایی که از آن استفاده میکنند ایجاد کرده است.
با وجود SQL، اختراع مجدد چرخ ممنوع
جملهای با این مضمون وجود دارد که «چیزی را که با SQL میتوانید انجام دهید، دلیلی ندارد با زبان دیگری انجام دهید.» منطق پشت چنین ایدهای این است که در اکثر مواقع، دیتابیسها به بهترین شکل ممکن کارشان را انجام میدهند که بسیار بهتر و بهینهتر از حالتی است که دولوپری بخواهد همان کار را با زبان دیگری انجام دهد. به عبارت دیگر، SQL برای افزودن، فیلتر کردن، انتخاب ستون و … ساخته شده است که انجام دادن این تَسکها با کدهای خودتان فقط باعث حجیم شدن سورسکد خواهد شد که کاری بیشتر از SQL انجام نمیدهد! برای روشنتر شدن این مسئله، در ادامه مثالی میزنیم.
فرض کنیم که میخواهیم گزارشی از اطلاعات «درآمدهای فروشگاهی در سه ماههٔ اخیر» به دست آوریم و این در حالی است که این گزارش را به راحتی نوشتن یک خط کد میتوانیم انجام دهیم. کدی که هزینهها را از جدولی تحت عنوان Transactions استخراج کرده و جمعش را در یک ستون نشان میدهد:
SELECT SUM(Value_USD) AS Store_Revenue_Q3 FROM Transactions WHERE Location = 'Store' AND DATEPART(q, D ate) = 3 AND YEAR(Date) = 2017;
و اگر بخواهیم برحسب محصولات دستهبندی کنیم، میتوانیم از کد SQL زیر استفاده کنیم:
SELECT Goods, SUM(Value_USD) AS Store_Revenue_Q3 FROM Transactions WHERE Location = 'Store' AND DATEPART(q, Date) = 3 AND YEAR(Date) = 2017 GROUP BY Location ORDER BY Goods;
و در نهایت اگر بخواهیم پنج ناحیهای که بیشترین کسب درآمد را داشتهاند مشخص کنیم، میتوان کد زیر را مد نظر قرار داد:
SELECT TOP 5 Location, SUM(Value_USD) AS Revenue_Q3 FROM Transactions WHERE DATEPART(q, Date) = 3 AND YEAR(Date) = 2017 GROUP BY Location ORDER BY SUM(Value_USD) DESC;
برای اینکه این گزارشها را بتوانید با الگوریتمهای اختصاصی خود به دست آورید، نیاز به صرف وقت بر روی کدهایی پیچیده است که معمولاً کار کردن با آنها برای سایر دولوپرها در آینده بسیار ملالآور خواهد بود! SQL به شکلی هدفمند برای انجام این کارها طراحی شده است و به خوبی از پس تَسکهایی از این دست بر میآید.
دیتابیسهای SQL/RDBMS و هَندل کردن میلیونها کاربر در آنِ واحد
سیستمهای دیتابیس مختلف به منزلهٔ ابزارهایی هستند که یکی با دیگری متفاوت است و هر کدام کاری متفاوت برای حل مسائل متفاوتی انجام میدهد. دیتابیسهای به اصطلاح Relational (رابطهای) بسیار خارقالعادهاند؛ مخصوصاً زمانی که باید روابط محتمل بین دادههای مختلف را تجمیع یا ترکیب کرده و یا کاربرد دادهها را در یک سیستم پیشبینی کنند. به طور کلی، SQL راهکاری کاربرپسند برای مدیرت دادهها بسته به نیاز دولوپر در اختیارش میگذارد.
به طور کلی، وقتی تمامیت و پایداری اطلاعات حیاتی است، به طور مثال در امور مالی و اقتصادی، دیتابیسهای SQL/RDBMS بهتریناند. البته نیاز به توضیح نیست که دیتابیسهای SQL کاستیهایی هم دارند که برای بعضی کارها مناسب نیستند اما در برخی موارد خاص، تمامی ابزارهای NoSQL را کنار میزنند.
همچنین اگر در مورد حجم دیتابیس نگرانید، واقعیت امر آن است که درصد کوچکی از نرمافزارها نیاز به نگرانی در مورد حجم دیتابیسی از جنس RDBMS دارند مگر اینکه نرمافزار شما به بزرگی سرویسهای گوگل یا فیسبوک باشد! با این حال، میتوانید نیازهای میلیونها کاربر را در یک دیتابیس مبتنی بر SQL بدون هیچ مشکلی هَندل کنید.
سخن پایانی
جدای از سیستمهای دیتابیس بیشمار دیگری که وجود دارند و رو به رشد نیز هستند، دیتابیسهای SQL بدون شک برای ماندن آمدهاند. با ظهور کلان دادهها (Big Data)، یادگیری ژرف (Deep Learning) و همچنین اینترنت اشیاء (IoT)، خیلی دور از تصور نیست که برای چند دههٔ دیگر سیستمهای دیتابیس رابطهای و زبان اسکیوال در صنعت توسعهٔ نرمافزار حضوری پررنگ داشته باشند (درست است که SQL کاستیهایی نیز دارد، اما در اکثر شرایط نسبت به رقبایش برگبرندههایی دارا است.)
طراحی اپلیکیشن | طراحی نرم افزار اندروید | طراحی اپلیکیشن ios | طراحی وب سایت | تولید اپلیکیشن اندروید