নতুন NoSQL ডেটা স্টোরগুলোর উপর ফোকাস করা বাজারের চাহিদা যেন যেন, রিলেশনাল এবং SQL-ভিত্তিক ডেটাবেস এখনও জীবন্ত এবং সুস্থ। আসলে, আমরা যেকোনো কাস্টমারের সাথে কাজ করি, প্রায় সবার এনভায়রনমেন্টে MySQL, PostgreSQL বা MS SQL Server থাকে MongoDB, Redis, বা Elasticsearch-এর পাশাপাশি। রিলেশনাল ডেটাবেস থেকে অন্য ডেটা স্টোরে ডেটা রেপ্লিকেট করার সবচেয়ে সহজ পথ সম্পর্কে অনুরোধ পাওয়া অসাধারণ নয়, चाहে সেটি মাইগ্রেশন হিসেবে হোক বা শুধু ফুল টেক্সট সার্চ বা ভিজ্যুয়ালাইজেশন মতো ফিচার যোগ করার জন্য তাদের রিলেশনাল ডেটাতে। সৌভাগ্যয়, Elasticsearch এটি সুপার সহজ করে দিয়েছে।
আমরা সম্প্রতি একটি বিস্তারিত হোয়াইট পেপার লিখেছি "Connecting Relational Databases to Elasticsearch" যা প্রক্রিয়া এবং নিতে হয় এমন সিদ্ধান্তগুলো বর্ণনা করে, কিন্তু আপনি যদি একটি দ্রুত পরিচয় এবং ওভারভিউ চান, তবে নিচে পড়ুন।
সঠিক টুলসেট নির্বাচন
ওয়েবে প্রচুর মাইগ্রেশন/রেপ্লিকেশন টুল উপলব্ধ, এবং এমন পরিস্থিতিতে নিজের কোড লিখাও বড় প্রচেষ্টা নয়, কিন্তু আমরা যা সবচেয়ে ভালো সমাধান পেয়েছি সেটি Logstash এবং jdbc ইনপুট প্লাগইন।
Logstash একটি স্বিস আর্মি নাইফ শৈলীর ইনজেস্টার, ট্রান্সফরমার, এবং ডেটা শিপার। এছাড়া, যেহেতু এটি Elastic Stack-এর অংশ, Elasticsearch-এ ডেটা শিপ করার দক্ষতা অনন্য। এটি Elasticsearch-এ শিপিং এর যত্ন নেয়, কিন্তু আপনার রিলেশনাল ডেটাবেস থেকে ডেটা গ্র্যাব করার দিকটি কেমন?
Logstash যা অনেক ইনপুট অফার করে 그중 একটি JDBC ইনপুট। JDBC একটি স্ট্যান্ডার্ড যা ডিফাইন করে জাভা অ্যাপ্লিকেশন কীভাবে ডেটাবেস অ্যাক্সেস করতে পারে। যতক্ষণ একটি JDBC-কম্প্লায়েন্ট ড্রাইভার একটি ডেটাবেসের জন্য উপলব্ধ থাকে, JDBC Logstash ইনপুট সেটি ব্যবহার করে স্ট্যান্ডার্ড SQL কোয়ারী দিয়ে ডেটা এক্সট্রাক্ট করতে পারে। রিলেশনাল ডেটাবেসের মধ্যে বিস্তৃত ফ্রি JDBC ড্রাইভার সাপোর্ট এবং এমনকি কিছু নন-রিলেশনাল ডেটাবেসের সাপোর্ট দেওয়া থাকায়, এটি অন্য ডেটাবেস Elasticsearch-র সাথে কানেক্ট করার জন্য একটি সহজ পথ।

