دیتابیس Cassandra یک دیتابیس NoSQL توزیع شده هست که در جهت مدیریت حجم زیادی از داده ها در سرور های متعدد بکار گرفته میشود. دلایل اصلی محبوبیت این پایگاه داده توانایی تحمل خطای بالا و دسترسی پذیر بودن آن است. این پایگاه داده در فیسبوک توسعه یافت و درحال حاضر در پلتفرم های بزرگی همچون اینستاگرام، توییتر، نتفلیکس و ایبی درحال استفاده است.
طراحی پایگاه داده Cassandra بر پایه مقیاس پذیر بودن انجام شده است. بنابراین امکان مدیریت حجم زیادی از داده ها بصورت توزیع شده برای آن آسان خواهد بود. همچنین به علت تکثیر داده ها در نود های مختلف، مشکلات دسترسی پذیر بودن و از کار افتادن بخشی از داده ها ریشه کن خواهد شد. در صورتی که یکی از نود ها از چرخه سرویس دهی خارج شود، سایر نود ها وظیفه آن را جبران خواهند کرد.
اگر تمام نودهای یک بخش خاص از داده از چرخه سرویس دهی خارج شوند، دادههای آن بخش موقتاً از دسترس خارج میشوند تا زمانی که حداقل یک نود در خوشه حاوی داده دوباره آنلاین شود.
کاساندرا یک نود مرکزی یا نود مستر ندارد که تمام نود های خوشه را به هم متصل کند. در عوض، کاساندرا از معماری peer-to-peer غیرمتمرکز استفاده میکند که در آن همه نودهای خوشه مستقیماً بدون نیاز به نود مرکزی با یکدیگر ارتباط برقرار میکنند.
این معماری غیرمتمرکز چندین مزیت را نسبت به یک معماری متمرکز با نود مرکزی فراهم می کند، از جمله بهبود تحمل خطا، مقیاس پذیری بهتر و ارتباط کارآمدتر بین نود ها. همچنین مشکل گلوگاه در سیستم را برطرف می کند.
در کاساندرا، keyspace ها یک فضای نام برای جداول هستند. keyspace ها مشابه database ها در سیستم های پایگاه داده رابطه ای هستند و برای گروه بندی جداول مرتبط با یکدیگر استفاده می شوند.
هنگامی که یک keyspace ایجاد می کنید، می توانید ویژگی های مختلفی مانند استراتژی تکرار(replication strategy) و ضریب تکرار(replication factor) را مشخص کنید. استراتژی تکرار نحوه تکثیر داده ها در چندین نود در خوشه را تعیین می کند، در حالی که ضریب تکرار مشخص می کند که چند نسخه از هر قطعه داده باید در خوشه برای تحمل خطا و در دسترس بودن ذخیره شود.
هر keyspace می تواند شامل یک یا چند جدول باشد که واحدهای اصلی ذخیره سازی داده ها در Cassandra هستند. جداول در Cassandra فاقد ساختار تعریف شده هستند، به این معنی که می توانند ساختار انعطاف پذیری داشته باشند که می تواند در هر زمان بدون تأثیر بر داده های ذخیره شده در جدول تغییر یابد.
برای دسترسی به ترمینال کاساندرا، می توانید از ابزار خط فرمان cqlsh که همراه با نصب کاساندرا، بر روی سیستم نصب میشود استفاده کنید. توجه کنید که قبل از اجرای دستور cqlsh، سرور کاساندرا باید درحال اجرا باشد.
کاساندرا از یک زبان پرس و جو به نام CQL (Cassandra Query Language) که بسیار مشابه با SQL است استفاده میکند. در ادامه برخی از دستورات رایج CQL قرار داده شده است که می توان از آنها برای تعامل با پایگاه داده Cassandra استفاده کرد:
ایجاد keyspace:
CREATE KEYSPACE <keyspace_name> WITH replication = {'class': 'SimpleStrategy', 'replication_factor': <replication_factor>};
CREATE KEYSPACE mykeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
استفاده از keyspace:
USE <keyspace_name>;
USE mykeyspace;
ایجاد جدول:
CREATE TABLE <table_name> (<column1_name> <column1_type>, <column2_name> <column2_type>, ..., PRIMARY KEY (<partition_key_column_name>, <clustering_column_name>));
CREATE TABLE users (id UUID, name text, email text, PRIMARY KEY (id));
ورود داده به جدول:
INSERT INTO <table_name> (<column1_name>, <column2_name>, ...) VALUES (<value1>, <value2>, ...);
INSERT INTO users (id, name, email) VALUES (c812a807-7a3c-4813-986d-817e132ae1b2, 'John Doe', 'john.doe@example.com');
خواندن داده از جدول به همراه کوئری:
SELECT <column1_name>, <column2_name>, ... FROM <table_name> WHERE <condition>;
SELECT name, email FROM users WHERE id = c812a807-7a3c-4813-986d-817e132ae1b2;
تغییر داده های موجود:
UPDATE <table_name> SET <column1_name> = <new_value1>, <column2_name> = <new_value2>, ... WHERE <condition>;
UPDATE users SET email = 'jane.doe@example.com' WHERE id = c812a807-7a3c-4813-986d-817e132ae1b2;
حذف داده از جدول:
DELETE FROM <table_name> WHERE <condition>;
DELETE FROM users WHERE id = c812a807-7a3c-4813-986d-817e132ae1b2;
توجه داشته باشید که این دستورات فقط نمونه هستند و ممکن است بسته به نسخه کاساندرا متفاوت باشند.
برای اتصال به پایگاه داده کاساندرا، مانند سایر پایگاه داده ها باید یک رشته اتصال ایجاد کنیم که آدرس IP یا نام دامنه یک یا چند نود به همراه اطلاعات احراز هویت را مشخص کند.
در ادامه چند نمونه از رشته های اتصال قرار گرفته است که می توان از آنها برای اتصال به پایگاه داده Cassandra استفاده کرد:
اتصال به یک نود با پورت پیش فرض:
cassandra://<host_ip_address>/
اتصال به یک نود با یک پورت اختصاصی:
cassandra://<host_ip_address:<port>/
اتصال به یک خوشه با چندین نود:
cassandra://<host1_ip_address>,<host2_ip_address>,<host3_ip_address>/
اتصال با احراز هویت:
cassandra://<username>:<password>@<host_ip_address>/
توجه داشته باشید که سینتکس دقیق رشته اتصال ممکن است بسته به درایور Cassandra یا کتابخانه بهکارگرفته شده متفاوت باشد.
برای مطالعه بیشتر درباره کاساندرا و مشاهده مستندات رسمی میتوانید از سایت رسمی آن به آدرس cassandra.apache.org استفاده کنید.
من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که مینویسم بدردتون بخوره.
ثبت دیدگاه