paint-brush
ইলাস্টিক সার্চ আপডেট, সন্নিবেশ, মুছে ফেলা: তারা কীভাবে কাজ করে এবং তাদের সীমাবদ্ধতা বোঝাদ্বারা@rocksetcloud
4,851 পড়া
4,851 পড়া

ইলাস্টিক সার্চ আপডেট, সন্নিবেশ, মুছে ফেলা: তারা কীভাবে কাজ করে এবং তাদের সীমাবদ্ধতা বোঝা

দ্বারা Rockset12m2024/05/20
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

ইলাস্টিক সার্চের মতো একটি সিস্টেমের জন্য, স্ট্রিমিং ডেটা দক্ষতার সাথে গ্রহণ করার জন্য ইঞ্জিনিয়ারদের অন্তর্নিহিত আর্কিটেকচারের গভীর জ্ঞান থাকতে হবে।
featured image - ইলাস্টিক সার্চ আপডেট, সন্নিবেশ, মুছে ফেলা: তারা কীভাবে কাজ করে এবং তাদের সীমাবদ্ধতা বোঝা
Rockset HackerNoon profile picture


ভূমিকা

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


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


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


এই ব্লগে, আমরা তুলনা করব এবং বৈসাদৃশ্য করব কিভাবে ইলাস্টিকসার্চ এবং রকসেট ডেটা ইনজেশন পরিচালনা করে সেইসাথে রিয়েল-টাইম অ্যানালিটিক্সের জন্য এই সিস্টেমগুলি ব্যবহার করার জন্য ব্যবহারিক কৌশল প্রদান করে।

ইলাস্টিক সার্চ

ইলাস্টিকসার্চে ডেটা ইনজেশন

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


  • Logstash JDBC ইনপুট প্লাগইন ব্যবহার করে ইলাস্টিকসার্চে একটি রিলেশনাল ডাটাবেস থেকে ডেটা ইনজেস্ট করুন

  • কাফকা ইলাস্টিকসার্চ সার্ভিস সিঙ্ক সংযোগকারী ব্যবহার করে কাফকা থেকে ইলাস্টিকসার্চে ডেটা ইনজেস্ট করুন

  • REST API এবং ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ইলাস্টিকসার্চে সরাসরি অ্যাপ্লিকেশন থেকে ডেটা ইনজেস্ট করুন


Logstash JDBC ইনপুট প্লাগইন ব্যবহার করে ইলাস্টিকসার্চে একটি রিলেশনাল ডাটাবেস থেকে ডেটা ইনজেস্ট করুন। Logstash JDBC ইনপুট প্লাগইনটি অনুসন্ধান এবং বিশ্লেষণের জন্য PostgreSQL বা MySQL-এর মতো রিলেশনাল ডাটাবেস থেকে ইলাস্টিকসার্চে ডেটা অফলোড করতে ব্যবহার করা যেতে পারে।


Logstash হল একটি ইভেন্ট প্রসেসিং পাইপলাইন যা ইলাস্টিকসার্চে পাঠানোর আগে ডেটা ইনজেস্ট করে এবং রূপান্তর করে। Logstash একটি JDBC ইনপুট প্লাগইন অফার করে যা পর্যায়ক্রমে সন্নিবেশ এবং আপডেটের জন্য PostgreSQL বা MySQL এর মতো একটি রিলেশনাল ডাটাবেস পোল করে। এই পরিষেবাটি ব্যবহার করার জন্য, আপনার রিলেশনাল ডাটাবেসকে টাইমস্ট্যাম্পড রেকর্ড সরবরাহ করতে হবে যা Logstash দ্বারা পড়তে পারে কোন পরিবর্তনগুলি ঘটেছে তা নির্ধারণ করতে।


