پايگاه داده کاساندرا، روش نصب و بررسی نقاط ضعف و قوت

پايگاه داده کاساندرا یک سیستم انبار‌ه داده ی توزیع‌شده و کاملاً متن باز و رایگان است که برای مدیریت داده های عظیم تولید شده است. کاساندرا این داده ها را در بین سرورهای بسیاری گسترش‌ داده و انعطاف‌پذیری زیادی را برای توزیع داده به شما می‌دهد. همچنین شما می‌توانید ظرفیت نگهدارنده داده‌ی خود را به راحتی وارد کنید . به دلیل آنکه همه گره‌ها در یک خوشه هستند ، هیچ تنظیمات پیچیده برای مقابله با آن وجود ندارد.  پايگاه داده کاساندرا با جاوا نوشته شده است و ​Cassandra Query Languge (CQL) یک زبان شبیه SQL است که برای ارتباط با پایگاه داده Cassandra مورد استفاده قرار می‌گیرد. تولید کننده اپايگاه داده کاساندرا آقایان Avinash Lakshman و Prashant Malik هستند. این بانک اطلاعات ابتدا در فیسبوک نوشته شد و در سال ۲۰۰۸ اولین نسخه ارائه شد و همین حالا برای بخش Facebook inbox Search مورد استفاده قرار می‌گیرد.

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

Cassandra یک پایگاه داده توزیع شده و توسعه داده شده با زبان جاوا است. این پایگاه داده برای مدیریتو کلان داده (Big Data) کاربرد متنوعی دارد. Cassandra هیچ نقطه خاص خرابی (Single Point Of Failure) ندارد و به راحتی میتواند بر روی چندین کامپیوتر توزیع شود. این پایگاه داده توسعه پذیر خطی (Linear Scalable) است و دسترس پذیری بالایی (High Availability) دارد. Cassandra برای کار با داده های بسیار بزرگ طراحی شده است تا کاربران بتوانند این داده ها را به راحتی و با سرعت بالا دریافت کنند. در Cassandra از معماری Master/Slave استفاده نشده است. زیرا در این معماری معمولا گره Master (سرپرست) به دلیل کارکرد زیاد به گلوگاه سیستم (Bottleneck) تبدیل می شود. یعنی در صورتی که master از کار بیفتد یا کند شود، کل سیستم از کار می افتد یا کند می شود. برای همین در Cassandra چیزی به نام Master وجود ندارد و تمامی گره ها (کامپیوترها)ی متصل به هم، مانند یکدیگر رفتار می کنند که اصطلاحا به آن masterless میگویند. داده ها در گره های مختلف به صورت غیرهزمان (asynchronous) ولی با تاخیر کم تکرار (Replicate) می شوند. در زیر به عناوین ویژگی های کاساندرا اشاره شده است.

  • 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 ها که البته در نسخه های سری 3 این ضعف بهبمود بسیار خوبی کرده است.
  • از دو قابلیتsubquery و join در SQL پشتیبانی نمی‌کند. که برای حا این مشکل باید مدل و شمای داده ای مناسب در کاساندرا تعریف کرد تا نیازی به این queryها نباشد.
  • ازcursor پشتیبانی نمی‌کند برای حا این ضعف باید  resultset های بزرگ باید به‌صورت دستی صفحه‌بندی (pagination) یا قطعه بندی شوند شوند.

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

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

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

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

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

برخی از مشتریان کاساندرا در سال 2011
برخی از مشتریان کاساندرا در سال 2011

 

برخی از مشتریان کاساندرا در سال 2012
برخی از مشتریان کاساندرا در سال 2012

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

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

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

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

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

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

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

sudo su

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

mkdir /opt/cassandra
cd /opt/cassandra

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

ž$ -> tar –xvzf apache-cassandra-3.10-bin.tar.gz  -C cassandra

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

žecho $CASSANDRA_HOME

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

