پایگاه داده یا بانک اطلاعاتی، مجموعه ای منظم و سازمان یافته از اطلاعات ذخیره شده است. این اطلاعات تشکیل شده از سوابق و بایگانیهای قابل خواندن با ماشین که برای مقاصد مختلف به کار میرود. این اطلاعات مرتبط دربارهٔ یک موضوع هستند که به صورتی مفید سازمان یافتهاند و پایگاهی هستند برای روالهایی چون بازیابی اطلاعات، تصمیمگیری و نتیجهگیری .
بانک اطلاعات ( Database ) چیست ؟
پایگاه داده یا بانک اطلاعاتی، مجموعه ای منظم و سازمان یافته از اطلاعات ذخیره شده است. این اطلاعات تشکیل شده از سوابق و بایگانیهای قابل خواندن با ماشین که برای مقاصد مختلف به کار میرود. این اطلاعات مرتبط دربارهٔ یک موضوع هستند که به صورتی مفید سازمان یافتهاند و پایگاهی هستند برای روالهایی چون بازیابی اطلاعات، تصمیمگیری و نتیجهگیری .
وقتی اطلاعات پیچیدهتر و به هم وابسته هستند، با استفاده از تکنیکهای طراحی پیشرفته آن ها را مدلسازی می کنند.
برای اینکه بتوانیم بین کاربران نهایی، برنامهها و خود پایگاه داده ارتباط برقرار کنیم از سیستم مدیریت پایگاه داده ( DBMS) که نرمافزاری است برای گرفتن و تجزیه و تحلیل دادهها استفاده میکنیم .
اطلاعات ثبت شده در بانک اطلاعاتی به صورت سطر و ستون در یک سری جداول مدل میشوند و اکثریت قریب به اتفاق از SQL برای نوشتن و پرس و جو از دادهها استفاده میکنند. در دهه ۲۰۰۰، پایگاه دادههای غیر رابطه ای محبوب شدند که به آنها NoSQL گفته میشود زیرا از زبانهای مختلف پرس و جو استفاده میکنند.
اولین کاربردهای اصطلاح پایگاه داده به ژوئن ۱۹۶۳ بازمیگردد، یعنی زمانی که شرکت System Development Corporation مسئولیت اجرایی یک طرح به نام «توسعه و مدیریت محاسباتی یک پایگاه دادهای مرکزی» را بر عهده گرفت. پایگاه داده به عنوان یک واژه واحد در اوایل دهه ۷۰ در اروپا و در اواخر دهه ۷۰ در خبر نامههای معتبر آمریکایی به کار رفت.
متن باز ( Open Source ) به چه معنی است ؟
جهت فراهم شدن توسعه فراگیر محصولات تولید شده ، یک جنبش نرم افزاری در ژانویه ۱۹۹۸ برای اولین بار مفهوم منبع باز را مطرح کرد. متن باز یعنی دقیقا همان کدی که برنامه از روی آن کامپایل می شود را در اختیار کاربران قرار دهیم تا همگان بتوانند سرس اصلی را بررسی کنند و توسعه دهند.
مدل منبع باز یک مدل توسعه نرمافزار غیرمتمرکز است که همکاری باز را تشویق میکند، به این معنی که هر گروه خلاق یا هر شرکت هدف گرا و در عین حال هماهنگ، برای ایجاد یک محصول (یا خدمات) با ارزش اقتصادی تعامل میکنند
این اصطلاح ابتدا برای نرمافزار استفاده شد ولی بعد ها فراتر از بخش نرمافزار گسترش یافته است تا در سایر مفاهیم علمی و صنعتی نیز بازنشر داده شوند.
بازکردن کد مبدأ، امکان مشارکت عمومی را فراهم کرد و باعث خود بهبودی، افزایش تنوع در مدلهای تولید، مسیرهای ارتباط، و جوامع تعاملی شد. اصل و عمل اصلی در توسعهٔ نرمافزار متنباز، شبهتولید بوسیلهٔ دادوستد و همکاری، با محصول نهایی (و مادهٔ منبع) است که بدون هیچ هزینهای در دسترس عموم قرار دارد.
تعداد زیادی از موسسات رسمی بزرگ برای حمایت از توسعه جنبش نرمافزار منبع باز به وجود آمدهاند، از جمله بنیاد نرمافزار آپاچی، که از پروژههای مهمی مانند چارچوب منبع باز Apache Hadoop و سرور منبع باز HTTP Apache پشتیبانی میکند.
مدل کلاینت ، سرور چیست ؟
مدل کلاینت سرور ( Client Server Model ) ، یک ساختار نرم افزاری و توزیعشده است که وظایف یا حجم کار را بین سرویس دهنده ها و سرویس گیرنده ها تقسیم میکند.
یک برنامه کاربردی کلاینت سرور تحت شبکه ، برنامهای است که یک سرویس گیرنده را به یک سرور یا سامانهٔ پایگاه داده متصل میکند. هنگامی که یک سرویس گیرنده مستقیماً به یک سیستم پایگاه داده، یا یک سرور یکپارچه متصل میگردد، معماری برنامه، معماری دولایهای است.
یک معماری کلاینت سرور یک معماری تحت شبکه است که در آن همه ی پردازش ها روی سرویس دهنده است ، و سرویس گیرنده ها خروجی این پردازش ها را دریافت می کنند. سرویس دهنده ها معمولاً رایانههای پر قدرت هستند که مختص انجام کار خاصی مانند مدیریت پرونده ها، چاپگرها، مدیریت ترافیک شبکه و موارد مشابه میباشند.
سرویس گیرنده ها، مستقیما به منابع اصلی دسترسی ندارند و منابع مورد نیاز را از سرویس دهنده ها دریافت میکنند . در این معماری اطلاعات کاملا امن هستند و سرویس گیرنده ها فقط بخشی از اطلاعات که به آنها دسترسی دارند را دریافت می کنند و دسترسی به اطلاعات دیگر نخواهند داشت.
یکی از روش های استفاده از مدل کلاینت سرور ، استفاده از Thin Client است. یک سرویس گیرنده کوچک که صرفا برنامه های کاربردی روی آن نصب میشود و تمامی اطلاعات مورد نیاز خود را از سرور دریافت میکند. در واقع این سرویس گیرنده ها تنها رابط کاربری جهت اتصال به یک سرویس دهنده هستند که منطق کاری روی آن پیادهسازی شده است .
وقتی که یک سرویس گیرنده درخواستی را به سرویس دهنده ارسال می کند ، لازم نیست در هنگام انجام درخواست و ارائه پاسخ، به نحوه عملکرد سرویس دهنده توجه کند و فقط باید پاسخ را براساس پروتکل استاندارد دریافت کند و بتواند آن را تحلیل و بررسی کند.
سرویس گیرندهها و سرورها پیامهای خود را طبق یک استاندارد ارسال می کنند . سرویس گیرنده درخواستی را ارسال میکند و سرور پاسخی را برمیگرداند. این تبادل پیام مثالی از ارتباط مدل کلاینت سرور است. برای برقراری ارتباط، رایانهها باید زبان مشترکی داشته باشند، و از قوانینی پیروی کنند تا کلاینت و سرور بدانند که چه انتظاری دارند.
معمولا برای استاندارد کردن ارتباط بین سرویس گیرنده و سرویس دهنده ، یک رابط برنامهنویسی ( API ) را پیاده سازی می کنند. API یک لایه برای دسترسی به یک سرویس است. این لایه ارتباط بین سرویس دهنده و سرویس گیرنده را استاندارد و ساده می کند.
SQL Server چیست ، چه کاربردی دارد و مزایای آن کدام است ؟
مایکروسافت SQL Server یک نرمافزار مدیریت بانکهای اطلاعاتی است که توسط شرکت مایکروسافت تولید شده و به عنوان یک سرور پایگاه داده، استفاده میشود.
در واقع SQL Server یک محصول نرمافزاری است که عملکرد اصلی اش ذخیرهسازی و بازیابی اطلاعات با توجه به درخواست سرویس گیرنده ها میباشد . درخواست ها ممکن است از روی همان کامپیوتر ، یک کامپیوتر دیگر در یک شبکه و از طریق اینترنت ارسال شده باشد.
مایکروسافت حداقل دوازده نسخه متفاوت SQL Server را برای کاربرد های مختلف ، از برنامههای کوچک برای اجرا روی یک ماشین تا برنامههای بزرگ اینترنتی عرضه کرده است.
تاریخچه مایکروسافت SQL Server با اولین نسخه آن یعنی SQL Server 1.0 آغاز میشود، یک سرور ۱۶ بیتی در سال ۱۹۸۹منتشر شد - و تا امروز در حال گسترش میباشد.
در این بخش به برخی از ویژگیهای این سیستم مدیریت پایگاه دادهها می پردازیم.
از SQL Server 2016 به بعد، این محصول فقط در پردازنده های x64 پشتیبانی می شود.
اکنون که در حال تنظیم این مقاله هستم ، نسخه فعلی، Microsoft SQL Server 2019 است که در 4 نوامبر 2019 منتشر شد.
در نسخهٔ جدید، اکثر دادههای چندرسانهای را میتوان به عنوان BLOB (بخش بزرگ باینری) ذخیرهسازی کرد. آگاهی درونی از دادههای چندرسانهای به ما این اجازه را خواهد داد که به بخش های مختلفی از یک داده بزرگ به صورت مجزا دسترسی داشته باشیم و نیاز نیست تمام حجم داده را باز کنیم تا به یک بخش دسترسی داشته باشیم.
در این پایگاه داده امکان ذخیره سازی داده های هندسی مسطح و یا کروی وجود دارد. قابلیت دیگر ذخیره سازی اطلاعات برداری و ریاضی نیز فراهم شده است . برای مثال می توانیم مشخصات چندین شکل هندسی مانند مربع، دایره ، کره و … را در فیلد های مربوط به این نوع از داده ذخیره کنیم و روی آنها کوئری اجرا کنیم. مثلا محیط آنها را با هم مقایسه کنیم .
MySql چیست ، چه کاربردی دارد و مزایای آن کدام است ؟
یک سیستم مدیریت دیتابیس است که با استفاده از آن، میتوانیم یک پایگاه داده ایجاد و آن را مدیریت کنیم.
نسخه های قدیمی این سرویس واسط کاربر قابل قبولی نداشتند و کلیه دستورات مرتبط به مدیریت و طراحی بانک اطلاعاتی به وسیله فرامین خط فرمان انجام می شدند.
با ظهور محیط های گرافیکی زیبا و قدرتمند برای لینوکس، سرویس MySql هم نظیر دیگر نرم افزارهای Open Source تحت لینوکس تکمیل شد و هسته و ابزارهای جانبی آن نیز بهبود پیدا کرد. این بهبود و تکامل تا جایی ادامه پیدا کرد که در حال حاضر یکی از کارآمدترین، سریعترین و مقرون به صرفه ترین برنامه های بانک اطلاعاتی دنیا محسوب می شود.
به جز توانمندی های مرتبط با امکانات جانبی و واسط کاربر، در نسخه های جدید MySql تلاش شده تا نقاط ضعف این سرویس ، یعنی ضعف در سه عنصر با اهمیت پروسیجر ، View و تریگر ها تا حد زیادی رفع گردد .
این بانک اطلاعاتی بسیار قابل اطمینان است، از این جهت که یک بانک اطلاعاتی Open Source است و یک شبکه قدرتمند تحت عنوان MySql Network همواره در حال ارائه خدمات به کاربران و پشتیبانی از آن ها می باشد و به سادگی قادر است در بسیاری از حوزه های تجاری به عنوان یک جایگزین مناسب برای رقبای گران قیمت خود مطرح شود.
تا به امروز MySql توانسته است مزایای زیادی را در اختیار کاربران خود قرار دهد. در ادامه چند مورد از ویژگیهای آن را بیان میکنیم.
شباهت های SQL Server و MySql
از آنجایی که دو پایگاه داده Microsoft SQL Server و MySql ، هر دو پایگاه داده رابطهای محسوب میشوند، بسیار شبیه به یکدیگر هستند.
در ادامه برخی از شباهتهای کلیدی این دو پایگاه داده ذکر شده است :
تفاوت های SQL Server و MySql
تفاوت در پشتیبانی در سیستم عاملهای مختلف :
SQL Server در ابتدا توسط مایکروسافت مخصوص سیستم عامل ویندوز توسعه داده شد. از نسخه 2017 به بعد در حقیقت Multi Platform شده است یعنی روی چندین OS قابل پیاده سازی و نصب می باشد. در صورتی که برنامهنویسان از ابتدا میتوانستند MySql را به راحتی در چندین سیستم عامل محبوب از جمله Windows ،Linux و Mac OS اجرا کنند و این یکی از بزرگترین وجه تمایزهای این دو پایگاه داده است.
تفاوت در پشتیبانی از زبانهای برنامه نویسی :
MySql و SQL Server هر دو از چندین زبان برنامه نویسی پشتیبانی میکنند. هر دو از زبانهای Java, PHP , Delphi , Visual Basic , Python , C++ , Ruby پشتیبانی میکنند اما MySql علاوه بر این، از زبانهای برنامه نویسی ای مانند Perl ، Scheme ،Tcl ، Haskell و Eiffel هم پشتیبانی میکند که میتواند برای بسیاری از برنامه نویسان کاربردی باشد. همین پشتیبانی از زبانهای برنامه نویسی مختلف باعث میشود MySql در بین جوامع مختلف توسعه دهندهها محبوبتر از رقیب خود یعنی SQL Server باشد.
تفاوت در امنیت دادهها :
محیط SQL به دلیل اتصال به Active Directory رمزنگاری پیشرفتهتری نسبت به رقیب خود داشته و امنیت دادهها در آن بسیار بالاتر است. نکته بعد اینکه MySql به برنامه نویسان این امکان را میدهد تا هنگام اجرا فایل های پایگاه داده را از طریق باینری دستکاری کنند. اما SQL Server اجازه نمیدهد دسترسی یا دستکاری پروندههای دیتابیس یا باینری ها امکان پذیر باشد. این قانون طراحی باعث میشود تا SQL Server از MySql امنتر باشد.
تفاوت حجم دادههای دو پایگاه داده :
یکی از موارد مهمیکه در بحث تفاوتهای MySql و SQL Server وجود دارد موضوع حجم داده ذخیره شده بر روی این دو پایگاه داده است. محدودیت حجم کل پایگاه داده در SQL Server به غیر از ورژن Express برابر با ۵۱۲ پتابایت است که این عدد در MySql بسیار کمتر است.
تفاوت در هزینه ها :
نسخه عمومی MySql رایگان است و برای نسخه تجاری آن در مقایسه SQL Server هزینه بسیار کمی پرداخت میکنیم. از نظر منابع سخت افزاری و نرمافزاری MySql به منابع کمتری نیاز دارد و در مقایسه با SQL Server هزینه ی کمتری را طلب میکند.
Connection String چیست و از چه بخش هایی تشکیل شده است
رشته اتصال یا Connection String يک سري از جفتهای نام و مقدار ( name , value ) است که به وسيله سمیکالن از هم جدا شدهاند و نشان دهنده تنظيماتي براي اتصال به ديتابيس میباشند. اين تنظيمات شامل مکان ديتابيس، اعتبارسنجي، امنيت و نام ديتابيسي است که به آن متصل شدهایم.
connection string براي منابع دادهای مختلف يكسان نيست. به عنوان مثال OLE DB و ODBC نياز به تعيين يک درايور OLE DB و ODBC در رشته اتصالشان دارند. کلاسهای کانکشن ( Connection class ) داراي يک خاصيت Connection String هستند که شما میتوانید با استفاده از آن به ديتابيس وصل شويد.
پارامترهای مورد استفاده در رشته اتصال
در رشته اتصال حدود شصت پارامتر برای تعریف مفاهیم متفاوت استفاده می شوند. در این جا به بعضی از پارامتر های پرکاربرد اشاره شده است.
User Id : شناسه کاربر
نام کاربر را برای اتصال مشخص می کند.
Password : کلمه عبور
رمز عبور کاربر را برای اتصال مشخص می کند.
Host : میزبان
نام یا آدرس IP میزبان پایگاه داده را مشخص می کند که به آن متصل شود.
Port : درگاه
درگاه سرور بانک اطلاعاتی را مشخص می کند که به آن متصل شود.
Database : پایگاه داده
نام پایگاه داده را مشخص می کند تا پس از باز شدن یک اتصال از این نام استفاده کند.
Connection Timeout : مهلت زمان اتصال
مشخص میکند که زمان انتظار مجاز هنگام تلاش برای برقراری اتصال چقدر است و اجازه صرف زمان بیشتر از مقدار مشخص شده را نمیدهد.
Ping Interval : فاصله پینگ
فاصله بین پینگ کردن سرور بانک اطلاعاتی و باز کردن مجدد اتصال در صورت نیاز را مشخص می کند . واحد این فاصله زمانی ثانیه است.
Compress : فشرده کردن
مقداری را مشخص میکند که نشان میدهد فشرده سازی دادههای انتقال یافته فعال است یا خیر.
Unicode : یونیکد
مقداری را مشخص می کند که نشان می دهد مجموعه کاراکتر UTF8 استفاده خواهد شد یا خیر.
Connection Lifetime : طول عمر اتصال
مقداری را مشخص می کند که نشان میدهد بازه زمانی برقراری اتصال چقدر است . واحد زمانی ثانیه است
Initialization Command : دستور مقدار دهی اولیه
یک دستور مخصوص پایگاه داده را مشخص می کند که باید بلافاصله پس از برقراری اتصال اجرا شود.
SSH Host : میزبان SSH
نام یا آدرس IP سرور SSH را مشخص می کند.
SSH Port : پورت SSH
شماره درگاه سرور SSH را برای اتصال مشخص می کند.
SSH User : کاربر SSH
شناسه کاربر را روی سرور SSH مشخص میکند.
Proxy Host : میزبان پروکسی
نام میزبان یا آدرس IP سرور پراکسی را که باید به آن متصل شود را مشخص می کند.
Proxy Port : درگاه پروکسی
شماره پورت سرور پراکسی را مشخص می کند.
Proxy User : کاربر پروکسی
نام حساب سرور پروکسی را مشخص می کند.
Plugin Dir : پوشه ی افزونه ها
آدرس پوشه ای که افزونه ها در آن قرار دارند را مشخص می کند.
Default Auth Plugin : افزونه احراز هویت پیش فرض
نام افزونه احراز هویت را برای استفاده مشخص می کند.
HTTP User : کاربر HTTP
نام کاربری را برای مجوز HTTP مشخص میکند.
HTTP Password : رمز عبور HTTP
رمز عبور مجوز HTTP را مشخص می کند.
HTTP Base64
تعیین می کند که آیا داده ها قبل از ارسال با درخواست POST به فرمت base64 کدگذاری شوند یا خیر.
HTTP Host : میزبان HTTP
نام میزبان یا آدرس IP سرور تونل HTTP را مشخص می کند.
HTTP Port : درگاه HTTP
شماره درگاه سرور تونل HTTP را مشخص می کند.
HTTP Content Length : طول محتوای HTTP
پارامتر هدر Content Length HTTP را مشخص می کند. این اندازه بدنه پیام به صورت بایت برای سرویس گیرنده و سرور است.