شاخه و زیر شاخه ها

تصاویر تصادفی

  • دریاچه ارواح
  • محمود کریمی در حرم رضوی

مطالب تصادفی

کاربرد XML و JSON در وب سرویس و API

از هر دو فرمت JSON و XML میتوان برای دریافت داده از سرور استفاده کرد. این دو فرمت توانایی کار با XMLHttpRequest را دارند و در اکثر زبان های برنامه نویسی مورد استفاده هستند. ساختاری ...

دوشنبه 30 خرداد 1401

جدید ترین مطالب

ایران دو ، ولز صفر

تاپای جان، برای ایران. جام جهانی فوتبال ۲۰۲۲ قطر

جمعه 04 آذر 1401

سه‏ شنبه 01 آذر 1401

محبوب ترین مطالب

نقطه ضعف آدم های دلپاک

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

سه‏ شنبه 18 آبان 1400

بهترین خودت باش!

تو مسئول خوب زندگی کردن خودت هستی و این خوب زندگی کردن رو به خودت بدهکاری! تو باید تصمیماتی بگیری که بهت قدرت بده و کمک کنه تا خودت و زندگیت رو بهبود ببخشی … انسان موفق کسی است ک ...

يکشنبه 10 بهمن 1400

service
معرفی آپاچی کاساندرا

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

کاساندرا

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

 

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

 

توزیع شده : سیستم توزیع شده، مجموعه ای از کامپیوترها هستند، که توزیع آن ها از دید کاربر مخفی ( Transparent ) است، بنابراین، کاربری که با یک سیستم توزیع شده کار میکند، این سیستم را همانند یک کامپیوتر مشاهده میکند.

 

در این نوع پایگاه داده ها باید به دو مفهوم Replication و Fragmentation توجه داشت.

 

Data Replication : تکثیر از داده‌ها به معنای تهیه نسخه یا نسخه‌های پشتیبان از اطلاعات میزبانی شده روی یک هاست و انتقال آن‌ ها به هاست های دیگر است تا در صورت بروز خرابی اطلاعات اصلی، یک کپی دائمی از اطلاعات در دسترس باشد. مکان این ذخیره‌سازها می‌تواند متغیر باشد. به این معنا که ممکن است در سرور های متفاوت حتی در کشورهای دیگر باشد. در این حالت اگر هر یک از ذخیره‌ سازها به هر دلیلی با مشکل رو برو شد، اطلاعات دیگر دستگاه‌ ها در دسترس بوده و سیستم قادر به بازگرداندن اطلاعات در کوتاه‌ ترین زمان خواهد بود.

 

Fragmentation :  تکه تکه سازی داده ها فرآیندی است که در آن تمامی اجزاء پایگاه داده به زیر جدول ها یا روابط فرعی مختلف تقسیم می شود تا داده ها در سیستم های مختلف ذخیره شوند. قطعات کوچک روابط فرعی یا جدول های فرعی را قطعه می نامند. این قطعات واحدهای داده منطقی نامیده می شوند و در سایت های مختلف ذخیره می شوند. باید مطمئن شد که قطعات به گونه ای هستند که بتوان از آنها برای بازسازی رابطه اصلی استفاده کرد.

 

مقیاس پذیری : یک ویژگی مطلوب برای یک فرایند یا شبکه یا سیستم است و به توانمندی یک سیستم در تطبیق خود با شرایط جدید و بزرگتر از قبل ( اجزاء بیشتر، اشیاء بیشتر، بزرگ‌ شدن، افزایش حجم کار ) اشاره می‌کند.


برای مثال با افزایش تعداد کاربران سیستم یا بالا رفتن حجم درخواست ها از سرور سیستم دچار اشکال نشود و بتواند به صورت کامل پاسخگوی درخواست ها باشد.

برای مثال در web application ها از Load Balancing برای این کار استفاده می کنند. یا در پایگاه های داده از connection pool ها.

 

در بانک های اطلاعاتی دو نوع مقیاس پذیری داریم.


مقیاس پذیری افقی ( Horizontal ) : در این نوع مقیاس پذیری تعداد گره های موجود در سیستم را بیشتر کنیم مثلا سرور های جدید به شبکه اضافه میکنیم. معماری بانک اطلاعاتی باید امکان استفاده از سرور های جدید را داشته باشد. پایگاه داده های Cassandra و Mongodb از این روش استفاده می کنند.

 

مقیاس پذیری عمودی ( Vertical ) : در این نوع مقیاس پذیری با اضافه کردن توان پردازش گر سیستم یا ارتقاء میزان حافظه یک یا چند سرور باعث بالا رفتن توان پاسخگویی مجموع سرور های بانک اطلاعاتی می شویم. بانک MySql از این روش استفاده می کند.

 