žnano etc/bach.bashrc

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

CASSANDRA_HOME=/opt/cassandra/apache-cassandra-3.10

PATH=$PATH:$CASSANDRA_HOME/bin

export CASSANDRA_HOME

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

žsource etc/bach.bashrc

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

ž[root@liptan-pc ~]# $CASSANDRA_HOME

/opt/cassandra/apache-cassandra-3.10

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

ž$ -> cassandra -f

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

ž$ -> netstat -ntlp

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

ž$ -> nodetool status

کار با کاساندرا با زبان درخواست پرسوجو 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

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

CREATE TABLE user

(

  id uuid,

  first_name varchar,

  last_name varchar,

  age int,

  city varchar,

PRIMARY KEY (id, city, age)

);

 

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

SELECT * FROM users;

SELECT COUNT(*) FROM users;

SELECT * FROM users LIMIT 25;

SELECT * FROM users WHERE city = ‘Boston’   (city must be defined as a primary key or index)

 

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

INSERT INTO users (id, first_name, last_name, age, city)

VALUES (now(), ‘John’, ‘Doe’, ‘33’, ‘Seattle’)

INSERT INTO users (id, first_name, last_name, emails)

  VALUES('frodo', 'Frodo', 'Baggins', {'f@baggins.com', 'baggins@gmail.com'});

 

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

UPDATE users SET age = 34 WHERE id = cfd66ccc-d857-4e90-b1e5-df98a3d40cd6

UPDATE users SET age = 34, city = ‘Portland’ WHERE id = cfd66ccc-d857-4e90-b1e5-df98a3d40cd6

ž

UPDATE users  SET todo =  { '2012-9-24' : 'enter mordor',  '2012-10-2 12:00' : 'throw ring into mount doom' }  WHERE id = 'frodo';

 

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

DELETE email, phone

 FROM users

WHERE user_name = 'jsmith';

DELETE todo ['2012-9-24'] FROM users

WHERE id = 'frodo';

 

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

[default@unknown] CREATE KEYSPACE demo

...         with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'

...         and strategy_options = [{replication_factor:1}];

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

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

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

[default@unknown] DESCRIBE KEYSPACES;

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

[default@unknown] USE keyspace1;

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

[default@demo] DROP COLUMN FAMILY users;

[default@demo] DROP KEYSPACE demo;

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

/opt/apache-cassandra-1.0.0/bin# cqlsh 127.0.0.1 9042 -f conf/schema-sample.txt

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

پی نوشت:

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

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

برای دیدن فلیم های سینماییِ مهیج و جذاب”در حوزه فناوری اطلاعات، اوسینت و هوش مصنوعی“، بر روی اینجا کلیک کنید.

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

t.me/bigdata_channel

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

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

بازدیدها: 7784

همچنین ببینید

سطح بلوغ کلان داده یا بیگ دیتا

سطح بلوغ بیگ دیتا یا کلان داده حرکتی به سمت شرکت های داده محور

توسعه و اجرای استراتژی کلان داده برای سازمان ها کار آسانی نیست، به خصوص اگر …

دریاچه داده (Data Lake)

دریاچه داده (Data Lake) چيست و چه تفاوتی با باتلاق داده (Data Swamp) دارد

دریاچه داده (Data Lake) و مفهوم بیگ دیتا دو واژه ناگسستنی هستند به عبارتی Data …

یک دیدگاه

  1. چرا این همه تاکید روی Nosql دارین ؟ وقتی همه چیز روی روابط استوار هستند؟

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

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

    یه آموزش بزارین که قدم به قدم بگه چی رو از کجا دانلود کنیم چطوری نصب کنیم چطوری اولین پروژه رو هم بنویسیم

    بیچاره mysql که بیخودی از چشم افتاده بود الان قدرش رو میدونم که چه دیتابیس بزرگ و قدرتمندی بوده و هست

دیدگاهتان را بنویسید