Syntax | سینتکس
3.01K subscribers
410 photos
108 videos
35 files
379 links
Download Telegram
Syntax | سینتکس
چرا CQRC توضیح پست بعدی #CQRC @Syntax_fa
مقداری باید تاریخ کاری رو ورق بزنیم و برگردیم به عقب به اون روزهایی که یک نرم افزار بود و یک دیتابیس یک دیتابیس بود و کلی عملیات از یک طرف داده ها روی دیتابیس نوشته میشد و از یک طرف داده ها خونده میشد فکر کنید یک نرم افزار انبار در گذشته مینوشتیم یک برنامه با یک دیتابیس اسم دیتابیس هم مهم نیست #sqlserver یا #postgersql یا #oracle یا #nosql فرقی نمیکنه حالا در نظر بگیرید این انبار کالاهای ورودی رو داره با هندهلد و بارکد ثبت میکنه و یک محموله بزرگ داریم مثلا انبار دارو چندین نفر در حال ثبت داده هستند از طرف دیگر داروخانه درخواست تحویل کالا رو به انبار میفرسته و از طرف دیگه چندین مدیر داریم که گزارش میگیرن فکر کنید گزارشهای سنگین پی در پی میاد سمت دیتابیس دوستان این مثالها در مقیاس بسیار کوچیکه و فقط برای درک موضوع طرح میشن در ابعاد واقعی داستان متفاوته تو همین شرایط فکر کنید یک گزارش سنگین در حال انجامه روی یک تیبل و همون لحظه یک درخواست ثبت رکورد میاد و همون لحظه در خواست ویرایش چند رکورد میاد و گزارش همچنان فعاله در این صورت در سطح دیتابیس همزمانی پیش میاد که در مباحث دیتابیس کاملا توضیح دادم خوب چه کنیم ؟ چطور به داد کاربران و دیتابیس برسیم یک دیزاین پترن یا الگو چاره کار بود اسمش رو گذاشتن #cqrs جدا کردن کوئری و کامند یعنی دستورات برنامه رو به دو قسمت به شرح زیر تقسیم کنیم: #کامند: دستوراتی که وضعیت دیتابیس رو تغییر میده که شامل افزودن حذف و ابدیت میباشد #کوئری: دستوراتی که وضعیت رو تغییر نمیده و فقط خواندن اطلاعات میباشد برای این الگو راه کارهای زیادی وجود داره که یک راه کار استفاده از دو دیتابیس یکی برای نوشتن و دیگری برای خوندنه مثلا اگر فقط میخواید از #sqlserver استفاده کنید میتونید با استراتژی (Always On availability group)AG دو دیتابیس داشته باشید یکی برای نوشتن و دیگری برای خوندن یا اینکه از دیتا بیسهای متفاوت استفاده کنید سینک کردن دیتا بین دو دیتابیس خواندنی و نوشتنی باید به دقت حل شود برای نمونه در #netcore میتونیم از دیزاین #IMediatR بهره ببریم و در #springboot هم میتونیم خودمون پیاده سازی کنیم یا از #axonframework استفاده کنیم این الگو برای سیستمهایی خوبه که درخواستهای زیادی دارن این فقط یک الگو و الگوهای دیگری هم هست ولی جوابش رو پس داده

لینک:
https://www.linkedin.com/posts/activity-7158741967705632768-IGhG?utm_source=share&utm_medium=member_android

#CQRC

@Syntax_fa
😍6👍32
یکی از سوال هایی که تو اکثر مصاحبه ها ازتون پرسیده میشه ☹️
(البته با خوندن این پست قرار نیست سوالات مصاحبه رو بخوبی جواب بدید😒
ولی میتونه بهتون دید بده تا بیشتر در خصوصش بخونید و یاد بگیرید)

درباره SQL و NoSQL بگو
SQL (Structured Query Language)
و
NoSQL (Not Only SQL)
دو نوع اصلی از سیستم‌های مدیریت پایگاه داده (DBMS) هستند که هر یک دارای مزایا و معایب خود می‌باشند. تفاوت‌های اصلی بین این دو شامل موارد زیر می‌شود:

