خانه --> پایگاه داده غیر رابطه ای (NOSQL) --> مروری بر پایگاه داده کاساندرا و بررسی نکات ضعف و قدرت این بانک اطلاعاتی

مروری بر پایگاه داده کاساندرا و بررسی نکات ضعف و قدرت این بانک اطلاعاتی

پایگاه داده کاساندرا یک سیستم انبار‌ه داده ی توزیع‌شده و کاملاً متن باز و رایگان است که برای مدیریت داده های عظیم تولید شده است. کاساندرا این داده ها را در بین سرورهای بسیاری گسترش‌ داده و انعطاف‌پذیری زیادی را برای توزیع داده به شما می‌دهد. همچنین شما می‌توانید ظرفیت نگهدارنده داده‌ی خود را به راحتی وارد کنید . به دلیل آنکه همه گره‌ها در یک خوشه هستند ، هیچ تنظیمات پیچیده برای مقابله با آن وجود ندارد.  پایگاه داده کاساندرا با جاوا نوشته شده است و ​Cassandra Query Languge (CQL) یک زبان شبیه SQL است که برای ارتباط با پایگاه داده Cassandra مورد استفاده قرار می‌گیرد.

تولید کننده اپایگاه داده کاساندرا آقایان Avinash Lakshman و Prashant Malik هستند. این بانک اطلاعات ابتدا در فیسبوک نوشته شد و در سال ۲۰۰۸ اولین نسخه ارائه شد و همین حالا برای بخش Facebook inbox Search مورد استفاده قرار می‌گیرد.

مزایایی پایگاه داده کاساندرا
مزایایی پایگاه داده کاساندرا

