کاساندرا و بررسی اجمالی آن
پايگاه داده کاساندرا یک سیستم انباره داده ی توزیعشده و کاملاً متن باز و رایگان است که برای مدیریت داده های عظیم تولید شده است. کاساندرا این داده ها را در بین سرورهای بسیاری گسترش داده و انعطافپذیری زیادی را برای توزیع داده به شما میدهد. همچنین شما میتوانید ظرفیت نگهدارنده دادهی خود را به راحتی وارد کنید . به دلیل آنکه همه گرهها در یک خوشه هستند ، هیچ تنظیمات پیچیده برای مقابله با آن وجود ندارد. پايگاه داده کاساندرا با جاوا نوشته شده است و Cassandra Query Languge (CQL) یک زبان شبیه SQL است که برای ارتباط با پایگاه داده Cassandra مورد استفاده قرار میگیرد.
تولید کننده پايگاه داده کاساندرا آقایان Avinash Lakshman و Prashant Malik هستند. این بانک اطلاعات ابتدا در فیسبوک نوشته شد و در سال ۲۰۰۸ اولین نسخه ارائه شد و همین حالا برای بخش Facebook inbox Search مورد استفاده قرار میگیرد.
کاساندرا ابتدا در فیس بوک ایجاد شد. ترکیب Big Table و Amazon Dynamo. کاساندرا در بدو تولید به منظور بهبود کارایی “Inbox Search” ایجاد شده بود. کاساندرا به عنوان یک پروژه منبع باز در ماه ژوئیه سال 2008 منتشر شد. این پروژه در ماه فوریه سال 2009 به پروژه آپاچی تبدیل شد و یک سال پس از آن یک پروژه سطح کامل شد. پس عملا کاساندرا در سال 2010 به عنوان یک محصول وارد بازار شده است.
در اینجا صرفا جهت نمایش میزان رشد مشتریان و محبوبیت آپاچی کاساندرا می آوریم. با مقایسه دوشکل زیر مشاهده میشود که فقط در عرض یه سال مشتریان کاساندرا افزایش چشمگیری داشته است. مهمترین مشتریان کاساندرا عبارتند از:
پايگاه داده کاساندرا در حدی موفق عمل کرد که فقط در عرض یکسال نظر خیلی از غول های فناوری اطلاعات در فضای سایبری را به خود جلب کرد در زیر روند رشد مشتریان این پایگاه داده NOSQL را فقط در طول سال های 2011 تا 2012 بررسی می کنیم. هر چند امروز پایگاه داده کاساندرا جز پر مشتری ترین پایگاه داده های غیر رابطه ای است.
نصب دستی پایگاه داده کاساندرا از این جهت برای ما اهمیت دارد که ممکن است گاهی دسترسی به اینترنت برای نصب خودکار کاساندرا نداشته باشم یا اینکه در مواردی اتصال سرورهای ما به اینترنت مجاز نباشد (که معمولا با این مورد در اکثر پروژه های دولتی با آن مواجه هستیم). در پست های قبلی نحوه نصب کاساندرا به صورت اتوماتیک مورد بررسی قرار گرفت. در این مبحث به صورت کوتاه و مختصر نصب پایگاه داده کاساندرا از رو فایل فشرده یا tar.gz پرداخته میشود. البته قبل انجام این کار باید JDK بر روی سیستم عامل نصب شده باشد. که طریق نصب دستی JDK از روی فایل تربال در پست های قبلی توضیح داده شده است.
ارزش افزوده دیگر نصب دستی پایگاه داده کاساندرا این است که یادگیری این روش باعث میشود که ما فارق نوع توزیع سیستم عامل لینوکس بتوانیم این پایگاه داده را در هر توزیعی از لینوکس نصب کنیم.
مراحل نصب دستی پایگاه داده کاساندرا
ابتدا نسخه کاساندرا مورد نظر خود را به روش زیر دانلود کید.
$ -> wget http://archive.apache.org/dist/cassandra/3.10/apache-cassandra-3.10-bin.tar.gz
برای نصب نیاز به دسترسی سوپر یوزر داریم پس با دستور زیر این کار را انجام دهید.
دایرکتوری /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)
بعد از نصب پايگاه داده ميتوان با استفاده از امکانات شل cli با آن کار کرد که در ادامه توضيح داده ميشود. براي وصل شدن به اين پايگاه داده از دستور زير استفاده کنيد و البته با دستور EXIT می توانید خارج شوید.
/opt/apache-cassandra-3.11/bin# cqlsh localhost 9042
همانطور که گفته شد برای نوشتن پرسوجوها از زبان CQL که شبیه SQL است استفاده میشود اما به دلیل محدودیتهاییHigh availability که برای Cassandra ایجاد میکند زبان آن را کمی تغییر دادهاند. در ادامه قالب کلی چهار دستور اصلی شرح داده خواهد شد.
- SELECT
- INSERT
- UPDATE
- DELETE
کار با کاساندرا با زبان درخواست پرسوجو CQL
ابتدا فرض کنید که جدول (یا خانواده ستون) user را به شکل زیر درست کرده اید. حالا چهار عمل اصلی را روی این جدول یا به عبارتی کالمن فامیلی تحقیق میکینم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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’, {‘[email protected]’, ‘[email protected]’}); |
نمونه دستورهای 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 |
نکته: هنگام کار با کاساندرا استفاده از کارکتر سميکالن (;) در انتهاي همه دستورات اجباری است و در غیر این صورت خطا ایجاد خواهد شد.
مدیریت سرور پشتیبانی و مشاوره – ثبت دامنه