تفاوت‌های اصلی SQL و NoSQL

1. ساختار داده‌ها:
- SQL
: از جداول با ساختار ثابت استفاده می‌کند که در آن‌ها داده‌ها به صورت سطرها و ستون‌ها سازمان‌دهی می‌شوند. این ساختار معمولاً نیازمند طراحی دقیق و پیش‌فرضی است.

- NoSQL:
انعطاف‌پذیرتر است و می‌تواند از انواع مختلفی از مدل‌های داده شامل سندی، ستونی، گرافی و مبتنی بر کلید-مقدار استفاده کند. این امر به راحتی در برخورد با داده‌های غیرساختاریافته و تغییرپذیر کمک می‌کند.

2. زبان پرس و جو:
- SQL:
از یک زبان پرس و جوی ساختاریافته (SQL) استفاده می‌کند که استاندارد و ثابت است.
- NoSQL:
زبان پرس و جوی خاصی ندارد و هر سیستم NoSQL ممکن است از روش‌های متفاوتی برای دسترسی و مدیریت داده‌ها استفاده کند.

3. نرمال‌سازی داده‌ها:
- SQL:
داده‌ها به صورت نرمال با روابط تعریف‌شده بین جداول ذخیره می‌شوند.
- NoSQL:
نرمال‌سازی کمتری دارد و داده‌ها به صورت غیرنرمال و بدون نیاز به روابط پیچیده ذخیره می‌شوند.

شرایط استفاده از SQL

1. پیچیدگی و انسجام داده‌ها:
- زمانی که داده‌ها دارای روابط پیچیده و متعددی هستند و نیاز به حفظ انسجام داده‌ها داریم، SQL انتخاب مناسبی است.

2. استانداردهای صنعتی:
- SQL
به دلیل سابقه طولانی و استاندارد بودن در بسیاری از صنایع و برنامه‌ها مورد استفاده قرار می‌گیرد.

3. پشتیبانی تراکنش‌های ACID:
- اگر برنامه نیاز به پشتیبانی از تراکنش‌های اتمی، یکپارچه، ایزوله و پایدار (ACID) دارد، SQL بهترین انتخاب است.

شرایط استفاده از NoSQL

1. حجم بزرگ داده‌ها:
- در شرایطی که با حجم بزرگی از داده‌های غیرساختاریافته یا نیمه‌ساختاریافته روبه‌رو هستیم، NoSQL عملکرد بهتری دارد.

2. مقیاس‌پذیری بالا:
- اگر نیاز به مقیاس‌پذیری افقی و انعطاف‌پذیری بیشتری داریم، NoSQL مناسب‌تر است.

3. سرعت بالا و تأخیر کم:
- برای برنامه‌هایی که نیاز به سرعت بالا و تأخیر کم در خواندن و نوشتن داده‌ها دارند، NoSQL گزینه بهتری است.

دلایل استفاده از SQL


1. پایداری و قابلیت اعتماد:
- سیستم‌های SQL به دلیل پایبندی به استانداردهای ACID و ساختار منظم، قابلیت اعتماد بالایی دارند.

2. ابزارهای تحلیلی و گزارش‌گیری قوی:
- وجود ابزارهای متنوع برای تحلیل و گزارش‌گیری داده‌ها SQL را به گزینه‌ای مناسب برای تحلیل‌گران و مدیران داده تبدیل کرده است.

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

دلایل استفاده از NoSQL

1. انعطاف‌پذیری در مدل داده‌ها:
- NoSQL
اجازه می‌دهد داده‌ها به روش‌های مختلفی ذخیره و مدیریت شوند که این امر برای برنامه‌های مختلف انعطاف‌پذیری زیادی فراهم می‌کند.

2. سرعت و کارایی بالا:
- به دلیل ساختار غیرنرمال و مقیاس‌پذیری افقی، NoSQL می‌تواند عملیات را با سرعت بیشتری انجام دهد.

3. مدیریت داده‌های متنوع:
- NoSQL
مناسب برای مدیریت داده‌های متنوع و تغییرپذیر است که به سرعت در حال رشد و تغییر هستند.

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

Written by chatgpt 🍸

#sql #nosql

@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8