4.1 বর্ণনা

Apache Cassandra হল একটি বিতরণ করা ডাটাবেস ম্যানেজমেন্ট সিস্টেম যা NoSQL সিস্টেমের ক্লাসের অন্তর্গত এবং এটি হ্যাশ আকারে উপস্থাপিত বিশাল ডেটা অ্যারেগুলির উচ্চ মাপযোগ্য এবং নির্ভরযোগ্য স্টোরেজ তৈরি করার জন্য ডিজাইন করা হয়েছে।

প্রাথমিকভাবে, প্রকল্পটি ফেসবুকের অন্ত্রে বিকশিত হয়েছিল এবং 2009 সালে অ্যাপাচি সফ্টওয়্যার ফাউন্ডেশনের অধীনে স্থানান্তরিত হয়েছিল, এই সংস্থাটি প্রকল্পটির বিকাশ অব্যাহত রেখেছে। সিসকো, আইবিএম, ক্লাউডকিক, রেডডিট, ডিগ, র্যাকস্পেস, হুয়াওয়ে, নেটফ্লিক্স, অ্যাপল, ইনস্টাগ্রাম, গিটহাব, টুইটার এবং স্পটিফাই-এর মতো কোম্পানিগুলিতে পরিষেবা প্রদানের জন্য ক্যাসান্দ্রার উপর ভিত্তি করে শিল্প সমাধানগুলি স্থাপন করা হয়েছে। 2011 সালের মধ্যে, ক্যাসান্দ্রার অধীনে একটি একক ডাটাবেস পরিবেশনকারী বৃহত্তম সার্ভার ক্লাস্টারটিতে 400 টিরও বেশি মেশিন ছিল এবং এতে 300 TB-এর বেশি ডেটা ছিল।

জাভা ভাষায় লিখিত , এটি DynamoDB-এর মতো একটি বিতরণ করা হ্যাশ সিস্টেম প্রয়োগ করে, যা ডেটা ভলিউম বৃদ্ধির সাথে প্রায় লিনিয়ার স্কেলেবিলিটি প্রদান করে। এটি কলামগুলির একটি পরিবারের উপর ভিত্তি করে একটি ডেটা স্টোরেজ মডেল ব্যবহার করে, যা মেমক্যাচেডিবি-র মতো সিস্টেমগুলির থেকে আলাদা, যা বিভিন্ন স্তরের নেস্টিং সহ হ্যাশগুলি সঞ্চয় করার ক্ষমতা দ্বারা শুধুমাত্র একটি কী-মানের জোড়ায় ডেটা সংরক্ষণ করে।

ত্রুটি-সহনশীল ডিবিএমএস বিভাগের অন্তর্গত: ডাটাবেসে রাখা ডেটা স্বয়ংক্রিয়ভাবে একটি বিতরণ করা নেটওয়ার্কের বিভিন্ন নোডে প্রতিলিপি করা হয় বা এমনকি বেশ কয়েকটি ডেটা সেন্টারে সমানভাবে বিতরণ করা হয়। যখন একটি নোড ব্যর্থ হয়, তখন অন্য নোডগুলির দ্বারা এর কার্যগুলি ফ্লাইতে নেওয়া হয়, ক্লাস্টারে নতুন নোড যোগ করা এবং ক্যাসান্ড্রা সংস্করণ আপডেট করা হয়, অতিরিক্ত ম্যানুয়াল হস্তক্ষেপ এবং অন্যান্য নোডগুলির পুনর্বিন্যাস ছাড়াই।

যাইহোক, লোডের ভারসাম্য বজায় রাখার জন্য বিদ্যমান নোডগুলি সহ প্রতিটি নোডের জন্য কীগুলি (লেবেল) পুনরায় তৈরি করার সুপারিশ করা হয়। বিদ্যমান নোডগুলির জন্য কী জেনারেশন নোডের সংখ্যা একাধিক বৃদ্ধির ক্ষেত্রে এড়ানো যেতে পারে (2 বার, 3 বার এবং আরও বেশি)।

4.2 ডেটা মডেল

ক্যাসান্দ্রা পরিভাষায়, একটি অ্যাপ্লিকেশন একটি কীস্পেসের সাথে কাজ করে, যা রিলেশনাল মডেলের একটি ডাটাবেস স্কিমার ধারণার সাথে মিলে যায়। এই কীস্পেসটিতে বেশ কয়েকটি কলাম পরিবার থাকতে পারে, যা একটি রিলেশনাল টেবিলের ধারণার সাথে মিলে যায়।

