Elham Beydaghi
Elham Beydaghi
خواندن ۲ دقیقه·۳ سال پیش

Cassandra

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

کاساندرا ویژگی های جالبی داره که موجب شد خیلی سریع وارد بازار کار بشه از جمله:

1.تحمل پذیریش در مقابل خطا بالاس

2.مقیاس پذیره

3.متن بازه

4.ستون گراس(column oriented)

کاساندرا مثل SQL ، جوین(join) نداره و از transaction استفاده نمیکنه.همچنین به ندرت از دومین ایندکس استفاده میکنه. یه ویژگی جالب کاساندرا تلاش اون برای consistent (سازگار) بودن هست . حالا سازگار بودن یعنی چی؟ سازگار بودن یکی از سه مفهوم تئوری CAP هستش که بعدا مفصلا بهش میرسیم. اما به طور خلاصه بخوام بگم اینه که هروقت دستور خوندن از دیتابیس رو بدم، up to date ترین دیتا رو به من برمیگردونه. این قضیه وقتی مطرح میشه که دیتا روی یک پارتیشن write بشه ولی روی replica های دیگه اش اپدیت نشده باشه،حالا کاساندرا میاد به ما تضمین میکنه که درسته الان دیتام اپدیت نیس، ولی در یه مدت زمان کوتاه همشون اپدیت میشن که خب همین سیاست، مکانیزم های مختلفی رو دربرمیگیره.

کاساندرا به ما دو تا مفهوم از سه تا مفهوم تئوری CAP رو تضمین میکنه:

  1. همه ی عملیات هامون خروجی موفقیت امیر داشته باشن و نریم تو باقالیا (مثل وقتی که یه درخواستی به دیتابیس میدم ولی دیتا تو دیتابیس نیس. (نقض availability))
  2. تحمل خرابی پارتیشن ها رو داره. مثلا وقتی نتورک ام مشکلی پیش اومد واسش، کاساندرا بتونه جواب ریکوئستامو بده.

معماری کاساندرا peer to peer هست. که خب اگه مشتاق باشین یه پست هم درمورد اون میزاریم که کلا این معماری چیه.

هر table در کاساندرا یه primary key داره که تو پست های بعدی درمورد طراحیش صحبت میکنیم.

کاساندرا به صورت اتوماتیک پارتیشن بندی و فرآیند replicate کردن رو انجام میده. همچنین وقتی یه ریکوئست از سمت کلاینت میاد، این ریکوئست به صورت رندوم به یکی از ماشین ها تحویل داده میشه و اون ماشین حالت master (در معماری master-slave) رو پیدا میکنه و وظیفه اش اینه که بفهمه دیتایی که ریکوئست میخواد روی کدوم ماشین ها قرار داره، بعد شروع به ریکوئست زدن به ماشین های دیگه میکنه و دیتا مورد نظر رو درمیاره و به کلاینت تحویل میده.(این قضیه مرتبط با نوع معماریش هست که منجر میشه توازن بار بین همه ی نود ها برقرار بشه.)

همین دیگه:) خوشحال میشم سوالاتونو بپرسین. اصطلاحات نامفهوم این متن رو هم در اسرع وقت توضیح میدم.


cassandradatabasenosqlbigdataapache
در تلاش برای computer scientist شدن:)
شاید از این پست‌ها خوشتان بیاید