এই ইনজেশন পদ্ধতিটি সন্নিবেশ এবং আপডেটের জন্য ভাল কাজ করে তবে মুছে ফেলার জন্য অতিরিক্ত বিবেচনার প্রয়োজন। কারণ আপনার OLTP ডাটাবেসে কী মুছে ফেলা হয়েছে তা নির্ধারণ করা Logstash-এর পক্ষে সম্ভব নয়৷ ব্যবহারকারীরা সফ্ট ডিলিট প্রয়োগ করে এই সীমাবদ্ধতাটি পেতে পারেন, যেখানে মুছে ফেলা রেকর্ডে একটি পতাকা প্রয়োগ করা হয় এবং এটি কোয়েরির সময় ডেটা ফিল্টার করতে ব্যবহৃত হয়। অথবা, তারা পর্যায়ক্রমে তাদের রিলেশনাল ডাটাবেস স্ক্যান করতে পারে যাতে সর্বাধিক আপ টু ডেট রেকর্ডগুলিতে অ্যাক্সেস পেতে এবং ইলাস্টিকসার্চে ডেটা পুনঃসূচীকরণ করতে পারে।


কাফকা ইলাস্টিকসার্চ সিঙ্ক সংযোগকারী ব্যবহার করে কাফকা থেকে ইলাস্টিকসার্চে ডেটা ইনজেস্ট করুন । রিয়েল-টাইম অনুসন্ধান এবং বিশ্লেষণের জন্য সোর্স সিস্টেম থেকে ইলাস্টিকসার্চে ডেটা পাঠাতে কাফকার মতো একটি ইভেন্ট স্ট্রিমিং প্ল্যাটফর্ম ব্যবহার করাও সাধারণ।


কনফ্লুয়েন্ট এবং ইলাস্টিক কাফকা ইলাস্টিকসার্চ সার্ভিস সিঙ্ক কানেক্টরের রিলিজে অংশীদারিত্ব করেছে, যা পরিচালিত কনফ্লুয়েন্ট কাফকা এবং ইলাস্টিক ইলাস্টিকসার্চ অফারগুলি ব্যবহার করে কোম্পানিগুলির জন্য উপলব্ধ। সংযোগকারীর জন্য কাফকা কানেক্ট, অতিরিক্ত টুলিং ইনস্টল এবং পরিচালনার প্রয়োজন হয়।


কানেক্টর ব্যবহার করে, আপনি কাফকার প্রতিটি বিষয়কে ইলাস্টিকসার্চে একটি একক সূচক টাইপে ম্যাপ করতে পারেন। যদি ডায়নামিক টাইপিংকে সূচকের ধরন হিসাবে ব্যবহার করা হয়, তবে ইলাস্টিকসার্চ কিছু স্কিমা পরিবর্তনগুলিকে সমর্থন করে যেমন ক্ষেত্রগুলি যোগ করা, ক্ষেত্রগুলি সরানো এবং প্রকারগুলি পরিবর্তন করা।


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


আপনি যদি কনফ্লুয়েন্ট বা ইলাস্টিক থেকে পরিচালিত পরিষেবাগুলি ব্যবহার না করেন, আপনি ইলাস্টিকসার্চে ডেটা পাঠাতে Logstash-এর জন্য ওপেন-সোর্স কাফকা প্লাগইন ব্যবহার করতে পারেন।


REST API এবং ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করে অ্যাপ্লিকেশন থেকে সরাসরি ইলাস্টিকসার্চে ডেটা ইনজেস্ট করুন Elasticsearch আপনার অ্যাপ্লিকেশন থেকে সরাসরি REST API এর মাধ্যমে ডেটা ইনজেস্ট করার জন্য Java, Javascript, Ruby, Go, Python এবং আরও অনেক কিছু সহ সমর্থিত ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করার ক্ষমতা অফার করে৷ একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করার চ্যালেঞ্জগুলির মধ্যে একটি হল যে ক্ষেত্রে ইলাস্টিকসার্চ ইনজেস্ট লোড পরিচালনা করতে অক্ষম হলে এটি সারিবদ্ধ এবং ব্যাক-প্রেশারের সাথে কাজ করার জন্য কনফিগার করতে হবে। একটি সারিবদ্ধ সিস্টেম না থাকলে, ইলাস্টিকসার্চে ডেটা ক্ষতির সম্ভাবনা রয়েছে।

ইলাস্টিকসার্চে আপডেট, সন্নিবেশ এবং মুছে ফেলা