পরিবর্তে, কলাম পরিবারগুলিতে কলাম (কলাম) থাকে, যা রেকর্ডে (সারি) কী (সারি কী) ব্যবহার করে একত্রিত হয়। কলামটি তিনটি অংশ নিয়ে গঠিত: নাম (কলামের নাম), টাইমস্ট্যাম্প (টাইমস্ট্যাম্প) এবং মান (মান)। একটি রেকর্ডের মধ্যে কলাম অর্ডার করা হয়. রিলেশনাল ডাটাবেসের বিপরীতে, রেকর্ড (এবং ডাটাবেসের পরিপ্রেক্ষিতে এগুলি সারি) অন্যান্য রেকর্ডের মতো একই নামের কলাম রয়েছে কিনা তার উপর কোন সীমাবদ্ধতা নেই - না।

কলাম পরিবারগুলি বিভিন্ন ধরণের হতে পারে, তবে এই নিবন্ধে আমরা এই বিশদটি বাদ দেব। এছাড়াও ক্যাসান্দ্রার সর্বশেষ সংস্করণগুলিতে, CQL ভাষা ব্যবহার করে ডেটা (DDL, DML) সংজ্ঞায়িত এবং পরিবর্তনের জন্য অনুসন্ধান চালানো সম্ভব হয়েছে, পাশাপাশি সেকেন্ডারি সূচক তৈরি করা সম্ভব হয়েছে।

ক্যাসান্দ্রায় সংরক্ষিত নির্দিষ্ট মান দ্বারা চিহ্নিত করা হয়:

  • কীস্পেস অ্যাপ্লিকেশন (ডোমেন) এর জন্য একটি বাঁধাই। আপনাকে একই ক্লাস্টারে বিভিন্ন অ্যাপ্লিকেশন থেকে ডেটা হোস্ট করার অনুমতি দেয়;
  • একটি কলাম পরিবার একটি প্রশ্নের জন্য একটি বাধ্যতামূলক;
  • কী হল একটি ক্লাস্টার নোডের সাথে বাঁধাই। কী দ্বারা সংরক্ষিত কলামগুলি কোন নোডের উপর শেষ হবে তা নির্ধারণ করে;
  • কলামের নাম রেকর্ডে একটি বৈশিষ্ট্যের সাথে বাঁধাই করা হয়। আপনাকে একটি এন্ট্রিতে একাধিক মান সঞ্চয় করার অনুমতি দেয়।

প্রতিটি মান একটি টাইমস্ট্যাম্পের সাথে যুক্ত, একটি ব্যবহারকারী-নির্দিষ্ট সংখ্যা যা রেকর্ডিংয়ের সময় দ্বন্দ্ব সমাধান করতে ব্যবহৃত হয়: সংখ্যাটি যত বড় হবে, নতুন কলামটি বিবেচনা করা হবে এবং তুলনা করার সময়, পুরানো কলামগুলি ওভাররাইট করে।

4.3 ডেটা প্রকার

ডেটা টাইপ অনুসারে: কীস্পেস এবং কলাম ফ্যামিলি হল স্ট্রিং (নাম); টাইমস্ট্যাম্প একটি 64-বিট নম্বর; এবং কী, কলামের নাম এবং কলামের মান হল বাইটের একটি অ্যারে। ক্যাসান্দ্রার ডেটা প্রকারের ধারণাও রয়েছে। একটি কলাম পরিবার তৈরি করার সময় এই প্রকারগুলি বিকাশকারী দ্বারা নির্দিষ্ট করা যেতে পারে (ঐচ্ছিকভাবে)৷

কলামের নামগুলির জন্য এটিকে তুলনাকারী বলা হয়, মান এবং কীগুলির জন্য এটিকে একটি যাচাইকারী বলা হয়। প্রথমটি কলামের নামগুলির জন্য কোন বাইট মানগুলি অনুমোদিত এবং সেগুলি কীভাবে অর্ডার করতে হয় তা নির্ধারণ করে। দ্বিতীয়টি হল বাইট মানগুলি কলাম এবং কী মানগুলির জন্য বৈধ।

যদি এই ডেটা টাইপগুলি সেট করা না থাকে, তাহলে ক্যাসান্ড্রা মানগুলি সঞ্চয় করে এবং সেগুলিকে বাইট স্ট্রিং (বাইট টাইপ) হিসাবে তুলনা করে কারণ প্রকৃতপক্ষে সেগুলি অভ্যন্তরীণভাবে সংরক্ষণ করা হয়।

