پرش به محتوا

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 توزیع شده[ویرایش]

فروشنده API
آمازون شفق قطبی PostgreSQL و MySQL
Citus Data (Microsoft) PostgreSQL
سوسک DB PostgreSQL -like
آچار گوگل SQL مانند اختصاصی
خوشه MySQL MySQL
NuoDB SQL اختصاصی
YugabyteDB PostgreSQL و کاساندرا CQL مانند
TiDB MySQL مانند
MariaDB XPand MariaDB
Teradata SQL مانند اختصاصی
YDB [۱] SQL مانند اختصاصی

در مقایسه با NewSQL[ویرایش]

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

منابع[ویرایش]

  1. https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf
  2. Higginbotham, Stacey (May 3, 2010). "Clustrix Builds the Webscale Holy Grail: A Database That Scales". gigaom.com.
  3. "MariaDB acquires Clustrix". 20 September 2018.
  4. Baer (dbInsight), Tony. "For MariaDB, it's time to put the pieces together". ZDNet.
  5. Morgan, Timothy Prickett (February 22, 2017). "Google Spanner Inspires CockroachDB To Outrun It". The Next Platform.
  6. The future of databases: distributed SQL & MariaDB ® (به انگلیسی), retrieved 2022-12-21
  7. "The Architecture of a Distributed SQL Database" – via www.youtube.com.
  8. "Living Without Atomic Clocks". Cockroach Labs. April 21, 2020.
  9. "YDB is an open-source Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions". ydb.tech.
  10. "What we talk about when we talk about NewSQL — Too much information".
  11. "SQL vs. NoSQL Databases: What's the Difference?". www.ibm.com. 12 June 2022.
  12. Prabagaren, Gokul (October 30, 2019). "NewSQL — The Next Evolution in Databases". Medium.
  1. "YDB is an open-source Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions". ydb.tech.