خصوصیات معماری پایگاه داده کاساندرا:

  • Open source
  • mix between a “Key-value Store” and a “Column-Orientated” database
  • Built with the understanding that hardware & software failures can happen
  • Peer to Peer Architecture
  • All nodes are the same
  • Read/Write Anywhere
  • Gossip Protocol
  • Commit Log Captures All Activity
  • Well suited for cloud deployments
  • Scale-Out Architecture
  • Written in Java and hence providing native Java support
  • Blend of Google BigTable and Amazon Dynamo
  • Flexible schemaless column-family data model
  • Support for structured and unstructured data
  • Decentralized, distributed peer-to-peer architecture
  • Multi-data center and rack-aware data replication
  • Location transparent
  • Cloud enabled
  • Fault-tolerant with no single point of failure
  • An automatic and transparent failover
  • Elastic, massively, and linearly scalable
  • Online node addition or removal
  • High Performance
  • Built-in data compression
  • Built-in caching layer
  • Write-optimized
  • Tunable consistency providing choices from very strong consistency to
  • different levels of “eventual consistency”
  • Provision of Cassandra Query Language(CQL
  • Easy Data Distribution
  • Always On Architecture – Continuous availability with no downtime
  • Faster linear-scale performance
  • Operational Simplicity – Administration is simplified
  • Transaction Support
  • No new equipment required – Very economical
  • Transparent Elasticity
  • Transparent Scalability
  • High Availability
  • Multi-Geography/Zone Aware
  • Data Redundancy
  • Compaction

مهمترین نقاط قوت و مزایای پایگاه داده کاساندرا:

  • سرعت بسیار زیاد در نوشتن داده ها
  • سرعت مطلوب در خواندن داده ها
  • High availability بسیار بالایی را بدون داشتن Single point of failure ارائه می‌دهد.
  • پشتیبانی از Map Reduce
  • قابلیت اضافه و یا کم سرورها برای نوشتن و خواندن به راحتی.
  • پشتیبانی از Replication و همچنین دارای قابلیت multi data center replication
  • این توانایی را دارد که میزان سازگاری (consistency) به صورت دلخواه تنظیم شود.
  • تحمل خطای بالا

 

نقاط ضعف پایگاه داده کاساندرا:

  • محدودیت‌هایی در مقادیر ستون،Collection یا تعداد cell ها که البته در نسخه های سری ۳ این ضعف بهبمود بسیار خوبی کرده است.
  • از دو قابلیتsubquery و join در SQL پشتیبانی نمی‌کند. که برای حا این مشکل باید مدل و شمای داده ای مناسب در کاساندرا تعریف کرد تا نیازی به این queryها نباشد.
  • ازcursor پشتیبانی نمی‌کند برای حا این ضعف باید  resultset های بزرگ باید به‌صورت دستی صفحه‌بندی (pagination) یا قطعه بندی شوند شوند.

میزان رشد مشتریان و محبوبیت کاساندرا (Cassandra)

در پست های قبل درباره پایگاه داده NOSQL کاساندرا مطالبی ارائه شد. در این قسمت به مشتریان کاساندرا و میزان محبوبیت آن میپردازیم. کاساندرا ابتدا در فیس بوک ایجاد شد. ترکیب Big Table  و Amazon Dynamo. کاساندرا در بدو تولید به منظور بهبود کارایی “Inbox Search” ایجاد شده بود. کاساندرا به عنوان یک پروژه منبع باز در ماه ژوئیه سال ۲۰۰۸ منتشر شد. این پروژه در ماه فوریه سال ۲۰۰۹ به پروژه آپاچی تبدیل شد و یک سال پس از آن یک پروژه سطح کامل شد. پس عملا کاساندرا در سال ۲۰۱۰ به عنوان یک محصول وارد بازار شده است.

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

  • Facebook
  • WalmartLabs
  • Constant Contact
  • Digg
  • AppScale
  • Netflix
  • Twitter
  • Zoho
  • IBM
  • FormSpring
  • Cisco WebEx
  • Rackspace
  • OpenX
  • Adobe
  • Comcast
  • eBay

پایگاه داده کاساندرا در حدی موفق عمل کرد که فقط در عرض یکسال نظر خیلی از غول های فناوری اطلاعات در فضای سایبری را به خود جلب کرد در زیر روند رشد مشتریان این پایگاه داده NOSQL را فقط در طول سال های ۲۰۱۱ تا ۲۰۱۲ بررسی می کنیم. هر چند امروز پایگاه داده کاساندرا جز پر مشتری ترین پایگاه داده های غیر رابطه ای است.

برخی از مشتریان کاساندرا در سال 2011
برخی از مشتریان کاساندرا در سال ۲۰۱۱
برخی از مشتریان کاساندرا در سال 2012
برخی از مشتریان کاساندرا در سال ۲۰۱۲

نصب دستی پایگاه داده کاساندرا از روی فایل فشرده tar.gz

نصب دستی پایگاه داده کاساندرا از این جهت  برای ما اهمیت دارد که ممکن است گاهی دسترسی به اینترنت برای نصب خودکار کاساندرا نداشته باشم  یا اینکه در مواردی اتصال سرورهای ما به اینترنت مجاز نباشد (که معمولا با این مورد در اکثر پروژه های دولتی با آن مواجه هستیم). در پست های قبلی نحوه نصب کاساندرا به صورت اتوماتیک مورد بررسی قرار گرفت. در این مبحث به صورت کوتاه و مختصر نصب پایگاه داده کاساندرا از رو فایل فشرده یا tar.gz پرداخته میشود. البته قبل انجام این کار باید JDK بر روی سیستم عامل نصب شده باشد. که طریق نصب دستی JDK از روی فایل تربال در پست های قبلی توضیح داده شده است.

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

نصب دستی پایگاه داده کاساندرا
نصب دستی پایگاه داده کاساندرا

مراحل نصب دستی پایگاه داده کاساندرا

ابتدا نسخه کاساندرا مورد نظر خود را به روش زیر دانلود کید.

ž$ -> wget http://archive.apache.org/dist/cassandra/3.10/apache-cassandra-3.10-bin.tar.gz

برای نصب نیاز به دسترسی سوپر یوزر داریم پس با دستور زیر این کار را انجام دهید.

 

دایرکتوری /opt برای نصب نرم افزارها و افزونه ها رزرو شده است پس با دستور زیر درون آن پوشه ای به نام cassandra درست کنید و وارد آن شوید.

با دستود زیر فایل فشرده کاساندرا در محل دایرکتوری ساخته شده از حالت فشرده خارج کنید.

 

در این مرحله برای اینکه مسیر محل فایل های اجرایی کاساندرا برای نرم افزار ها قابل شناسایی باشید مراحل زیر را انجام دهید. ابتدا دستور زیر را اجرا کنید.

 

اگر از خروجی دستور بالا محل نصب cassandra را دریافت نکردید. فایل bash.bashrc که در دایرکتوری etc قرار دارد را با دستور زیر باز کنید.

 

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

 

فایل را ببندید و دستور زیر را برای انتشار تغییرات اجرا کنید.

 

این بار با اجرا دستور زیر باید مسیر فایل های اجرایی کاساندرا را به عنوان خروجی دریافت کنید.

 

حال میتوانید با دستور زیر پایگاه داده کاساندرا را اجرا کنید. در صورت اخطار دسترسی در زمان اجرا به پوشه data در محل نصب کاساندرا دسترسی کامل بدهید.

 

به منظور بررسی صحت نصب و راه اندازی دستور زیر را اجرا کنید. در نتیجه اجرا باید پرت ۹۰۴۲ روئیت شود.

 

همچنین باید بتوانید با ابزار nodetood به کسندرا متصل شود و حالت آن را مشاهده کنید. برای این منظور دستور زیر را اجرا کنید.

کار با کاساندرا با زبان درخواست پرسوجو CQL یا (Cassandra Query Language)

در پست های قبل مراحل نصب کسندرا به تفضیل مورد بررسی قرار گرفت. در این مطلب به نحوه کار با کاسندرا با زبان پرسوجوی CQL ا اشاره میکنیم.

بعد از نصب پایگاه داده می­توان با استفاده از امکانات شل cli با آن کار کرد که در ادامه توضیح داده می­شود. برای وصل شدن به این پایگاه داده از دستور زیر استفاده کنید و البته با دستور EXIT می توانید خارج شوید.

/opt/apache-cassandra-3.11/bin# cqlsh localhost 9042

همان‌طور که گفته شد برای نوشتن پرس‌وجوها از زبان CQL که شبیه SQL است استفاده می‌شود اما به دلیل محدودیت‌هاییHigh availability  که برای Cassandra ایجاد می‌کند زبان آن را کمی تغییر داده‌اند. در ادامه قالب کلی چهار دستور اصلی شرح داده خواهد شد.

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
کار با کاساندرا با زبان درخواست پرسوجو CQL
کار با کاساندرا با زبان درخواست پرسوجو CQL

کار با کاساندرا با زبان درخواست پرسوجو CQL

ابتدا فرض کنید که جدول (یا خانواده ستون) user را به شکل زیر درست کرده ایدž. حالا چهار عمل اصلی را روی این جدول یا به عبارتی کالمن فامیلی تحقیق میکینم.

 

نمونه دستورهای SELECT

 

نمونه دستورهای INSERT

 

نمونه دستورهای UPDATE

 

نمونه دستورهای DELETE

 

البته قبل از انجام چهار عمل اصلی فوق بر روی داده ها ما باید از قبل جداول یا به عبارتی  KeySpace خود را ساخته باشیم که در ادامه با یک مثال دیگر به آن میپردازیم. KeySpace در کاساندرا معادل موجودیت Data Base در پایگاه داده های رابطه ای است. تمامی جداول یا COLUMN FAMILY های ما درون KeySpace ساخته خواهد شد. یک نود در یک کلاستر میتواند شامل یک یا بیشتر KeySpace باشد والبته بهتر است که شامل ین KeySpace باشد. دستور زیر برای ساخت KeySpace استفاده می­شود، دو خط انتهایی اختیاریست و با مقادیر پیش فرض پر خواهد شد:

 

نکته: هنگام کار با کاساندرا، استفاده از کارکتر سمی­کالن (;) در انتهای همه دستورات اجباری است و در غیر این صورت خطا ایجاد خواهد شد.

در رابطه با عبارت SimpleStrategy در پست های بعد توضیح داده خواهد شد. مقدار replication_factor عدد ۱ تهیین شده است که به معنی وجود فقط یک تکرار یا کپی از داده ها است.

دستور زیر تمامی KeySpaceهای موجود را با ویژگی­هایشان نشان می­دهد:

 

برای کار با KeySpace خاصی باید از دستور زیر استفاده کرده و به آن وصل شد:

 

 دستورات زیر نیز برای حذف ColumnFamily و KeySpace مورد نظر استفاده می­شوند:

 

هر کدام از دستورات بالا را می­توان از طریق فایل و با استفاده از دستور زیر نیز اجرا کرد:

نکته: هنگام کار با کاساندرا استفاده از کارکتر سمی­کالن (;) در انتهای همه دستورات اجباری است و در غیر این صورت خطا ایجاد خواهد شد.

پی نوشت:

شاید برخی از خوانندگان گرامی در رابطه با این که نام کاساندرا از کجا آمده است برایشان سوال ایجاد شود به همین جهت مطلب زیر را از ویکی پدیا کپی میکنم:

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

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *