چگونه تفاوت بین SQL و NoSQL را برای مادربزرگ خود توضیح دهید

چگونه تفاوت بین SQL و NoSQL را برای مادربزرگ خود توضیح دهید

یکی از مهمترین تصمیماتی که یک توسعه دهنده می گیرد این است که از کدام پایگاه داده استفاده کند. برای سال‌ها، گزینه‌ها به گزینه‌های مختلف پایگاه داده رابطه‌ای محدود می‌شدند که از زبان پرس و جو ساختاریافته (SQL) پشتیبانی می‌کردند. اینها عبارتند از MS SQL Server، Oracle، MySQL، PostgreSQL، DB2 و بسیاری دیگر.

در طی 15 سال گذشته، بسیاری از پایگاه های داده No-SQL جدید در بازار ظاهر شده اند. اینها شامل فروشگاه‌های با ارزش کلیدی مانند Redis و Amazon DynamoDB، پایگاه‌های داده ستونی گسترده مانند Cassandra و HBase، فروشگاه‌های اسناد مانند MongoDB و Couchbase، و پایگاه‌های داده گراف و موتورهای جستجو مانند Elasticsearch و Solr می‌شوند.

در این مقاله سعی می کنیم SQL و NoSQL را بدون وارد شدن به عملکرد آنها درک کنیم.
به علاوه، در این فرآیند کمی سرگرم خواهیم شد.

توضیح SQL برای مادربزرگ

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

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

خوشبختانه، من باهوش ترین نوه های شما هستم، می توانم کمک کنم. بنابراین من به خانه شما می آیم، چند ورق کاغذ بیرون می آورم و از شما می خواهم قبل از شروع، مقداری کلوچه بپزید.

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

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

1
با دیلم باز کردن
09-22-1992
09-01-2019
L
شکلات نعنایی
غلط

2
جسیکا
07-21-1992
02-22-2018
M
جاده سنگی
درست

... ادامه لیست!

لیست نوه ها

بعد از مدتی همه چیز را متوجه می شوید و ما تقریباً با لیست تمام شده ایم! با این حال، شما به من رو می کنید و می گویید: "فراموش کردیم فضایی برای همسر، سرگرمی ها، نوه ها اضافه کنیم!" اما نه، ما فراموش نکرده ایم! این کار بیشتر دنبال می شود و به یک ورق کاغذ جدید نیاز دارد.

بنابراین من یک تکه کاغذ دیگر بیرون می کشم و روی آن لیست را می نامیم همسران. دوباره ویژگی هایی را که برای ما مهم هستند به ابتدای لیست اضافه می کنیم و شروع به اضافه کردن در ردیف ها می کنیم.

id
شناسه_نوه
نام
جشن تولد

1
2
جان
06-01-1988

2
9
Fernanda
03-05-1985

... همسران بیشتر!

لیست همسران

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

بعد از دوجین کوکی، به یک چرت نیاز دارم. "میشه ادامه بدی مادربزرگ؟" دارم میرم چرت بزنم

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

شناسه_نوه
سرگرمی

1
دوچرخه سواری

4
دوچرخه سواری

3
دوچرخه سواری

7
در حال اجرا

11
دوچرخه سواری

...بیا ادامه بدهیم!

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

id
سرگرمی

1
دوچرخه سواری

2
در حال اجرا

3
شنا

... سرگرمی های بیشتر!

لیست سرگرمی ها

هنگامی که لیست سرگرمی های خود را داشتیم، لیست دوم خود را ایجاد می کنیم و آن را "سرگرمی های نوه ها'.

شناسه_نوه
hobby_id

4
1

3
1

7
2

…بیشتر!

فهرست کلی سرگرمی های نوه ها

پس از این همه کار، مادربزرگ اکنون یک سیستم حافظه جالب برای پیگیری خانواده بزرگ و شگفت انگیز خود دارد. و سپس - برای اینکه من را بیشتر نگه دارد - این سؤال جادویی را می پرسد: "از کجا یاد گرفتی که این همه کار را انجام دهی؟"

پایگاه های داده رابطه ای

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

یکی از ویژگی های متمایز محبوب ترین پایگاه داده های رابطه ای، زبان پرس و جو SQL (زبان پرس و جو ساختاریافته) است. به لطف آن، اگر مادربزرگ سیستم حافظه خود را به رایانه منتقل می کرد، می توانست به سرعت به سؤالاتی مانند: "چه کسی سال گذشته به من سر نزده است، متاهل است و هیچ سرگرمی ندارد؟"

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

برخی از ویژگی های کلیدی MySQL:

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

حالا فراموشش کن همه.

توضیح NoSQL برای مادربزرگ

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

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

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

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: "به نظر می رسد همه چیز آماده است!"
مادربزرگ: "صبر کن، بقیه نوه ها چطور؟"
Я: "بله دقیقا. سپس برای هر کدام یک صفحه اختصاص می دهیم.»
مادربزرگ: "آیا باید همان اطلاعاتی را که برای شما انجام دادم برای همه بنویسم؟"
Я: «نه، فقط اگر بخواهی. بگذار نشان دهم."
با برداشتن خودکار مادربزرگم، ورق را ورق می زنم و به سرعت اطلاعاتی را درباره دختر عموی مورد علاقه ام می نویسم.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

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

وقتی همه چیز تمام شد، او این سوال جادویی را می پرسد: "از کجا یاد گرفتی که این همه کار را انجام دهی؟"

پایگاه های داده NoSQL

بسیاری وجود دارد پایگاه های داده NoSQL ("نه فقط SQL"). در مثال هایمان نشان دادیم پایگاه داده اسناد. پایگاه های داده NoSQL داده ها را به گونه ای مدل می کنند که روابط جدول مورد استفاده در پایگاه های داده رابطه ای را حذف می کند. این پایگاه‌های اطلاعاتی در اوایل دهه ۲۰۰۰ در میان شرکت‌هایی که به دلیل نیازهای مقیاس‌پذیری محض خود به خوشه‌بندی پایگاه داده مبتنی بر ابر نیاز داشتند، محبوب شدند (مانند فیس‌بوک). در چنین برنامه هایی، ثبات داده ها بسیار کمتر از عملکرد و مقیاس پذیری اهمیت داشت.

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

ویژگی های کلیدی NoSQL:

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

مقایسه تفصیلی

MySQL نیاز به یک طرح واره تعریف شده و ساختار یافته دارد.
NoSQL به شما امکان می دهد هر داده ای را در یک "سند" ذخیره کنید.

MySQL توسط یک جامعه بزرگ پشتیبانی می شود.
NoSQL یک جامعه کوچک و به سرعت در حال رشد دارد.

مقیاس NoSQL آسان است.
MySQL به قابلیت مدیریت بیشتری نیاز دارد.

MySQL از SQL استفاده می کند که در بسیاری از انواع پایگاه داده استفاده می شود.
NoSQL یک پایگاه داده با طراحی با پیاده سازی های محبوب است.

MySQL از زبان استاندارد پرس و جو (SQL) استفاده می کند.
NoSQL از زبان پرس و جوی استاندارد استفاده نمی کند.

MySQL ابزارهای گزارش دهی بسیار خوبی دارد.
NoSQL چندین ابزار گزارش دهی دارد که استانداردسازی آنها دشوار است.

MySQL ممکن است مشکلات عملکردی برای داده های بزرگ داشته باشد.
NoSQL عملکرد عالی را روی داده های بزرگ ارائه می دهد.

افکار 8 پایه

شرکت 8 پایه، جایی که من کار می کنم، فضای کاری هر پروژه را با یک پایگاه داده رابطه ای Aurora MySQL که روی AWS میزبانی شده است، نیرو می دهیم. در حالی که NoSQL یک انتخاب منطقی است زمانی که الزامات برنامه شما نیاز به عملکرد و مقیاس پذیری بالایی دارد، ما معتقدیم که سازگاری قوی داده ارائه شده توسط DBMS هنگام ساخت برنامه های SaaS و سایر نرم افزارهای تجاری ضروری است.

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

درباره توسعه با Aurora، Serverless و GraphQL با 8base.com بیشتر بیاموزید اینجا.

منبع: www.habr.com

اضافه کردن نظر