ইলাস্টিক সার্চের একটি আপডেট API রয়েছে যা আপডেট এবং মুছে ফেলার প্রক্রিয়া করতে ব্যবহার করা যেতে পারে। আপডেট API নেটওয়ার্ক ট্রিপের সংখ্যা এবং সংস্করণ দ্বন্দ্বের সম্ভাবনা হ্রাস করে। আপডেট API সূচী থেকে বিদ্যমান নথি পুনরুদ্ধার করে, পরিবর্তন প্রক্রিয়া করে এবং তারপরে আবার ডেটা সূচী করে। এটি বলেছে, ইলাস্টিকসার্চ ইন-প্লেস আপডেট বা মুছে দেওয়ার প্রস্তাব দেয় না। সুতরাং, সম্পূর্ণ নথিটি এখনও পুনঃসূচীকরণ করা আবশ্যক, একটি CPU নিবিড় অপারেশন।


হুডের নীচে, ইলাস্টিকসার্চ ডেটা একটি লুসিন সূচকে সংরক্ষণ করা হয় এবং সেই সূচকটি ছোট অংশে বিভক্ত হয়। প্রতিটি সেগমেন্ট অপরিবর্তনীয় তাই নথি পরিবর্তন করা যাবে না। যখন একটি আপডেট করা হয়, পুরানো নথিটি মুছে ফেলার জন্য চিহ্নিত করা হয় এবং একটি নতুন নথি একত্রিত করে একটি নতুন বিভাগ তৈরি করা হয়৷ আপডেট করা নথি ব্যবহার করার জন্য, সমস্ত বিশ্লেষক চালানো দরকার যা CPU ব্যবহার বাড়াতে পারে। ক্রমাগত ডেটা পরিবর্তন করে এমন গ্রাহকদের জন্য সূচক একত্রিত হওয়া তাদের সামগ্রিক ইলাস্টিকসার্চ কম্পিউট বিলের একটি উল্লেখযোগ্য পরিমাণ খাওয়া দেখতে সাধারণ।


চিত্র 1: ইলাস্টিকসার্চ ডেটা একটি লুসিন সূচকে সংরক্ষণ করা হয় এবং সেই সূচকটি ছোট অংশে বিভক্ত হয়।


প্রয়োজনীয় সম্পদের পরিমাণ দেওয়া, ইলাস্টিক ইলাস্টিকসার্চে আপডেটের সংখ্যা সীমিত করার পরামর্শ দেয়। Elasticsearch, Bol.com- এর একজন রেফারেন্স গ্রাহক তাদের ই-কমার্স প্ল্যাটফর্মের অংশ হিসাবে সাইট অনুসন্ধানের জন্য Elasticsearch ব্যবহার করেছেন। Bol.com তাদের অফারগুলিতে প্রতিদিন প্রায় 700K আপডেট ছিল কন্টেন্ট, মূল্য এবং প্রাপ্যতা পরিবর্তন সহ। তারা মূলত এমন একটি সমাধান চেয়েছিল যা ঘটে যাওয়া যেকোনো পরিবর্তনের সাথে সিঙ্কে থাকে। কিন্তু, ইলাস্টিকসার্চ সিস্টেমের কর্মক্ষমতার উপর আপডেটের প্রভাবের কারণে, তারা 15-20 মিনিট বিলম্বের জন্য অনুমতি দেওয়া বেছে নিয়েছে। ইলাস্টিকসার্চে নথির ব্যাচিং সামঞ্জস্যপূর্ণ ক্যোয়ারী কর্মক্ষমতা নিশ্চিত করেছে।


ইলাস্টিকসার্চে মুছে ফেলা এবং সেগমেন্ট মার্জ চ্যালেঞ্জ

ইলাস্টিকসার্চে, পুরানো নথি মুছে ফেলা এবং স্থান পুনরুদ্ধার করার সাথে সম্পর্কিত চ্যালেঞ্জ হতে পারে।


ইলাস্টিকসার্চ ব্যাকগ্রাউন্ডে একটি সেগমেন্ট মার্জ সম্পন্ন করে যখন একটি সূচকে প্রচুর সংখ্যক সেগমেন্ট থাকে বা একটি সেগমেন্টে অনেক ডকুমেন্ট থাকে যা মুছে ফেলার জন্য চিহ্নিত থাকে। একটি সেগমেন্ট মার্জ হল যখন ডকুমেন্টগুলি বিদ্যমান সেগমেন্ট থেকে একটি নতুন গঠিত সেগমেন্টে কপি করা হয় এবং অবশিষ্ট সেগমেন্টগুলি মুছে ফেলা হয়। দুর্ভাগ্যবশত, লুসেন সেগমেন্টের সাইজ করার ক্ষেত্রে ভালো নয় যেগুলিকে মার্জ করতে হবে, সম্ভাব্য অসম সেগমেন্ট তৈরি করে যা কার্যক্ষমতা এবং স্থিতিশীলতাকে প্রভাবিত করে।


মার্জ করার পরে, আপনি দেখতে পারেন যে লুসিন সেগমেন্টগুলি বিভিন্ন আকারের। এই অসম বিভাগগুলি কর্মক্ষমতা এবং স্থিতিশীলতাকে প্রভাবিত করে



কারণ Elasticsearch অনুমান করে যে সমস্ত নথি একই আকারের এবং মুছে ফেলা নথির সংখ্যার উপর ভিত্তি করে একত্রিত করার সিদ্ধান্ত নেয়। ভিন্নধর্মী নথির আকার নিয়ে কাজ করার সময়, যেমনটি প্রায়শই মাল্টি-টেন্যান্ট অ্যাপ্লিকেশনের ক্ষেত্রে হয়, কিছু সেগমেন্ট অন্যদের তুলনায় আকারে দ্রুত বৃদ্ধি পাবে, অ্যাপ্লিকেশনের বৃহত্তম গ্রাহকদের জন্য কর্মক্ষমতা কমিয়ে দেবে। এই ক্ষেত্রে, একমাত্র প্রতিকার হল প্রচুর পরিমাণে ডেটা পুনঃসূচীকরণ করা।

ইলাস্টিকসার্চে প্রতিরূপ চ্যালেঞ্জ

ইলাস্টিকসার্চ প্রতিলিপির জন্য একটি প্রাথমিক-ব্যাকআপ মডেল ব্যবহার করে। প্রাথমিক রেপ্লিকা একটি ইনকামিং রাইটিং অপারেশন প্রক্রিয়া করে এবং তারপর অপারেশনটিকে তার প্রতিলিপিতে ফরোয়ার্ড করে। প্রতিটি প্রতিলিপি এই ক্রিয়াকলাপটি গ্রহণ করে এবং স্থানীয়ভাবে ডেটা পুনরায় সূচী করে। এর মানে হল যে প্রতিটি প্রতিরূপ স্বাধীনভাবে একই নথি বারবার পুনরায় সূচী করার জন্য ব্যয়বহুল গণনা সংস্থান ব্যয় করে। যদি n রেপ্লিকা থাকে, ইলাস্টিক একই ডকুমেন্টকে ইন্ডেক্স করতে cpu এর n গুণ ব্যয় করবে। এটি আপডেট বা সন্নিবেশ ঘটলে পুনঃসূচীকরণ করা প্রয়োজন এমন ডেটার পরিমাণ বাড়িয়ে দিতে পারে।

ইলাস্টিকসার্চে বাল্ক এপিআই এবং কিউ চ্যালেঞ্জ

আপনি ইলাস্টিকসার্চে আপডেট API ব্যবহার করতে পারলেও, সাধারণত বাল্ক API ব্যবহার করে ঘন ঘন পরিবর্তনগুলি ব্যাচ করার পরামর্শ দেওয়া হয়। বাল্ক API ব্যবহার করার সময়, প্রকৌশল দলগুলিকে প্রায়শই সিস্টেমে আপডেটগুলি স্ট্রীমলাইন করার জন্য একটি সারি তৈরি এবং পরিচালনা করতে হবে।


