یکی از سوالات متداول – از چه پایگاه داده ای باید استفاده کنم …


SQL مخفف Structured Query Language است. این نخستین بار در دهه 1970 توسط تیمی از محققان آی بی ام ساخته شد ، از طرف دیگر پایگاه داده های NoSQL برای اولین بار در سال 1998 توسط کارلو استروزی استفاده شد..

عمده ترین تفاوت بین این دو سیستم پایگاه داده (DB) در این است که SQL رابطه ای است و NoSQL غیر رابطه ای است..

بگذارید عمیق به این دو پایگاه داده برویم تا در آینده تصمیم گیری خود را بهتر انجام دهیم.

ساختار بانک اطلاعاتی

بیایید در مورد ساختار صحبت کنیم.

SQL

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

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

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

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

در DB ما می توانیم یک جدول کاربر داشته باشیم که به شکل زیر ساخته شده است,

user_table
—————————————————-
شناسه | نام | پست الکترونیک
—————————————————–
1 ادریس [ایمیل محافظت شده]

همچنین ، می توانستیم یک میز سفارش داشته باشیم

سفارشات
———————————————————————————
شناسه | user_id | شماره سفارش
———————————————————————————
1 1 20000001

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

برای بسیاری از موقعیت ها ، یک جدول اضافی با نام جدول محوری معمولاً درگیر است. این کار باعث می شود تا چندین رکورد به یکدیگر نقشه برداری شوند. با استفاده از مثال بالا ما باید,

user_table
————————————————————————————-
شناسه | نام | پست الکترونیک
————————————————————————————-
1 ادریس [ایمیل محافظت شده]

و جدول سفارش خواهد بود

سفارشات
———————————————————
شناسه | شماره سفارش
———————————————————
1 2000001

و سپس جدول Pivot هر دو شناسه را به عنوان کلیدهای خارجی نگه می دارد.

user_order_table
——————————————————————————
شناسه | order_id | شناسه کاربری
——————————————————————————
1 1 1

بر اساس این ساختار ارائه شده توسط SQL ، شما به راحتی می توانید اتصالات را بین جداول بنویسید که داده های جداول مختلفی را که در یک پرس و جو به هم وصل شده اند ، فراهم می کند..

NoSQL

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

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

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

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

مجموعه کاربران می تواند به عنوان تعریف شود,

{id: 1 ، نام: ‘idris’ ، ایمیل: ‘[ایمیل محافظت شده]

و می توان مجموعه سفارشات را به عنوان تعریف کرد,

{id: 1، order_number: 2000001، user_id: 1}

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

{id: 1، order_number: 200001، user {id: 1، name: ‘idris’، email: ‘[ایمیل محافظت شده]‘}}

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

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

با این حال ، برای برنامه ای که نیاز به نوشتن زیادی داشته باشد (تقریباً 10،000 نوشتن در هر ثانیه) در این مقیاس ، ایده خوبی نیست که گزینه NoSQL را در جایی که باید همان داده ها را در چندین مکان بنویسید داشته باشید. در این شرایط ، گزینه SQL احتمالاً مناسب تر است ، جایی که شما در همه جدول ها روابط موجود دارید و لازم نیست همان داده ها به طور مکرر در چندین مکان نوشته شوند ، به روزرسانی داده ها در یک مکان می تواند از طریق خروجی در دسترس جداول دیگر باشد. ارتباط. البته این بدان معنا نیست که هر یک از این پایگاه داده ها نمی توانند مقیاس را اداره کنند.

مقیاس گذاری

بیایید بررسی کنیم که مقیاس گذاری چگونه کار می کند.

SQL

SQL DB ها را نمی توان به صورت افقی بلکه فقط به صورت عمودی ترسیم کرد. این حتی به چه معنی است?

مقیاس گذاری افقی به معنای تقسیم داده از یک DB به چندین پایگاه داده برای سهولت بار است. با این وجود داده های SQL به دلیل ماهیت دقیق آن نمی توانند روی DB های جداگانه تقسیم شوند. مناسب برای مقیاس کردن SQL DB افزایش فضای CPU ، Memory و Disk از سرور DB موجود است و این به معنی مقیاس گذاری عمودی آن است..

مقیاس بندی افقی

مقیاس بندی عمودی


NoSQL

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

نکته مهمی که باید به آن توجه داشت: وقتی مقیاس بندی می شود ، هر دو پایگاه داده SQL و NoSQL می توانند بطور مؤثر مقیاس بندی شوند. با این حال ، برای SQL DBs ، مقیاس بندی عمودی می تواند یک محدودیت باشد. یک سرور DB تنها محدودیتی در میزان توان محاسباتی است که می تواند داشته باشد.

همچنین این نکته را باید توجه داشته باشید که در بیشتر برنامه هایی که شما ایجاد خواهید کرد ، ممکن است حداکثر توانایی محاسباتی سرور شما وجود نداشته باشد ، اما این را در خاطر داشته باشید مفید است. با این حال ، برای برنامه های کاربردی مشاغل بزرگ که SQL را پیاده سازی می کنند ، گزینه محبوب برای ضرب و شتم این محدودیت توسط Shading است.

Shading چیست?

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

نمونه بانک اطلاعات

SQL

  • MySQL – یک پایگاه داده منبع باز بسیار مشهور است. به راحتی می توانید از پایگاه داده مورد نظر برای بسیاری از توسعه دهندگان PHP ، با Node.js ، C # ، C ++ ، Java ، Perl ، Ruby و Python استفاده کنید..
  • MSSQL – مایکروسافت SQL ثبات زیادی را فراهم می کند زیرا توسعه آن مستقیماً از مایکروسافت است ، که همچنین از نظر بازیابی در برابر بلایای حامی پشتیبانی می کند.
  • MariaDB – این ساخته شده توسط MySQL توسط MySQL ساخته شده است و قصد دارد MariaDB را به عنوان یک نسخه رایگان برای همیشه حفظ کند..
  • PostgresSQL – یک پایگاه داده منبع باز بسیار مشهور است. خود را به عنوان پیشرفته ترین پایگاه داده منبع باز در جهان افتخار می کند
  • Oracle – این معمولاً متناسب با راه حل های شرکت Oracle است که محدودیت هایی در نسخه رایگان آن دارد.

NoSQL

  • MongoDB – احتمالاً شناخته شده ترین NoSQL DB ، در بین برنامه نویسان برنامه هایی که با پشته MERN کار می کنند (MongoDB ، Express ، React ، Node) یا MEAN stack (MongoDB ، Express ، Angular ، گره).
  • Firebase – معرفی شده در سال 2011 و توسط Google در سال 2014 به دست آمده ، توسط توسعه دهندگان برنامه های وب و موبایل بسیار مورد استفاده قرار می گیرد.
  • Apache Couch DB – NoSQL DB مبتنی بر اسناد که داده ها را JSON ذخیره می کند.
  • Redis: این NoSQL DB است که احتمالاً بیشتر برای استفاده در ذخیره داده ها با زمان اختیاری برای زندگی شناخته شده است. همچنین به دلیل سرعت آن بسیار مشهور است.

نتیجه

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

برچسب ها:

  • بانک اطلاعات

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me