নতুন NoSQL ডেটা স্টোরগুলিতে ফোকাস করা সমস্ত গুঞ্জন সত্ত্বেও, রিলেশনাল এবং SQL-ভিত্তিক ডেটাবেসগুলি এখনও জীবিত এবং ভাল। আসলে, প্রায় প্রতিটি গ্রাহকের সাথে আমরা কাজ করি তাদের পরিবেশে তাদের MongoDB, Redis বা Elasticsearch এর পাশাপাশি কিছু MySQL, PostgreSQL বা MS SQL সার্ভার রয়েছে। একটি রিলেশনাল ডাটাবেস থেকে অন্য ডেটাস্টোরে ডেটা প্রতিলিপি করার সবচেয়ে সহজ উপায়ে অনুরোধ পাওয়া আমাদের পক্ষে অস্বাভাবিক নয়, হয় মাইগ্রেশন হিসাবে, অথবা কেবলমাত্র তাদের রিলেশনাল ডেটাতে সম্পূর্ণ পাঠ্য অনুসন্ধান বা ভিজ্যুয়ালাইজেশনের মতো বৈশিষ্ট্যগুলি যুক্ত করা। সৌভাগ্যবশত, ইলাস্টিকসার্চ এটিকে খুব সহজ করে তোলে।
আমরা সম্প্রতি ইলাস্টিকসার্চের সাথে রিলেশনাল ডেটাবেস সংযুক্ত করার বিষয়ে একটি বিশদ শ্বেতপত্র লিখেছি যা প্রক্রিয়া এবং যে সিদ্ধান্তগুলি নেওয়া দরকার তা বর্ণনা করে, তবে আপনি যদি একটি দ্রুত ভূমিকা এবং ওভারভিউ চান তবে নীচে পড়ুন৷
সঠিক টুলসেট নির্বাচন করা
ওয়েবে প্রচুর মাইগ্রেশন/প্রতিলিপি সরঞ্জাম উপলব্ধ রয়েছে, এবং এমনকি এই পরিস্থিতিতে আপনার নিজের কোড লেখাও একটি বিশাল প্রচেষ্টা হবে না, তবে এখনও পর্যন্ত আমরা Logstash এবং jdbc ইনপুট প্লাগইনটিকে সেরা সমাধান হিসাবে খুঁজে পেয়েছি৷পি>
Logstash হল একটি সুইস আর্মি নাইফ স্টাইলের ইনজেস্টার, ট্রান্সফরমার এবং ডাটা শিপার। এছাড়াও, এটি ইলাস্টিক স্ট্যাকের অংশ হিসাবে, ইলাস্টিকসার্চে সহজেই ডেটা পাঠানোর ক্ষমতা দ্বিতীয়টি নেই। এটি ইলাস্টিকসার্চ অংশে শিপিংয়ের যত্ন নেয়, তবে আপনার রিলেশনাল ডাটাবেস থেকে ডেটা নেওয়ার বিষয়ে কী হবে?
Logstash অফার করে এমন অনেক ইনপুটের মধ্যে একটি হল JDBC ইনপুট। JDBC হল একটি স্ট্যান্ডার্ড যা জাভা অ্যাপ্লিকেশনগুলি কীভাবে একটি ডাটাবেস অ্যাক্সেস করতে পারে তা সংজ্ঞায়িত করে। যতক্ষণ পর্যন্ত একটি ডাটাবেসের জন্য একটি jdbc-compliant ড্রাইভার উপলব্ধ থাকে, JDBC Logstash ইনপুট স্ট্যান্ডার্ড SQL কোয়েরি ব্যবহার করে ডেটা বের করতে এটি ব্যবহার করতে পারে। রিলেশনাল ডাটাবেসগুলির মধ্যে বিনামূল্যে JDBC ড্রাইভারের জন্য বিস্তৃত সমর্থন এবং এমনকি কিছু অ-রিলেশনাল ডাটাবেসের জন্য সমর্থন দেওয়া, এটি ইলাস্টিকসার্চের সাথে অন্যান্য ডেটাবেসগুলিকে সংযুক্ত করার একটি সহজ পথ৷
সংযোগ তৈরি করা
যতক্ষণ আপনার কাছে একটি jdbc সম্মত ডাটাবেস এবং একটি সামঞ্জস্যপূর্ণ ড্রাইভার থাকে, ততক্ষণ কনফিগারেশনটি কয়েক টুকরো তথ্য সহ Logstash কনফিগার করার মতোই সহজ:
- JDBC কনফিগারেশন তথ্য
- আপনার রিলেশনাল ডাটাবেসের জন্য শংসাপত্র এবং সংযোগ তথ্য
- আপনার রিলেশনাল ডাটাবেসের জন্য একটি এসকিউএল কোয়েরি বা বিবৃতি যা আপনার পছন্দের ডেটা বের করে দেয়
- আপনার Elasticsearch ডাটাবেসের জন্য শংসাপত্র এবং সংযোগ তথ্য
সেই তথ্য দেওয়া, ইলাস্টিকসার্চে শুধু ডেটা শাফেল করা খুবই সহজ৷
৷গুরুত্বপূর্ণ প্রশ্ন জিজ্ঞাসা করা
যখন ইলাস্টিকসার্চে আপনার রিলেশনাল ডেটার প্রতিলিপি বা স্থানান্তর করার কথা আসে, তখন বিন্দু A থেকে বিন্দুতে ডেটা পাওয়া মাত্র অর্ধেক যুদ্ধ। একটি বৃহত্তর এবং আরও চিন্তা-প্ররোচনামূলক প্রশ্ন হল আপনি কীভাবে ইলাস্টিকসার্চে একবার সেই ডেটা মডেল করতে চান। ইলাস্টিকসার্চে রিলেশনাল ডেটার সমস্যা হল, স্পষ্টভাবে সম্পর্ক।
যদিও ইলাস্টিকসার্চ প্রথম এবং সর্বাগ্রে একটি সার্চ ইঞ্জিন, ডেটা মডেলটি মূলত একটি নথির দোকান যেখানে নথিগুলির মধ্যে সম্পর্কগুলির জন্য শুধুমাত্র ন্যূনতম সমর্থন রয়েছে৷ এর কারণে, আপনি কীভাবে ইলাস্টিকসার্চে আপনার ডেটা মডেল করতে চান সে সম্পর্কে আপনাকে কিছু সিদ্ধান্ত নিতে হবে।
সাধারণত উপস্থাপিত তিনটি মানক বিকল্প হল:
- ডেটা ডিনরমালাইজ করুন: মূলত সমস্ত সম্পর্ক মুছে ফেলুন এবং আপনার টেবিলের প্রতিটি ডেটার সমন্বয়ের জন্য একটি অনন্য নথি তৈরি করুন
- দস্তাবেজের মধ্যে অ্যারে: ইলাস্টিকসার্চ প্রতিটি নথির মধ্যে অবজেক্টের একটি অ্যারে তৈরি করার ক্ষমতা সমর্থন করে এবং এমনকি একটি বিশেষ "নেস্টেড" ডেটা টাইপ অফার করে যা কিছু প্রশ্নকে সেই অ্যারের প্রতিটি সদস্যকে একটি পৃথক নথি হিসাবে মূল্যায়ন করতে দেয়
- পিতা-মাতার সন্তানের সম্পর্ক: চূড়ান্ত বিকল্প, এবং সত্যিকারের রিলেশনাল ডাটাবেসের সবচেয়ে কাছাকাছি হল ইলাস্টিকসার্চে পিতা-মাতা-শিশু সম্পর্ক, যা আপনাকে নির্দিষ্ট নথিগুলি অন্যান্য নথির সন্তান বলে উল্লেখ করতে দেয়৷
যদিও ইলাস্টিকসার্চ আপনাকে ডেটা নিয়ে কাজ করার জন্য কিছু বিকল্প দেয়, তবে কোন পদ্ধতিটি সবচেয়ে ভাল কাজ করে এবং আপনার চাহিদা পূরণ করে তা সত্যিই আপনার উপর নির্ভর করে।
আরেকটি মূল সিদ্ধান্ত হল কতটা ডেটা এবং কত ঘন ঘন ইলাস্টিকসার্চে প্রতিলিপি করতে হবে। আপনি যদি স্থানান্তরিত হন তবে উত্তরটি সহজ, কারণ এটি সবকিছুর এককালীন ডাম্প। যাইহোক, আপনি যদি ইলাস্টিকসার্চকে একটি সেকেন্ডারি রিপোর্টিং ডেটাস্টোর হিসেবে ব্যবহার করতে চান, তাহলে আপনি কতটা ডেটা কপি করবেন এবং কোন ক্যাডেন্সে তার জন্য আপনার কাছে অতিরিক্ত বিকল্প রয়েছে। আপনি একটি নিয়মিত সময়সূচীতে সম্পূর্ণ স্ন্যাপশটগুলি অনুলিপি করতে পারেন, বা নির্দিষ্ট কলামগুলিতে ফিল্টার করতে Logstash JDBC ইনপুট ফিল্টারে কিছু সুবিধা ব্যবহার করতে পারেন এবং এটি উপলব্ধ হলেই শুধুমাত্র নতুন ডেটা পাঠাতে পারেন। আবার, এটি সবই নির্ভর করবে আপনার ডেটার উপর এবং আপনি এটি কিসের জন্য ব্যবহার করছেন৷
৷সিদ্ধান্ত এবং আরো বিস্তারিত
মূল কথা হল আপনার ডেটাস্টোরগুলিকে সংযুক্ত করার জন্য সরঞ্জাম এবং প্রক্রিয়াগুলি এখন উপলব্ধ এবং আপনার ডেটার সাথে অনুশীলন করা আসলে বেশ সহজ। ইলাস্টিকসার্চে আপনার ডেটা কীভাবে মডেল করা হয়, আপনি কীভাবে এটি অনুসন্ধান করতে পারেন এবং কীভাবে আপনি এটিকে কল্পনা করতে পারেন সে সম্পর্কে কিছু ট্রেডঅফ থাকবে। উদাহরণ স্বরূপ, আপনার রিলেশনাল ডেটা ডিনরমালাইজ করা বাছাই করা ফলস্বরূপ ডেটা সেটের আকারের উপর প্রভাব ফেলবে, আপনি কীভাবে নির্দিষ্ট একত্রীকরণ সম্পাদন করবেন এবং আপনার কাছে কোন ভিজ্যুয়ালাইজেশন উপলব্ধ।
প্রক্রিয়াটি ব্যাখ্যা করার জন্য এবং কীভাবে সেই সিদ্ধান্তগুলি নেওয়া যায়, আমরা একটি সাদা কাগজ লিখেছি:ইলাস্টিকসার্চের সাথে রিলেশনাল ডেটাবেসগুলিকে সংযুক্ত করা, এটি একটি নমুনা ডেটা সেটের জন্য ইলাস্টিকসার্চ প্রতিলিপির সাথে সম্পর্কযুক্ত সেট আপ করার জন্য আদর্শ প্রক্রিয়ার রূপরেখা দেয়, যা বিভিন্ন মডেলিংকে প্রভাবিত করে সিদ্ধান্তগুলি ফলাফলপ্রাপ্ত ডেটার উপর থাকে এবং অবশেষে আপনার জন্য কোনটি সবচেয়ে ভাল তা বেছে নেওয়ার বিষয়ে কিছু নির্দেশিকা থাকে৷
আমরা আশা করি আপনি এটি দরকারী! বরাবরের মতো, আপনি [email protected]এ পৌঁছানোর মাধ্যমে আমাদের কাছ থেকে আরও তথ্য পেতে পারেন।