একটি সারি ইলাস্টিকসার্চ থেকে স্বাধীন এবং কনফিগার এবং পরিচালনা করতে হবে। ইলাস্টিকসার্চের প্রভাব সীমিত করতে কিউটি একটি নির্দিষ্ট সময়ের ব্যবধানে, 15 মিনিটের মধ্যে সিস্টেমে সন্নিবেশ, আপডেট এবং মুছে ফেলাকে একীভূত করবে। আবেদনের স্থিতিশীলতা নিশ্চিত করতে সন্নিবেশের হার বেশি হলে সারিবদ্ধ সিস্টেমটি একটি থ্রোটল প্রয়োগ করবে। যদিও সারিগুলি আপডেটের জন্য সহায়ক, তারা কখন ডেটার সম্পূর্ণ পুনঃসূচীপত্রের প্রয়োজন হয় এমন অনেকগুলি ডেটা পরিবর্তন হয় তা নির্ধারণ করতে তারা ভাল নয়। সিস্টেমে অনেক আপডেট থাকলে এটি যে কোনো সময় ঘটতে পারে। স্কেলে ইলাস্টিক চালনাকারী দলগুলির জন্য ডেডিকেটেড অপারেশন সদস্যদের প্রতিদিনের ভিত্তিতে তাদের সারিগুলি পরিচালনা এবং টিউন করা সাধারণ।

ইলাস্টিকসার্চে রিইনডেক্সিং

পূর্ববর্তী বিভাগে উল্লিখিত হিসাবে, যখন অনেকগুলি আপডেট থাকে বা আপনাকে সূচক ম্যাপিং পরিবর্তন করতে হবে তখন ডেটার একটি পুনঃসূচী ঘটে। রিইন্ডেক্সিং ত্রুটি প্রবণ এবং একটি ক্লাস্টার নামিয়ে নেওয়ার সম্ভাবনা রয়েছে৷ এর চেয়েও ভয়ঙ্কর বিষয় হল, যে কোনো সময় রিইন্ডেক্সিং ঘটতে পারে।


আপনি যদি আপনার ম্যাপিং পরিবর্তন করতে চান, তাহলে পুনঃসূচীকরণের সময় আপনার আরও নিয়ন্ত্রণ থাকবে। ইলাস্টিকসার্চে একটি নতুন সূচক তৈরি করার জন্য একটি রিইন্ডেক্স API এবং একটি নতুন সূচক তৈরি করার সময় কোনও ডাউনটাইম নেই তা নিশ্চিত করার জন্য একটি উপনাম API রয়েছে। একটি উপনাম API এর সাথে, নতুন সূচী তৈরি হওয়ার সাথে সাথে ক্যোয়ারীগুলি উপনাম বা পুরানো সূচীতে পাঠানো হয়। নতুন সূচী প্রস্তুত হলে, উপনাম API নতুন সূচক থেকে ডেটা পড়তে রূপান্তরিত হবে।


উপনাম API-এর সাথে, নতুন সূচকটিকে সাম্প্রতিক ডেটার সাথে সিঙ্কে রাখা এখনও কঠিন। কারণ Elasticsearch শুধুমাত্র একটি সূচকে ডেটা লিখতে পারে। সুতরাং, নতুন এবং পুরানো সূচকে ডাবল লেখার জন্য আপনাকে ডেটা পাইপলাইন আপস্ট্রিম কনফিগার করতে হবে।

রকসেট

রকসেটে ডেটা ইনজেশন

সোর্স সিস্টেমের সাথে আপনার ডেটা সিঙ্ক রাখতে রকসেট অন্তর্নির্মিত সংযোগকারী ব্যবহার করে। রকসেটের পরিচালিত সংযোগকারীগুলি প্রতিটি ধরণের ডেটা উত্সের জন্য টিউন করা হয় যাতে ডেটা 2 সেকেন্ডের মধ্যে প্রবেশ করা যায় এবং জিজ্ঞাসাযোগ্য করা যায়। এটি ম্যানুয়াল পাইপলাইনগুলি এড়িয়ে যায় যা লেটেন্সি যোগ করে বা শুধুমাত্র মাইক্রো-ব্যাচগুলিতে ডেটা গ্রহণ করতে পারে, প্রতি 15 মিনিটে বলুন।


