معرفی پایگاه داده کاساندرا

معرفی پایگاه داده کاساندرا

مدت مطالعه : 4 دقیقه

10 فروردین 1402

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

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

اگر تمام نود‌های یک بخش خاص از داده‌ از چرخه سرویس دهی خارج شوند، داده‌های آن بخش موقتاً از دسترس خارج می‌شوند تا زمانی که حداقل یک نود در خوشه حاوی داده‌ دوباره آنلاین شود.

 

معماری کاساندرا

کاساندرا یک نود مرکزی یا نود مستر ندارد که تمام نود های خوشه را به هم متصل کند. در عوض، کاساندرا از معماری peer-to-peer غیرمتمرکز استفاده می‌کند که در آن همه نود‌های خوشه مستقیماً بدون نیاز به نود مرکزی با یکدیگر ارتباط برقرار می‌کنند.

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

peer-to-peer

 

KeySpace در کاساندرا

در کاساندرا، keyspace ها یک فضای نام برای جداول هستند. keyspace ها مشابه database ها در سیستم های پایگاه داده رابطه ای هستند و برای گروه بندی جداول مرتبط با یکدیگر استفاده می شوند.

هنگامی که یک keyspace ایجاد می کنید، می توانید ویژگی های مختلفی مانند استراتژی تکرار(replication strategy) و ضریب تکرار(replication factor) را مشخص کنید. استراتژی تکرار نحوه تکثیر داده ها در چندین نود در خوشه را تعیین می کند، در حالی که ضریب تکرار مشخص می کند که چند نسخه از هر قطعه داده باید در خوشه برای تحمل خطا و در دسترس بودن ذخیره شود.

هر keyspace می تواند شامل یک یا چند جدول باشد که واحدهای اصلی ذخیره سازی داده ها در Cassandra هستند. جداول در 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 استفاده کنید.

  • اشتراک گذاری:
محمدرضا باباخانی
محمدرضا باباخانی

من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که می‌نویسم بدردتون بخوره.

آخرین مطالب

سرویس مش؛ ساده سازی ارتباطات میکروسرویس و افزایش رؤیت پذیری

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

اهمیت محاسبات لبه یا Edge Computing

ا توجه به سرعت تحول فناوری، یکی از مفاهیمی که توجه زیادی را به خود جلب کرده و نحوه تعامل ما با سیستم های دیجیتال را تغییر می دهد، محاسبات لبه (Edge Computing) است.

معماری رویداد محور چیست؟

معماری رویداد محور (EDA) یک الگوی طراحی نرم افزار است که در توسعه نرم افزار های مدرن به طور چشمگیری محبوب شده است. در این معماری، جریان داده ها با وقوع رویدادها تعیین می شود. بر خلاف سیستم های متمرکز سنتی که دائماً در حال بررسی وضعیت جدید هستند. معماری رویداد محور به ویژه برای سیستم هایی مفید است که به پردازش حجم زیادی از داده ها بصورت بلادرنگ(real-time) نیاز دارند.

برچسب های مرتبط

ثبت دیدگاه