پایداری سرویس ( High Availability ) : همیشه در دسترس بودن ، توانایی یک سیستم برای کار مداوم بدون از کار افتادن برای یک دوره زمانی تعیین شده است. پایداری سرویس یک استاندارد است که مشخص میکند یک سیستم بدون کوچکترین مشکل برای همیشه در دسترس است. دستیابی به این استاندارد بسیار دشوار است. به این معنی که سیستم یا محصول در 99.999٪ مواقع در دسترس است.

 

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

 

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

  • در سال 2008 توسط این شبکه اجتماعی به صورت متن باز ارائه شد.
  • در سال 2009 این بانک اطلاعاتی توسط آپاچی به عنوان یک بانک اطلاعات مورد قبول پذیرفته شد.
  • از سال 2010 به عنوان پروژه سطح کلان آپاچی مطرح شد

 

 

ویژگی های کاساندرا

 

Elastic Scalability : بسیار مقیاس‌پذیر است، امکان اضافه کردن سخت افزار بیشتر برای پاسخگویی به مشتریان و داده‌های بیشتر بر اساس نیاز وجود دارد.

 

Always on Architecture : نقطه شکست ندارد و به‌صورت دائمی برای برنامه‌های کاربردی کسب‌ و‌ کار در دسترس است.

 

Fast Linear-Scale Performance : به‌صورت خطی مقیاس‌ پذیر است، برای مثال خروجی را برای تعداد نودهای درون کلاستر افزایش داده در نتیجه زمان پاسخ سریع‌ تر می‌شود.

 

Flexible Data Storage : تمامی فرمت‌ های داده از جمله ساخت‌ یافته، نیمه ساخت‌ یافته و حتی بدون ساختار را پشتیبانی می‌کند. به‌صورت دینامیک می‌تواند ساختار داده‌ها را بر اساس نیاز شما تغییر دهد.

 

Easy Data Distribution : قابلیت توزیع کردن داده‌ها بر اساس نیاز را به‌ وسیله رپلیکیت کردن داده‌ها در دیتاسنترهای مختلف دارد. 


Transaction support : از ACID پشتیبانی می‌کند. ACID یکی از ویژگی های است که یک Transaction باید داشته باشد. 

ACID سرنام واژگان Atomicity Consistency Isolation Durability بحساب می آید.

 

Atomicity : بمعنی اتمی بودن است و نشان می دهد که بخشی از Transaction به تنهایی قابل اجرا نمی باشد.


Consistency : بمعنی ثبات و سازگاری است و تضمین می کند که پس از اجرای موفقیت آمیز Transaction و یا شکست آن داده ها در حالت سازگار و معتبر قرار می گیرند.


Isolation : بمعنی ایزولاسیون ( جداسازی ) است و تضمین می کند که داده های درگیر در Transaction، توسط سایر پروسه ها غیرقابل تغییر هستند.


Durability : بمعنی دوام (بقا) است و تضمین می کند که عوامل ناخواسته مثل رفتن برق و ... باعث حذف تأثیر Transaction نهایی شده ( Commit ) نشوند.

 

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

 

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

 

اجزای کاساندرا

 

Node : جایی که دیتا در آن ذخیره می‌شود. 
Data center : مجموعه‌ای از نودهای مرتبط به هم است. 
Cluster : مولفه‌ای است که یک یا چند دیتاسنتر را شامل می‌شود. 
Commit log : یک مکانیسم بازیابی خرابی است. تمامی عملیات نوشت در Commit log نوشته می‌شود.

Mem-table : یک ساختار داده مقیم در حافظه است. بعد از Commit log ،داده در Mem-table نوشته می‌شود. 
SSTable : یک فایل دیسک است که داده آن از Mem-table زمانی که محتوای آن به مقدار آستانه رسیده باشد، پر می‌شود. 
Bloom filter : یک الگوریتم سریع غیر قطعی است برای آزمون عضویت المان‌ها در یک مجموعه. نوع خاصی از Cash است. این فیلترها بعد از هر پرس‌ و جو اجرا می‌شوند.

 

نصب کاساندرا

ابتدا به سایت apache.org وارد می شویم. و از لیست محصولات آن که در پایین صفحه آمده است وارد سایت کاساندرا به آدرس cassandra.apache.org می شویم و در این صفحه روی دکمه دانلود کاساندرا کلیک می کنیم. وارد صفحه دانلود کاساندرا می شویم و سورس های مربوط به این پایگاه داده را دریافت کنیم. 
اکیدا پیشنهاد میشود که کاساندرا روی سیستم عامل لینوکس نصب شود تا بیشترین بازدهی را داشته باشد.
 

سید احمد ایمانی
ارسال توسط : سید احمد ایمانی

سرپرست تیم، مدیر پروژه و برنامه نویس ارشد. بیش از 20 سال تجربه فعالیت در زمینه های مختلف برنامه نویسی و تولید نرم افزار. سرپرستی واحد های پشتیبانی، IT، مالتی مدیا، نرم افزار. مدیریت پروژه های چند رسانه ای، تعاملی، آزمون، وب سرویس، وب سایت و برنامه های ویندوزی. برنامه نویسی سمت سرور، کلاینت، پایگاه داده، سرویس و چند رده