ডেটা প্রকারগুলি হল:

  • বাইট টাইপ : যেকোনো বাইট স্ট্রিং (কোন বৈধতা নেই)
  • AsciiType : ASCII স্ট্রিং
  • UTF8 টাইপ : UTF-8 স্ট্রিং
  • IntegerType : ইচ্ছামত আকার সহ সংখ্যা
  • Int32Type : 4-বাইট নম্বর
  • লংটাইপ : 8-বাইট নম্বর
  • UUIDT টাইপ : UUID টাইপ 1 বা 4
  • টাইমইউআইডিটাইপ : টাইপ 1 ইউইউআইডি
  • তারিখের ধরন : 8-বাইট টাইমস্ট্যাম্প মান
  • বুলিয়ান টাইপ : দুটি মান: সত্য = 1 বা মিথ্যা = 0
  • ফ্লোট টাইপ : 4-বাইট ফ্লোটিং পয়েন্ট নম্বর
  • ডাবল টাইপ : 8-বাইট ফ্লোটিং পয়েন্ট নম্বর
  • DecimalType : একটি ইচ্ছামত আকার এবং একটি ফ্লোটিং পয়েন্ট সহ একটি সংখ্যা
  • কাউন্টারকলাম টাইপ : 8 বাইট কাউন্টার

ক্যাসান্ড্রা-তে, সমস্ত ডেটা লেখার ক্রিয়াকলাপগুলি সর্বদা পুনরায় লেখার ক্রিয়াকলাপ হয়, অর্থাৎ, যদি ইতিমধ্যে বিদ্যমান একই কী এবং নাম সহ একটি কলাম কলাম পরিবারে আসে এবং টাইমস্ট্যাম্পটি সংরক্ষিতের চেয়ে বড় হয়, তাহলে মানটি ওভাররাইট করা হয়। . রেকর্ড করা মানগুলি কখনই পরিবর্তিত হয় না, শুধু নতুন কলামগুলি নতুন মানগুলির সাথে আসে।

ক্যাসান্দ্রার কাছে লেখা পড়ার চেয়ে দ্রুত। এটি নকশায় নেওয়া পদ্ধতির পরিবর্তন করে। যদি আমরা একটি ডেটা মডেল ডিজাইন করার দৃষ্টিকোণ থেকে ক্যাসান্ড্রাকে বিবেচনা করি, তাহলে একটি কলাম পরিবারকে একটি টেবিল হিসাবে নয়, বরং একটি বস্তুগত দৃশ্য হিসাবে কল্পনা করা সহজ - একটি কাঠামো যা কিছু জটিল প্রশ্নের ডেটা উপস্থাপন করে, কিন্তু এটি সংরক্ষণ করে ডিস্ক

প্রশ্নগুলি ব্যবহার করে কোনও উপায়ে ডেটা রচনা করার চেষ্টা করার পরিবর্তে, লক্ষ্য পরিবারে এই প্রশ্নের জন্য প্রয়োজনীয় সমস্ত কিছু সংরক্ষণ করার চেষ্টা করা ভাল। অর্থাৎ, সত্তা বা বস্তুর মধ্যে সম্পর্কের দিক থেকে নয়, বরং প্রশ্নের দিক থেকে যোগাযোগ করা প্রয়োজন: কোন ক্ষেত্রগুলি নির্বাচন করা প্রয়োজন; কি ক্রমে রেকর্ড যেতে হবে; প্রধানগুলির সাথে সম্পর্কিত কী ডেটা একসাথে অনুরোধ করা উচিত - এই সমস্তগুলি ইতিমধ্যে কলাম পরিবারে সংরক্ষণ করা উচিত।

একটি রেকর্ডে কলামের সংখ্যা তাত্ত্বিকভাবে 2 বিলিয়নে সীমাবদ্ধ। এটি একটি সংক্ষিপ্ত ডিগ্রেশন, এবং ডিজাইন এবং অপ্টিমাইজেশন কৌশল সম্পর্কিত নিবন্ধে আরও বিশদ পাওয়া যাবে। এবং এখন আসুন ক্যাসান্ড্রাতে ডেটা সংরক্ষণ এবং এটি পড়ার প্রক্রিয়াটি সন্ধান করি।