কানেকশন স্থাপন
যতক্ষণ আপনার কাছে একটি JDBC কম্প্লায়েন্ট ডেটাবেস এবং একটি কম্প্যাটিবল ড্রাইভার থাকে, কনফিগারেশন খুব সহজ: Logstash কনফিগার করুন কিছু তথ্যের সাথে:
- JDBC কনফিগারেশন ইনফরমেশন
- আপনার রিলেশনাল ডেটাবেসের ক্রেডেনশিয়াল এবং কানেকশন ইনফো
- আপনার রিলেশনাল ডেটাবেসের জন্য একটি SQL কোয়ারী বা স্টেটমেন্ট যা আপনি যা ডেটা চান তা এক্সট্রাক্ট করে
- আপনার Elasticsearch ডেটাবেসের ক্রেডেনশিয়াল এবং কানেকশন ইনফো
এই ইনফো দেওয়া থাকলে, ডেটা Elasticsearch-এ শাফল করা অত্যন্ত সহজ।
গুরুত্বপূর্ণ প্রশ্নগুলি জিজ্ঞাসা
রিলেশনাল ডেটা Elasticsearch-এ রেপ্লিকেট বা মাইগ্রেট করার বেলায়, পয়েন্ট এ থেকে পয়েন্ট বি-তে ডেটা পৌঁছে দেয়া একটা অর্ধেক লড়াই। বড় এবং আরও চিন্তা-উদ্রেককারী প্রশ্ন হলো আপনি একবার Elasticsearch-এ ডেটা মডেল কীভাবে করতে চান। রিলেশনাল ডেটার সাথে Elasticsearch-এ সমস্যা হলো正直 বলতে সম্পর্কগুলো।
যদিও Elasticsearch প্রথম ও সম্মুখে একটি সার্চ ইঞ্জিন, এর ডেটা মডেল অনिवার্হ একটি ডকুমেন্ট স্টোর যেখানে ডকুমেন্টের মধ্যে সম্পর্কের জন্য ন্যূনতম সাপোর্ট রয়েছে। তাই, আপনাকে কিছু সিদ্ধান্ত নিতে হবে আপনি Elasticsearch-এ আপনার ডেটা কীভাবে মডেল করবেন।
তিনটি স্ট্যান্ডার্ড অপশন যা সাধারণত প্রস্তাব করা হয়:
- ডেটা ডিনরমালাইজ করুন: মূলত সব সম্পর্ক সরিয়ে দিন এবং আপনার টেবিলগুলোর ডেটার প্রতিটি কম্বিনেশনের জন্য একটি ইউনিক ডকুমেন্ট তৈরি করুন
- ডকুমেন্টের মধ্যে অ্যারে: Elasticsearch প্রতিটি ডকুমেন্টের মধ্যে অবজেক্টের অ্যারে তৈরি করার ক্ষমতা দেয় এবং এমনকি একটি স্পেশাল "nested" ডেটা টাইপ অফার করে যা কিছু কোয়ারীকে অ্যারে এর প্রতিটি মেম্বারকে আলাদা ডকুমেন্ট হিসেবে ইভ্যালুয়েট করতে দেয়
- পেরেন্ট চাইল্ড সম্পর্ক: চূড়ান্ত অপশন, এবং সত্যিকারের রিলেশনাল ডেটাবেসের সবচেয়ে কাছাকাছি হলো Elasticsearch-এ পেরেন্ট-চাইল্ড সম্পর্ক, যা আপনাকে নির্দিষ্ট করতে দেয় যে কতগুলো ডকুমেন্ট অন্য ডকুমেন্টের চাইল্ড।
যদিও Elasticsearch আপনাকে ডেটা হ্যান্ডল করার কিছু অপশন দেয়, আপনার लिये কোন মেথড সবচেয়ে ভালো কাজ করে এবং আপনার চাহিদা পূরণ করে সেটি আপনার উপর নির্ভর করে।
আরেকটি গুরুত্বপূর্ণ সিদ্ধান্ত হলো কতটুকু ডেটা এবং কত ঘন ঘন Elasticsearch-এ রেপ্লিকেট করবেন। আপনি যদি মাইগ্রেট করেন, উত্তর সহজ, কারণ সেটি সব কিছুর একবারের ডাম্প। কিন্তু, আপনি যদি Elasticsearch-কে একটি সেকেন্ডারি রিপোর্টিং ডেটাস্টোর হিসেবে ব্যবহার করতে চান, তবে আপনার কাছে কতটুকু ডেটা কপি করবেন এবং কোন ক্যাডেন্সে সেটি করার অতিরিক্ত অপশন থাকে। আপনি রেগুলার শিডিউলে ফুল স্ন্যাপশট কপি করতে পারেন, বা Logstash JDBC ইনপুট ফিল্টারের কিছু সুবিধা ব্যবহার করে কিছু কলামে ফিল্টার করে শুধু নতুন ডেটা পাঠাতে পারেন যখন সেটি উপলব্ধ হয়। একবার আবার, এটি সব আপনার ডেটা এবং আপনি সেটি কী জন্য ব্যবহার করছেন তার ওপর নির্ভর করবে।
সিদ্ধান্ত এবং আরও বিস্তারিত
নিচের লাইন হলো টুলস এবং প্রসেস এখন উপলব্ধ আপনার ডেটাস্টোর কানেক্ট করার জন্য এবং আসলে আপনার ডেটার সাথে প্র্যাকটিসে আনার খুব সহজ। ডেটা Elasticsearch-এ কীভাবে মডেল করা হয়, আপনি কীভাবে কোয়ারী করতে পারেন, এবং কীভাবে ভিজ্যুয়ালাইজ করতে পারেন সেগুলোর সাথে কিছু ট্রেডঅফ থাকবে। উদাহরণস্বরূপ, আপনার রিলেশনাল ডেটা ডিনরমালাইজ করার chọnন আপনার ফলাফলের ডেটা সেটের আকার, আপনি কীভাবে সার্টেন অ্যাগ্রিগেশন পারফর্ম করবেন, এবং কী ভিজ্যুয়ালাইজেশন আপনার জন্য উপলব্ধ সেটি প্রভাবিত করবে।
প্রক্রিয়া এবং সিদ্ধান্ত কীভাবে নেওয়া হয় সেটি ইলাস্ট্রেট করার জন্য, আমরা একটি হোয়াইট পেপার লিখেছি: "Connecting Relational Databases to Elasticsearch", যা একটি স্যাম্পল ডেটা সেটের জন্য রিলেশনাল থেকে Elasticsearch রেপ্লিকেশন সেট আপ করার স্ট্যান্ডার্ড প্রসেস আউটলাইন করে, বিভিন্ন মডেলিং সিদ্ধান্তের ফলাফলের ডেটা ওপর প্রভাব, এবং চূড়ান্তে কিছু গাইডলাইন কীভাবে সেরা বেছে নেওয়া যায় সেটি নিয়ে।

আমরা আশা করি আপনি এটা উপযোগী পাবেন! সাদা ভাবেই, আপনি আরও ইনফরমেশন পেতে পারেন sales@objectrocket.com-এ যোগাযোগ করে।