উচ্চ স্তরে, রকসেট OLTP ডাটাবেস, ডেটা স্ট্রিম এবং ডেটা লেক এবং গুদামগুলিতে অন্তর্নির্মিত সংযোগকারীগুলি অফার করে৷ তারা কিভাবে কাজ করে তা এখানে:


OLTP ডেটাবেসে অন্তর্নির্মিত সংযোগকারীগুলি রকসেট আপনার OLTP ডাটাবেসে আপনার টেবিলগুলির একটি প্রাথমিক স্ক্যান করে এবং তারপরে সর্বশেষ ডেটার সাথে সিঙ্কে থাকার জন্য CDC স্ট্রিমগুলি ব্যবহার করে, যখন এটি তৈরি হয়েছিল তখন 2 সেকেন্ডের মধ্যে অনুসন্ধানের জন্য ডেটা উপলব্ধ করা হয়। উত্স সিস্টেম।


ডেটা স্ট্রীমের অন্তর্নির্মিত সংযোগকারীগুলি কাফকা বা কিনেসিসের মতো ডেটা স্ট্রিমগুলির সাথে, রকসেট ক্রমাগত একটি পুল-ভিত্তিক ইন্টিগ্রেশন ব্যবহার করে যে কোনও নতুন বিষয় গ্রহণ করে যার জন্য কাফকা বা কিনেসিসে কোনও টিউনিংয়ের প্রয়োজন হয় না৷


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

রকসেটে আপডেট, সন্নিবেশ এবং মুছে ফেলা

রকসেটের একটি বিতরণ করা আর্কিটেকচার রয়েছে যা একাধিক মেশিনে সমান্তরালে দক্ষতার সাথে ডেটা সূচক করার জন্য অপ্টিমাইজ করা হয়েছে।


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


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


রকসেটের কনভার্জড ইনডেক্স ক্ষেত্রগুলির সমস্ত মান একটি অনুসন্ধান সূচক, কলাম স্টোর এবং সারি স্টোরে কী-মানের জোড়ার একটি সিরিজ হিসাবে সঞ্চয় করে।


হুডের নিচে, রকসেট RocksDB ব্যবহার করে , একটি উচ্চ-পারফরম্যান্স কী-ভ্যালু স্টোর যা মিউটেশনকে তুচ্ছ করে তোলে। RocksDB বিভিন্ন কী জুড়ে পারমাণবিক লেখা এবং মুছে ফেলা সমর্থন করে। যদি একটি নথির name ক্ষেত্রে একটি আপডেট আসে, ঠিক 3টি কী আপডেট করতে হবে, প্রতি সূচকে একটি। নথির অন্যান্য ক্ষেত্রগুলির জন্য সূচীগুলি প্রভাবিত হয় না, যার অর্থ রকসেট প্রতিবার সম্পূর্ণ নথির জন্য সূচী আপডেট করার চক্র নষ্ট করার পরিবর্তে দক্ষতার সাথে আপডেটগুলি প্রক্রিয়া করতে পারে।


নেস্টেড নথি এবং অ্যারেগুলিও রকসেটের প্রথম-শ্রেণীর ডেটা প্রকার, যার অর্থ একই আপডেট প্রক্রিয়া তাদের ক্ষেত্রেও প্রযোজ্য, যা রকসেটকে JSON এবং Avro-এর মতো আধুনিক ফর্ম্যাটে সংরক্ষিত ডেটার আপডেটের জন্য উপযুক্ত করে তোলে।


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

রকসেট API ব্যবহার করে আপডেট, সন্নিবেশ এবং মুছে ফেলা

রকসেটের ব্যবহারকারীরা ডিফল্ট _id ক্ষেত্র ব্যবহার করতে পারেন বা প্রাথমিক কী হতে একটি নির্দিষ্ট ক্ষেত্র নির্দিষ্ট করতে পারেন। এই ক্ষেত্রটি একটি নথি বা নথির একটি অংশকে ওভাররাইট করতে সক্ষম করে৷ রকসেট এবং ইলাস্টিকসার্চের মধ্যে পার্থক্য হল যে রকসেট একটি সম্পূর্ণ নথির পুনঃসূচীকরণের প্রয়োজন ছাড়াই একটি পৃথক ক্ষেত্রের মান আপডেট করতে পারে।


