SQL توزیع شده

پایگاه داده **SQL توزیع شده** یک پایگاه داده رابطه ای واحد است که داده ها را در چندین سرور تکرار می کند. پایگاه های داده SQL توزیع شده به شدت سازگار هستند و بیشتر از یکنواختی در رک ها، مراکز داده، و شبکه های گسترده از جمله مناطق در دسترس بودن ابر و مناطق جغرافیایی ابر پشتیبانی می کنند. پایگاه های داده SQL توزیع شده معمولاً از الگوریتم های Paxos یا Raft برای دستیابی به اجماع در چندین گره استفاده می کنند.

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

## تاریخ
Google 's Spanner مفهوم مدرن پایگاه داده SQL توزیع شده را رایج کرد. گوگل پایگاه داده و معماری آن را در وایت پیپری در سال 2012 به نام «Spanner: Google's Globally-Distributed Database» توصیف کرد. این مقاله Spanner را توصیف می‌کند که از یک ذخیره‌سازی مقادیر کلیدی شبیه به جدول بزرگ به یک پایگاه داده چند نسخه‌ای زمانی تکامل یافته است که در آن داده‌ها در «جدول‌های نیمه رابطه‌ای طرح‌واره‌ای» ذخیره می‌شوند.

Spanner از ساعت‌های اتمی با الگوریتم Paxos برای دستیابی به اجماع در مورد وضعیت توزیع شده بین سرورها استفاده می‌کند. در سال 2010 و اجرای قبلی، ClustrixDB (اکنون MariaDB Xpand) از یک ابزار سخت افزاری به یک پایگاه داده نرم افزاری مبتنی بر Paxos منتقل شد و بعداً توسط MariaDB خریداری شد و به یک ارائه ابری SaaS به نام SkySQL اضافه شد. در سال 2015، دو مهندس گوگل شرکت را ترک کردند تا سوسک DB را ایجاد کنند که نتایج مشابهی را با استفاده از الگوریتم Raft بدون ساعت اتمی یا سخت افزار سفارشی به دست می آورد.

آچار اساساً برای موارد استفاده تراکنشی و سری زمانی استفاده می شود. با این حال، گوگل این تحقیق را با ادامه مقاله در مورد Google F1 که به عنوان یک پایگاه داده پردازش تراکنش/تحلیلی ترکیبی ساخته شده بر روی Spanner توصیف می کند، ادامه داد.

## معماری
پایگاه های داده SQL توزیع شده دارای ویژگی های کلی زیر هستند:

* همانندسازی همزمان
* ثبات معاملاتی قوی در حداقل مناطق در دسترس (به عنوان مثال انطباق با ACID )
* ساختار جلویی پایگاه داده رابطه ایبه این معنی که داده هایی که به صورت جداول با سطرها و ستون هایی مشابه هر RDBMS دیگری نمایش داده می شوند
* ذخیره سازی داده ها به صورت خودکار
* ذخیره سازی کلید-مقدار اساسی 
* پیاده سازی SQL بومی

به دنبال قضیه CAP ، پایگاه های داده SQL توزیع شده "CP" یا سازگار و تحمل پارتیشن هستند. از نظر الگوریتمی، آنها در دسترس بودن را قربانی می کنند زیرا شکست یک گره اولیه می تواند پایگاه داده را برای نوشتن در دسترس نباشد.

همه پیاده‌سازی‌های SQL توزیع‌شده به نوعی هماهنگ‌سازی زمانی برای تضمین ثبات نیاز دارند. به استثنای Spanner، بیشتر آنها از سخت افزار سفارشی برای ارائه ساعت های اتمی استفاده نمی کنند. Spanner می‌تواند نوشته‌ها را با ضمانت‌های زمانی همگام‌سازی کند. پیاده‌سازی‌های بدون سخت‌افزار سفارشی به سرورها نیاز دارند تا فاصله‌های ساعت را مقایسه کنند و احتمالاً دوباره خواندن را امتحان کنند.

## پیاده سازی SQL توزیع شده

## در مقایسه با NewSQL
CockroachDB، YugabyteDB و دیگران گاهی اوقات خود را به عنوان پایگاه داده NewSQL معرفی کرده اند. برخی از پایگاه‌های داده NewSQL مانند Citus و Vitess دارای معماری‌های اساسی متفاوتی هستند، اما به عنوان نمونه‌هایی از NewSQL توسط متیو آسلت که این اصطلاح را ابداع کرد، ذکر شد. در اصل، پایگاه‌های داده SQL توزیع‌شده از ابتدا ساخته می‌شوند و پایگاه‌های داده NewSQL شامل فن‌آوری‌های تکثیر و اشتراک‌گذاری است که به پایگاه‌های داده ارتباطی مشتری-سرور موجود مانند PostgreSQL اضافه شده است. برخی از کارشناسان پایگاه‌های داده DistributedSQL را زیرمجموعه‌ای خاص از پایگاه‌های داده NewSQL تعریف می‌کنند.

## منابع

# https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 

رده:اس‌کیوال