خانه --> پایگاه داده های مبتنی بر ستون --> انواع کلید در کاساندرا

انواع کلید در کاساندرا

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

  • کلید اصلی
    • کلید اصلی ساده
    • کلید پارتیشن ترکیبی (Compound primary key)
  • کلید اصلی مرکب

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

کلید اصلی: دو نوع کلید اصلی در Cassandra می­توان تعریف کرد:

(۱) کلید اصلی ساده

(۲) کلید اصلی مرکب (Compound primary key)

کلید اصلی ساده: اگر کلید اصلی بصورت ساده (فقط شامل یک ستون) تعریف شود، تنها شامل کلید سطر یا پارتیشن خواهد بود. در پرس­و­جوی CQL ذیل کلید اصلی ساده تعریف و در آن car_id به­عنوان کلید سطر یا پارتیشن در نظر گرفته می­شود. در واقع داده­ ها بر اساس مقدار هش محاسبه شده car_id توزیع می­شوند.

Create table tcar(car_id uuid primary key, name text, desc text)

کلید پارتیشن ترکیبی (Compound primary key): باید به این نکته توجه کرد که استفاده از تنها یک ستون به­ عنوان کلید پارتیشن، ممکن است به پر شدن ظرفیت برخی از گره ها منجر ­شود (در این صورت برخی از گره­ها کانون (hotspot) می­شوند). در این صورت، بسیاری از درخواست­های نوشتن، به این گره ­ها، ارسال می­شوند و بقیه گره ­ها بی­کارتر می­مانند. در این صورت می­توان چند ستون را به­عنوان کلید سطر تعریف کرد که کلید پارتیشن ترکیبی نامیده می­شود. در واقع با تعریف بیش از یک ستون به­ عنوان کلید پارتیشن، داده ­ها به قسمت­ها یا تکه­ های کوچکتری تقسیم می­شوند. برای مثال اگر در کاربردی تنها city_name را به­ عنوان کلید پارتیشن تعریف کنیم، در­صورتی­که سطر­های مرتبط با مقدار “تهران” بسیار بیشتر از بقیه شهرها باشد، گره­ی مسئول نگهداری آن داده­ ها (مرتبط با کلید سطر “تهران”) کانون می­شود. در این­صورت با ترکیب ستون­ های دیگر با city_name، می­توان پارتیشن­ ها را کوچک­تر کرد. برای مثال، در پرس­وجوی CQL ذیل، ستون city_name و job_name به­عنوان کلید سطر یا کلید پارتیشن ترکیبی تعریف می­شود:

Create table tjob(city_name text, job_name text, date timestamp, salary decimal, skills list<text>, primary key((city_name,job_name)))

  • نکته ۱: در صورت تعریف کلید پارتیشن ترکیبی، به اجبار باید تمام ستون­های کلید پارتیشن را در پرس­وجوهای خواندن یا بازیابی (select) ذکر شوند.
  • نکته ۲: نمی­توان داده­ها را توسط ستون یا ستون­های غیر کلید پارتیشن، بازیابی کرد (یعنی در عبارت select، حتما باید کلیدپارتیشن یا کلید ترکیبی پارتیشن در قسمت where ذکر شود تا گره­ ای ظرف داده­ی مورد نظر است، بدست آید). برای بازیابی داده­ ها براساس ستون­ های غیر کلید پارتیشن، می­توان بر روی آن­ها اندیس ثانویه تعریف کرد که در بخش اندیس ثانویه شرح داده خواهد شد.

کلید اصلی مرکب: با تعریف چند ستون به­ عنوان کلید اصلی، اولین ستون یا اولین ستون­ ها (کلید پارتیشن ترکیبی) به ­عنوان کلید پارتیشن و ستون­ های دیگر به­ عنوان کلید خوشه­ بندی(Clustering key) درنظر گرفته می­شوند. در این­صورت، داده­ ها در هر گره براساس ستون­ های خوشه­ بندی، مرتب می­شوند و بازیابی یا عمل خواندن در هر گره بهینه ­تر خواهد شد. برای مثال، در پرس­و­جوی CQL ذیل، city_name و job_name به­ عنوان کلید پارتیشن ترکیبی و salary به ­عنوان کلید خوشه ­بندی تعریف می­شود (در هر گره، داده­ ها به ترتیب نزولی مقادیر ستون salary مرتب می­شوند) :

Create table tjob(city_name text, job_name text, deadline_date timestamp, salary decimal, primary key((city_name,job_name),salary) with clustering order by (salary desc);

 

کلید اصلی مرکب
کلید اصلی مرکب

 

کلید اصلی مرکب در دیتا سنتر
کلید اصلی مرکب در دیتا سنتر

 

cassandra keys partitioning clustering
cassandra keys partitioning clustering

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

t.me/bigdata_channel
برای ورود به کانال بر روی اینجا کلیک کنید.

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

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