রকসেট API ব্যবহার করে একটি সংগ্রহে বিদ্যমান নথিগুলি আপডেট করতে, আপনি প্যাচ ডকুমেন্টস এন্ডপয়েন্টে অনুরোধ করতে পারেন। প্রতিটি বিদ্যমান নথির জন্য যা আপনি আপডেট করতে চান, আপনি শুধু _id ক্ষেত্র এবং নথিতে প্রয়োগ করা প্যাচ অপারেশনগুলির একটি তালিকা নির্দিষ্ট করুন৷


রকসেট এপিআই একটি অ্যাড ডকুমেন্টস এন্ডপয়েন্টও প্রকাশ করে যাতে আপনি আপনার অ্যাপ্লিকেশন কোড থেকে সরাসরি আপনার সংগ্রহে ডেটা সন্নিবেশ করতে পারেন। বিদ্যমান নথিগুলি মুছে ফেলতে, আপনি যে নথিগুলি সরাতে চান তার _id ক্ষেত্রগুলি নির্দিষ্ট করুন এবং রকসেট API-এর নথি মুছে ফেলতে একটি অনুরোধ করুন৷

রকসেটে প্রতিলিপি পরিচালনা করা

ইলাস্টিকসার্চের বিপরীতে, রকসেটে শুধুমাত্র একটি প্রতিরূপ রকসডিবি রিমোট কমপ্যাকশন ব্যবহার করে ইন্ডেক্সিং এবং কমপ্যাকশন করে। এটি ইন্ডেক্সিংয়ের জন্য প্রয়োজনীয় CPU-এর পরিমাণ হ্রাস করে, বিশেষ করে যখন স্থায়িত্বের জন্য একাধিক প্রতিলিপি ব্যবহার করা হচ্ছে।

রকসেটে রিইনডেক্সিং

রকসেটে ইনজেস্টের সময়, আপনি আপনার কাঁচা উত্স ডেটাতে প্রয়োগ করার জন্য পছন্দসই ডেটা রূপান্তরগুলি নির্দিষ্ট করতে একটি ইনজেস্ট রূপান্তর ব্যবহার করতে পারেন। আপনি যদি পরবর্তী তারিখে ইনজেস্ট রূপান্তর পরিবর্তন করতে চান, তাহলে আপনাকে আপনার ডেটা পুনঃসূচীকরণ করতে হবে।


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


রকসেট শত শত টেরাবাইট ডেটা স্কেল করতে পারে কখনও পুনঃসূচীকরণের প্রয়োজন ছাড়াই। এটি রকসেটের শার্ডিং কৌশলে ফিরে যায়। যখন একজন গ্রাহক তাদের ভার্চুয়াল ইন্সট্যান্সে বরাদ্দকৃত গণনার পরিমাণ বৃদ্ধি পায়, তখন ক্লাস্টার জুড়ে আরও ভাল বন্টন অর্জনের জন্য শার্ডগুলির একটি উপসেট এলোমেলো করা হয়, যা আরও সমান্তরাল, দ্রুত সূচীকরণ এবং কোয়েরি সম্পাদনের অনুমতি দেয়। ফলস্বরূপ, এই পরিস্থিতিতে রিইন্ডেক্সিং ঘটতে হবে না।

উপসংহার

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


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


সামগ্রিকভাবে, আমরা দেখেছি যে সংস্থাগুলি রিয়েল-টাইম অ্যানালিটিক্সের জন্য ইলাস্টিকসার্চ থেকে রকসেটে স্থানান্তরিত হয় তাদের কম্পিউট বিলে 44% সাশ্রয় করে। কয়েক দিনের মধ্যে ইলাস্টিকসার্চ থেকে রকসেটে স্যুইচ করা ইঞ্জিনিয়ারিং টিমের তরঙ্গে যোগ দিন। আজ আপনার বিনামূল্যে ট্রায়াল শুরু করুন.