সরাসরি প্রধান সামগ্রীতে চলে যান

পোস্টগুলি

ফেব্রুয়ারি, ২০২৬ থেকে পোস্টগুলি দেখানো হচ্ছে

[Master Post] Build faster persistence layers with Spring Data JPA 3 by Thorben Janssen @ Spring I/O 2024

URL: https://www.youtube.com/watch?v=t27Uozc2Z58 Title: Build faster persistence layers with Spring Data JPA 3 by Thorben Janssen @ Spring I/O 2024 Topics:- Spring Data JPA ৩-এর মাধ্যমে পারফরম্যান্স সমস্যার সমাধান ও টিপস Spring Data JPA ৩ দিয়ে ডাটাবেস পারফরম্যান্স অপ্টিমাইজেশন Spring Data JPA-তে N+1 সমস্যা সমাধান এবং পারফরম্যান্স অপ্টিমাইজেশন Spring Data JPA-তে ডেটা হ্যান্ডলিং: Sets বনাম Lists এবং পারফরম্যান্স টিপস Spring Data JPA-তে ডেটা রিট্রিভাল আরও ফাস্ট এবং এফিসিয়েন্ট করার উপায় Spring Data JPA এবং সেকেন্ড-লেভেল ক্যাশ ব্যবহার করে ডাটাবেস পারফরম্যান্স বাড়ানো

Spring Data JPA এবং সেকেন্ড-লেভেল ক্যাশ ব্যবহার করে ডাটাবেস পারফরম্যান্স বাড়ানো

Introduction আজকালকার অ্যাপ্লিকেশনগুলোতে ডাটাবেস থেকে তথ্য আনা এবং জমা করার কাজটা খুব দ্রুত হওয়া জরুরি। Spring Data JPA আমাদের কাজ অনেক সহজ করে দিলেও, কিছু ছোট ভুলের কারণে অ্যাপ্লিকেশন স্লো হয়ে যেতে পারে। এই আলোচনায় Thorben Janssen দেখিয়েছেন কীভাবে আমরা ডাটাবেস কুয়েরি অপ্টিমাইজ করতে পারি এবং বিশেষ করে 'ক্যাশিং' (Caching) ব্যবহার করে অ্যাপ্লিকেশনের গতি বাড়াতে পারি। আমরা মূলত শিখব কুয়েরি কীভাবে কম করা যায় এবং সেকেন্ড-লেভেল ক্যাশ (Second-Level Cache) কীভাবে কাজ করে। ১. পারফরম্যান্স সমস্যা খুঁজে বের করা (Hibernate Statistics) ভিডিওর শুরুতে দেখানো হয়েছে যে, আমাদের কোড কেন স্লো হচ্ছে তা আগে বুঝতে হবে। এর জন্য Hibernate-এর কিছু বিশেষ সেটিংস অন করা যায়। ভিডিও রেফারেন্স: [ 03:58 ] বিস্তারিত: আপনার অ্যাপ্লিকেশনের application.properties ফাইলে hibernate.generate_statistics প্রপার্টিটি true করে দিলে আপনি লগ (Log) এ দেখতে পাবেন কতগুলো কুয়েরি চলছে, কত সময় লাগছে এবং ক্যাশ থেকে কয়টা ডেটা আসছে। এটি ডেভেলপমেন্টের সময় চালু রাখা খুব জরুরি। সহজ ব্যাখ্যা: এটি অনেকটা আপনার গাড়ির ড্যাশবো...

Spring Data JPA-তে ডেটা রিট্রিভাল আরও ফাস্ট এবং এফিসিয়েন্ট করার উপায়

Introduction আজকালকার সফটওয়্যার ডেভেলপমেন্টে ডেটাবেস থেকে ডেটা আনা বা সেভ করার জন্য আমরা সাধারণত Spring Data JPA ব্যবহার করি। এটি কাজ সহজ করে দিলেও, বড় প্রজেক্টে বা অনেক ডেটা নিয়ে কাজ করতে গেলে অ্যাপ্লিকেশন স্লো হয়ে যেতে পারে। এই ভিডিওতে Thorben Janssen দেখিয়েছেন কীভাবে Entities, DTOs এবং Records ব্যবহার করে ডেটাবেস অপারেশনগুলোকে অনেক বেশি দ্রুত বা এফিসিয়েন্ট (Efficient) করা যায়। বিশেষ করে অদরকারি ডেটা লোড না করে এবং কিছু স্মার্ট টেকনিক ব্যবহার করে অ্যাপ্লিকেশনের পারফরম্যান্স বাড়ানোই এই আলোচনার মূল উদ্দেশ্য। ১. পারফরম্যান্স সমস্যা খুঁজে বের করা (Generating Hibernate Statistics) ভিডিও রেফারেন্স: [ 03:58 ] ডেটাবেস কেন স্লো কাজ করছে তা বোঝার জন্য হাইবারনেট (Hibernate) আমাদের কিছু পরিসংখ্যান বা স্ট্যাটিস্টিক্স দেয়। আমাদের অ্যাপ্লিকেশন প্রোপার্টিজে নিচের লাইনটি যুক্ত করলে এটি সক্রিয় হয়: Properties hibernate.generate_statistics=true বিস্তারিত ব্যাখ্যা: ডেভেলপমেন্টের সময় অনেক সময় বোঝা যায় না যে প্রোডাকশনে গিয়ে কোড কেন স্লো হচ্ছে। কারণ আমাদের লোকাল পিসিতে ডেটা থাকে ১০-২০টি, কিন্তু র...

Spring Data JPA-তে ডেটা হ্যান্ডলিং: Sets বনাম Lists এবং পারফরম্যান্স টিপস

সবাই কেমন আছেন? আজ আমরা শিখব কীভাবে Spring Data JPA ব্যবহার করে ডেটাবেসের সাথে আরও দ্রুত এবং কার্যকরভাবে কাজ করা যায়। বিশেষ করে 'Many-to-Many' রিলেশনে Sets এবং Lists এর মধ্যে কোনটি ব্যবহার করা ভালো এবং কেন, তা নিয়ে আমরা বিস্তারিত আলোচনা করব। Introduction (ভূমিকা) যখন আমরা জাভা দিয়ে কোনো বড় অ্যাপ্লিকেশন তৈরি করি, তখন ডেটাবেস থেকে ডেটা আনা বা সেভ করার জন্য Spring Data JPA এবং Hibernate ব্যবহার করি। শুরুতে এটি খুব সহজ মনে হলেও, ডেটার পরিমাণ যখন বাড়তে থাকে (যেমন প্রোডাকশনে লাখ লাখ ডেটা), তখন অ্যাপ্লিকেশন স্লো হয়ে যেতে পারে। এই ভিডিওতে থরবেন জ্যানসেন (Thorben Janssen) দেখিয়েছেন কীভাবে ছোট ছোট ভুলের কারণে আমাদের অ্যাপ্লিকেশন ধীরগতিসম্পন্ন হয়ে যায় এবং কীভাবে 'Sets' ব্যবহার করে আমরা পারফরম্যান্স বহুগুণ বাড়িয়ে নিতে পারি। ১. পারফরম্যান্স সমস্যা খুঁজে বের করা (Generating Statistics) অ্যাপ্লিকেশনের কোথায় সমস্যা হচ্ছে তা না জানলে সমাধান করা কঠিন। হাইবারনেট (Hibernate) আমাদের একটি চমৎকার সুবিধা দেয় যার মাধ্যমে আমরা দেখতে পারি একটি কাজের জন্য কয়টি কুয়েরি (Query) চলছে। রেফারে...

Spring Data JPA-তে N+1 সমস্যা সমাধান এবং পারফরম্যান্স অপ্টিমাইজেশন

Introduction বন্ধুরা, আজকের আলোচনায় আমরা শিখব কীভাবে Spring Data JPA ব্যবহার করে একটি সুপার ফাস্ট এবং দক্ষ পারসিস্টেন্স লেয়ার (Persistence Layer) তৈরি করা যায়। আপনি যদি একজন বিগিনার হন বা কোডিং শুরু করেছেন, তবে আপনি হয়তো দেখেছেন শুরুতে JPA ব্যবহার করা খুব সহজ মনে হয়। কিন্তু যখন ডেটা বাড়তে থাকে, তখন অ্যাপ্লিকেশন স্লো হয়ে যায়। এই ভিডিওতে থরবেন জ্যানসেন (Thorben Janssen) দেখিয়েছেন কীভাবে আমরা খুব সহজে পারফরম্যান্সের সমস্যাগুলো খুঁজে বের করতে পারি এবং বিশেষ করে N+1 সমস্যা সমাধান করতে পারি। পারফরম্যান্স সমস্যা খুঁজে বের করা (Hibernate Statistics) [ https://www.youtube.com/watch?v=t27Uozc2Z58 ] [ 03:58 ] বিস্তারিত আলোচনার আগে আমাদের জানতে হবে সমস্যাটা কোথায়। থরবেন বলছেন যে, আমাদের লোকাল পিসিতে ১০-২০টা ডেটা নিয়ে কাজ করলে কোনো সমস্যা বোঝা যায় না, কিন্তু প্রোডাকশনে যখন লাখ লাখ ডেটা থাকে তখন আসল ঝামেলা ধরা পড়ে। কিভাবে চেক করবেন: Hibernate-এ একটি প্রপার্টি আছে যা দিয়ে আপনি দেখতে পারবেন প্রতিটি ট্রানজ্যাকশনে কয়টি কুয়েরি (Query) চলছে। Properties hibernate.generate_statistics=true এটি চ...

Spring Data JPA ৩ দিয়ে ডাটাবেস পারফরম্যান্স অপ্টিমাইজেশন

এই ভিডিওতে Thorben Janssen দেখিয়েছেন কীভাবে Spring Data JPA এবং Hibernate ব্যবহার করে একটি অ্যাপ্লিকেশনের ডাটাবেস লেয়ারকে আরও দ্রুত এবং স্কেলেবল (Scalable) করা যায়। আমরা অনেক সময় দেখি যে ছোট ডেটা নিয়ে কাজ করার সময় কোড ভালো চললেও প্রোডাকশনে বেশি ডেটা আসার পর তা স্লো হয়ে যায়। এই আলোচনায় সেই সমস্যাগুলো ধরার উপায় এবং সমাধানের কৌশলগুলো খুব সহজভাবে তুলে ধরা হয়েছে। ১. পারফরম্যান্স সমস্যা খুঁজে বের করা (Identifying Performance Issues) ভিডিও রেফারেন্স: [ 03:58 ] যেকোনো সমস্যার সমাধান করার আগে সেটি খুঁজে বের করা জরুরি। ভিডিওর শুরুতে Thorben দেখিয়েছেন কীভাবে হিবারনেট (Hibernate) এর স্ট্যাটিস্টিকস ব্যবহার করে ডাটাবেস কোয়েরির সংখ্যা এবং সময় ট্র্যাক করা যায়। সহজ ব্যাখ্যা: অনেক সময় আমাদের কোড ইন্টারনালি শত শত কুয়েরি চালায় যা আমরা বুঝতে পারি না। হিবারনেট আমাদের এই তথ্যগুলো লগের মাধ্যমে দেখাতে পারে। কঠিন শব্দের সহজ অর্থ: * Statistics (পরিসংখ্যান): এখানে কুয়েরি কতবার চলল বা কত সময় নিল তার হিসাব। Logging (লগিং): অ্যাপ্লিকেশনের ভেতরে কী ঘটছে তা লিখে রাখা। আমার চিন্তাভাবনা: আপনি যদি ন...

Spring Data JPA ৩-এর মাধ্যমে পারফরম্যান্স সমস্যার সমাধান ও টিপস

Introduction আজকের এই আলোচনায় আমরা শিখব কীভাবে Spring Data JPA ব্যবহার করে একটি দ্রুত এবং শক্তিশালী ডাটাবেস লেয়ার (Persistence Layer) তৈরি করা যায়। অনেকে মনে করেন Spring Data JPA ব্যবহার করলে সবকিছু অটোমেটিক হয়ে যাবে, কিন্তু বড় প্রোজেক্টে বা অনেক ডাটার ক্ষেত্রে এটি বেশ ধীরগতি সম্পন্ন হতে পারে। এই ভিডিওতে থরবেন জ্যানসেন (Thorben Janssen) দেখিয়েছেন কীভাবে পারফরম্যান্সের সমস্যাগুলো আগেভাগেই খুঁজে বের করে সমাধান করা যায়। পারফরম্যান্স সমস্যা শনাক্ত করা (Identifying Performance Issues) ভিডিও রেফারেন্স: [ 02:43 ] যেকোনো সমস্যার সমাধান করার আগে সেটি খুঁজে বের করা জরুরি। আমরা সাধারণত আমাদের লোকাল কম্পিউটারে অল্প ডাটা নিয়ে কাজ করি, তাই সব ঠিক মনে হয়। কিন্তু প্রোডাকশনে যখন লাখ লাখ ডাটা থাকে, তখন আসল সমস্যা ধরা পড়ে। কিভাবে চেক করবেন? Hibernate-এর একটি চমৎকার ফিচার আছে যা দিয়ে আপনি প্রতিটি কুয়েরি কত সময় নিচ্ছে তা দেখতে পারেন। এর জন্য আপনার application.properties ফাইলে নিচের লাইনটি যুক্ত করতে হবে: hibernate.generate_statistics=true এবং লগিং লেভেল DEBUG সেট করতে হবে। এতে করে আপনি কনসোলে দ...

[Master Post] Migrating from (Spring Data) JPA to Spring Data JDBC by Jens Schauder @ Spring I/O 2024

URL: https://www.youtube.com/watch?v=WYa9n0F4CRM Title: Migrating from (Spring Data) JPA to Spring Data JDBC by Jens Schauder @ Spring I/O 2024 Topics:- Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড জিপিএ (JPA) থেকে স্প্রিং ডেটা জেডিবিসি (Spring Data JDBC)-তে মাইগ্রেশন করার সহজ গাইড ডোমেইন-ড্রিভেন ডিজাইন (DDD) এ অ্যাগ্রিগেট কনসেপ্টের সহজ পাঠ Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশনের সহজ নির্দেশিকা Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশনের সহজ নির্দেশিকা Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড

Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড

Introduction এই ভিডিওতে জেনস শাউডার (Jens Schauder) আলোচনা করেছেন কীভাবে একটি প্রজেক্টকে Spring Data JPA থেকে সরিয়ে Spring Data JDBC -তে নিয়ে আসা যায়। আমরা সাধারণত মনে করি ডাটাবেস লেয়ার পরিবর্তন করা মানে অনেক জটিল কাজ, কিন্তু এই ভিডিওতে দেখানো হয়েছে কীভাবে ধাপে ধাপে এবং সুশৃঙ্খলভাবে এই কাজটি করা সম্ভব। স্পিকার এখানে সরাসরি কোড পরিবর্তনের চেয়ে বেশি গুরুত্ব দিয়েছেন আর্কিটেকচারাল পরিবর্তনের ওপর, যা আপনার কোডকে আরও পরিষ্কার এবং সহজবোধ্য করে তুলবে। ১. ফাউন্ডেশন এবং প্রস্ততি (Foundations & Preparation) মাইগ্রেশন শুরু করার আগে কিছু প্রাথমিক বিষয় মাথায় রাখা জরুরি। ভিডিও রেফারেন্স: [ 04:45 ] বিস্তারিত আলোচনা: যেকোনো বড় পরিবর্তনের আগে আপনার প্রজেক্টে ভালো Test Cases থাকতে হবে। যদি পারসিস্টেন্স লেয়ার (Persistence Layer) পরিবর্তনের ফলে কোনো সমস্যা হয়, তবে আপনার টেস্ট যেন তা সাথে সাথে ধরতে পারে। Baby Steps: একসাথে সব পরিবর্তন না করে খুব ছোট ছোট পরিবর্তন করতে হবে। Mikado Method: এটি একটি বিশেষ পদ্ধতি যেখানে বড় লক্ষ্যকে ছোট ছোট গোল (Circles) হিসেবে কাগজে লিখে রাখা হয় এবং একেকট...

Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড

পুরো ভিডিওটির মূল আলোচনা হলো কীভাবে একটি প্রজেক্টকে Spring Data JPA থেকে Spring Data JDBC-তে নিয়ে যাওয়া যায়। বক্তা জেন্স শাউডার (Jens Schauder) এখানে দেখিয়েছেন যে, এই মাইগ্রেশন বা পরিবর্তনটা শুধু কোড বদলানো নয়, বরং প্রজেক্টের আর্কিটেকচার বা গঠনকে আরও সহজ এবং শক্তিশালী করার একটি প্রক্রিয়া। তিনি ধাপে ধাপে (Baby steps) কাজ করার ওপর জোর দিয়েছেন। ১. মাইগ্রেশনের শুরুর প্রস্তুতি এবং সঠিক পদ্ধতি রেফারেন্স: https://www.youtube.com/watch?v=WYa9n0F4CRM [ 05:23 ] যেকোনো বড় পরিবর্তনের আগে বক্তা দুটি বিশেষ পদ্ধতির কথা বলেছেন: Baby Steps: ছোট ছোট পরিবর্তন করা, প্রতিবার কোড চেক করা এবং টেস্ট রান করা। একবারে সব বদলাতে গেলে পুরো প্রজেক্ট এলোমেলো হয়ে যেতে পারে। Mikado Method: এটি একটি রিফ্যাক্টরিং টেকনিক। প্রথমে একটি বড় লক্ষ্য ঠিক করা হয়, তারপর সেটি অর্জনে কী কী ছোট বাধা আছে তা গ্রাফ আকারে লিখে সমাধান করা হয়। যদি কোনো পরিবর্তন কাজ না করে, তবে আগের অবস্থায় ফিরে গিয়ে (Undo) সমস্যাটি বুঝে আবার শুরু করা হয়। সহজ ব্যাখ্যা: * রিফ্যাক্টরিং (Refactoring): কোডের বাইরের কাজ বা আউটপুট ঠিক রেখে ভেতর...

Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশনের সহজ নির্দেশিকা

Introduction এই ভিডিওতে জেন্স শাউডার (Jens Schauder) আলোচনা করেছেন কীভাবে একটি প্রজেক্টকে Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেট বা পরিবর্তন করা যায়। JPA অনেক সময় জটিল হয়ে পড়ে, তাই অনেকে সহজ এবং নিয়ন্ত্রিত পদ্ধতির জন্য JDBC-তে ফিরে আসতে চান। ভিডিওটিতে কোনো তাড়াহুড়ো না করে ধাপে ধাপে, ছোট ছোট পরিবর্তনের মাধ্যমে কীভাবে এই বড় কাজটি সম্পন্ন করা যায়, তার একটি পরিষ্কার রোডম্যাপ দেওয়া হয়েছে। টপিক ১: মাইগ্রেশনের মূল ভিত্তি (The Foundations) মাইগ্রেশন শুরু করার আগে কিছু প্রস্তুতি নেওয়া খুব জরুরি। ভিডিও রেফারেন্স: [ 04:45 ] বিস্তারিত: মাইগ্রেশন শুরু করার আগে আপনার কোডবেসে অবশ্যই শক্তিশালী 'Tests' থাকতে হবে। যদি কোনো বড় পরিবর্তন করার পর কিছু ভেঙে যায়, তবে আপনার টেস্ট যেন সেটা সাথে সাথে ধরতে পারে। জেন্স এখানে 'Baby Steps' বা একদম ছোট ছোট ধাপে কাজ করার পরামর্শ দিয়েছেন। Mikado Method: এটি একটি বিশেষ রিফ্যাক্টরিং পদ্ধতি [ 07:14 ]। এর মূল কথা হলো—একটি বড় লক্ষ্য ঠিক করা, তারপর সেটি অর্জনে কী কী ছোট বাধা আছে তা খুঁজে বের করা। যদি কোনো পরিবর্তন করতে গিয়ে কোড ...

Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশনের সহজ নির্দেশিকা

Introduction: এই কনটেন্টটি মূলত একটি টেকনিক্যাল প্রেজেন্টেশনের সারসংক্ষেপ, যেখানে Jens Schauder আলোচনা করেছেন কীভাবে একটি প্রোজেক্টকে Spring Data JPA থেকে সরিয়ে Spring Data JDBC-তে নিয়ে আসা যায়। অনেকে মনে করেন এটা খুব কঠিন, কিন্তু সঠিক পরিকল্পনা থাকলে ধাপে ধাপে (Baby steps) এটি করা সম্ভব। মূলত কোডের জটিলতা কমানো এবং ডাটাবেসের ওপর আরও বেশি নিয়ন্ত্রণ পাওয়ার জন্যই এই মাইগ্রেশন করা হয়। ১. এগ্রিগেট (Aggregates) চেনা এবং অপ্রয়োজনীয় রিপোজিটরি সরানো ভিডিও রেফারেন্স: [ 14:22 ] থেকে [ 21:18 ] পর্যন্ত। মাইগ্রেশনের প্রথম এবং প্রধান ধাপ হলো আপনার ডোমেইন মডেলের Aggregates গুলোকে চেনা। বিস্তারিত ব্যাখ্যা: JPA-তে আমরা সাধারণত প্রতিটি টেবিলের জন্য আলাদা আলাদা Repository তৈরি করি। কিন্তু Spring Data JDBC কাজ করে 'Aggregate' বা গুচ্ছ আকারে। একটি এগ্রিগেট হলো কতগুলো ক্লাসের সমষ্টি যেখানে একটি প্রধান ক্লাস (Aggregate Root) থাকে এবং বাকিগুলো তার অধীনে থাকে। যেমন: একটি 'Shipment' (চালান) এবং তার ভেতরে থাকা 'Items' (পণ্য)। এখানে Shipment হলো মেইন রুট। আপনার কাজ হবে সেই সব ব...

ডোমেইন-ড্রিভেন ডিজাইন (DDD) এ অ্যাগ্রিগেট কনসেপ্টের সহজ পাঠ

নিচে আপনার দেওয়া ভিডিওর ভিত্তিতে ডোমেইন-ড্রিভেন ডিজাইন (DDD) এ 'অ্যাগ্রিগেট' (Aggregates) কনসেপ্টের ওপর একটি সহজবোধ্য সারাংশ দেওয়া হলো: Introduction সফটওয়্যার ডেভেলপমেন্টের জগতে যখন আমরা বড় কোনো প্রজেক্ট নিয়ে কাজ করি, তখন ডেটা বা তথ্যের গঠন বোঝা খুব জরুরি হয়ে পড়ে। ডোমেইন-ড্রিভেন ডিজাইন বা DDD হলো এমন একটি পদ্ধতি যা আমাদের জটিল বিজনেস লজিককে সহজে সাজাতে সাহায্য করে। এই পদ্ধতির অন্যতম একটি গুরুত্বপূর্ণ অংশ হলো Aggregates । সহজ কথায়, অ্যাগ্রিগেট হলো কতগুলো সম্পর্কিত জিনিসের একটি দল বা গুচ্ছ, যাদেরকে আমরা একসাথে একটি ইউনিট হিসেবে বিবেচনা করি। আজকের এই আলোচনায় আমরা জানবো অ্যাগ্রিগেট কী, এটি কীভাবে কাজ করে এবং কেন এটি আমাদের কোডিংয়ের জন্য গুরুত্বপূর্ণ। ১. অ্যাগ্রিগেট (Aggregates) কী? অ্যাগ্রিগেট হলো কিছু ক্লাসের একটি সংগ্রহ যা একটি নির্দিষ্ট সীমানা বা বাউন্ডারির মধ্যে থাকে। ভিডিও রেফারেন্স: [ 10:25 ] বিস্তারিত আলোচনা: অ্যাগ্রিগেট আসলে কিছু অবজেক্টের গ্রুপ। ধরুন, একটি 'অর্ডার' (Order) এবং সেই অর্ডারের ভেতরে থাকা অনেকগুলো 'আইটেম' (Items)। এখানে অর্ডার এবং আইটেম...

জিপিএ (JPA) থেকে স্প্রিং ডেটা জেডিবিসি (Spring Data JDBC)-তে মাইগ্রেশন করার সহজ গাইড

Introduction এই কন্টেন্টটিতে আলোচনা করা হয়েছে কীভাবে একটি প্রজেক্টকে Spring Data JPA থেকে Spring Data JDBC -তে নিয়ে যাওয়া যায়। অনেকে মনে করেন এটি শুধু লাইব্রেরি পরিবর্তন, কিন্তু আসলে এটি কোডের গঠন বা আর্কিটেকচার পরিবর্তনের একটি বড় প্রক্রিয়া। এই আলোচনায় রিফ্যাক্টরিংয়ের কিছু শক্তিশালী কৌশল যেমন—টেস্টের গুরুত্ব, ছোট ছোট পদক্ষেপে কাজ করা (Baby Steps) এবং মিকাডো মেথড (Mikado Method) সম্পর্কে ধারণা দেওয়া হয়েছে। ১. রিফ্যাক্টরিংয়ের ভিত্তি: শক্তিশালী টেস্ট সেট যেকোনো বড় পরিবর্তনের আগে আপনার প্রজেক্টে ভালো মানের অটোমেটেড টেস্ট থাকা জরুরি। ভিডিও রেফারেন্স: [ 04:45 ] বিস্তারিত: লেখক জোর দিয়ে বলেছেন যে, আপনি যদি আপনার ডাটাবেস লেয়ার পরিবর্তন করতে চান, তবে আপনার এমন টেস্ট থাকতে হবে যা নিশ্চিত করবে যে পরিবর্তনের পরেও সবকিছু ঠিকঠাক কাজ করছে। কেন এটি জরুরি? যদি কোড পরিবর্তন করার পর কোনো বড় ভুল হয়, তবে টেস্টগুলোই আপনাকে তা জানিয়ে দেবে। আমার চিন্তা: অনেক সময় আমরা তাড়াহুড়ো করে কোড পরিবর্তন করি কিন্তু টেস্ট লিখি না। এটি পরে বড় বিপদের কারণ হতে পারে। রিফ্যাক্টরিংয়ের আগে 'সেফটি নেট' হ...

Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড

Introduction এই ভিডিওতে জেনস শাউডার (Jens Schauder) আলোচনা করেছেন কীভাবে একটি প্রজেক্টকে Spring Data JPA থেকে Spring Data JDBC -তে মাইগ্রেট করা যায়। সেশনটি মূলত শুরু হয়েছে মাইগ্রেশনের পেছনে থাকা 'কেন' (Why) এবং এর জন্য প্রয়োজনীয় মানসিক প্রস্তুতি নিয়ে। বক্তা এখানে সরাসরি কোড পরিবর্তনের আগে আর্কিটেকচারাল পরিবর্তনের ওপর বেশি জোর দিয়েছেন। ১. মাইগ্রেশনের প্রেক্ষাপট এবং উদ্দেশ্য (Introduction & Motivation) ভিডিওর শুরুতে বক্তা দর্শকদের জিজ্ঞেস করেন তারা কেন মাইগ্রেশন করতে চান। সাধারণত ডেভেলপাররা তাদের কোডবেসের ওপর আরও বেশি Control বা নিয়ন্ত্রণ পাওয়ার জন্য এই মাইগ্রেশন করতে চান। রেফারেন্স: [ 00:13 ] - [ 02:47 ] বিস্তারিত আলোচনা: JPA অনেক শক্তিশালী কিন্তু এটি অনেক সময় "Magic" এর মতো কাজ করে, যার ফলে ইন্টারনাল বিষয়গুলো বোঝা কঠিন হয়ে পড়ে। অন্যদিকে Spring Data JDBC অনেক বেশি সিম্পল এবং এটি ডেভেলপারকে ডাটাবেসের সাথে সরাসরি কাজ করার সুযোগ দেয়। বক্তা Spring Data JDBC-কে তার নিজের সন্তানের মতো ভালোবাসেন, তবে এটি যে সবার জন্য বা সব পরিস্থিতির জন্য উপযুক্ত নয়, সেটিও তিনি ...

[Master Post] You don't need Elasticsearch! Fuzzy Search with PostgreSQL and Spring Data by Thomas Gräfenstein

URL: https://www.youtube.com/watch?v=2kARdnzB5Gg Title: You don't need Elasticsearch! Fuzzy Search with PostgreSQL and Spring Data by Thomas Gräfenstein Topics:- PostgreSQL Fuzzy Search: সহজ ভাষায় ডাটাবেস সার্চের জাদু Naive SQL Pattern Matching এবং এর সীমাবদ্ধতা PostgreSQL এবং Spring Data ব্যবহার করে সহজ Fuzzy Search এর জাদু PostgreSQL-এ Fuzzy Search এবং ইনডেক্সিং এর সহজ গাইড পোস্টগ্র্যাসকিউএল (PostgreSQL) ব্যবহার করে ফাজি সার্চ এবং স্প্রিং বুট ইমপ্লিমেন্টেশন PostgreSQL এবং Spring Data ব্যবহার করে সহজ Fuzzy Search PostgreSQL এবং Spring Data ব্যবহার করে সহজ ‘Fuzzy Search’ এর ধারণা

PostgreSQL এবং Spring Data ব্যবহার করে সহজ ‘Fuzzy Search’ এর ধারণা

Introduction আজকাল যেকোনো অ্যাপ্লিকেশনে ‘সার্চ’ অপশন থাকাটা খুব সাধারণ বিষয়। কিন্তু সমস্যা হয় তখন, যখন ইউজার বানান ভুল করে বা আংশিক নাম লেখে। সাধারণত এই ধরণের উন্নত সার্চের জন্য আমরা ‘Elasticsearch’ এর মতো বড় ও জটিল টুল ব্যবহার করি। তবে এই ভিডিওতে থমাস গ্রাফেনস্টেইন দেখিয়েছেন যে, আপনার যদি অলরেডি একটি PostgreSQL ডাটাবেস থাকে, তবে আলাদা কোনো ভারী টুল ছাড়াই আপনি চমৎকার ‘Fuzzy Search’ (ভুল বানান বা কাছাকাছি মিল খুঁজে পাওয়ার সার্চ) তৈরি করতে পারেন। এতে সময় এবং খরচ দুটোই বাঁচে। ১. সাধারণ সার্চ বনাম ফাজি সার্চ (Fuzzy Search) ভিডিওর শুরুতে সাধারণ সার্চের সীমাবদ্ধতা নিয়ে আলোচনা করা হয়েছে। [ 03:01 ] আমাদের সাধারণ LIKE অপারেটর দিয়ে সার্চ করলে একদম হুবহু মিল থাকতে হয়। কিন্তু মানুষ যখন কিবোর্ডে লেখে, তখন প্রায়ই টাইপিং ভুল (Typo) করে। যেমন: ‘Philip’ কে কেউ ‘Fillip’ লিখতে পারে। ফাজি সার্চের কাজ হলো এই ছোটখাটো ভুলগুলোকে ক্ষমা করে দিয়ে সঠিক রেজাল্ট খুঁজে বের করা। রেফারেন্স: [ 06:19 ] সহজ ব্যাখ্যা: ধরুন আপনি গুগলে কিছু সার্চ করছেন এবং বানান ভুল করলেন, গুগল তাও আপনাকে সঠিক রেজাল্ট দেখায়—এট...

PostgreSQL এবং Spring Data ব্যবহার করে সহজ Fuzzy Search

Introduction আজকাল যেকোনো অ্যাপ্লিকেশনে 'সার্চ' অপশনটি খুবই গুরুত্বপূর্ণ। আমরা যখন কোনো কিছু সার্চ করি, তখন বানান ভুল হওয়া বা টাইপিং মিস হওয়াটা খুব স্বাভাবিক। এই ভিডিওতে থমাস গ্রাফেনস্টাইন দেখিয়েছেন কীভাবে আমরা খুব দামি কোনো টুল (যেমন: Elasticsearch) ছাড়াই শুধুমাত্র PostgreSQL ব্যবহার করে স্মার্ট এবং ভুল সহনীয় (Error Tolerant) সার্চ সিস্টেম তৈরি করতে পারি। বিশেষ করে Spring Boot এবং Kotlin/Java ব্যবহার করে কীভাবে এটি ইমপ্লিমেন্ট করা যায়, তা এখানে সহজভাবে বোঝানো হয়েছে। ১. কেন সাধারণ সার্চ (LIKE Operator) যথেষ্ট নয়? ভিডিওর শুরুতে দেখানো হয়েছে আমরা সাধারণত SQL-এ LIKE বা ILIKE ব্যবহার করে সার্চ করি। রেফারেন্স: [ 06:15 ] বিস্তারিত: ধরুন কারো নাম "Philip"। এখন ইউজার যদি ভুল করে "Fillip" লিখে সার্চ করে, তবে LIKE অপারেটর কোনো রেজাল্ট দেখাবে না। কারণ এটি হুবহু বা প্যাটার্ন অনুযায়ী ম্যাচ খোঁজে। মানুষের টাইপিং মিস্টেক বা বানানের ভিন্নতা (যেমন: Philip বনাম Philipp) হ্যান্ডেল করার জন্য এটি মোটেও কার্যকর নয়। সহজ ব্যাখ্যা (Error Tolerant): এর মানে হলো ইউজ...

পোস্টগ্র্যাসকিউএল (PostgreSQL) ব্যবহার করে ফাজি সার্চ এবং স্প্রিং বুট ইমপ্লিমেন্টেশন

ভিডিওটির মূল বিষয়বস্তু এবং স্প্রিং বুট (Spring Boot) ডেমো ইমপ্লিমেন্টেশনের একটি সহজ সারসংক্ষেপ নিচে দেওয়া হলো: Introduction এই ভিডিওটিতে মূলত দেখানো হয়েছে যে কীভাবে আমরা বড় কোনো আলাদা সার্চ ইঞ্জিন (যেমন: Elasticsearch) ব্যবহার না করেই শুধুমাত্র PostgreSQL ডাটাবেস দিয়ে উন্নত মানের সার্চ ফাংশনালিটি তৈরি করতে পারি। অনেক সময় ব্যবহারকারী সার্চ করার সময় বানানে ভুল করে বা আংশিক নাম লেখে, যেটাকে আমরা 'Fuzzy Search' বলি। এই ভিডিওতে থমাস গ্রাফেনস্টাইন (Thomas Gräfenstein) দেখিয়েছেন কীভাবে স্প্রিং বুট অ্যাপ্লিকেশনে এই ফাজি সার্চ ইমপ্লিমেন্ট করতে হয় এবং ডাটা পপুলেট করে তা পরীক্ষা করতে হয়। ১. ফাজি সার্চ এবং ট্রাইগ্রাম (Trigrams) এর ধারণা ভিডিওর শুরুতে মানুষের টাইপিং ভুল এবং নামের বিভিন্নতা (যেমন: Philip বনাম Phillip) নিয়ে আলোচনা করা হয়েছে। এই সমস্যা সমাধানের জন্য PostgreSQL-এর একটি বিশেষ ফিচার হলো Trigram (pg_trgm) । রেফারেন্স: [ 11:09 ] বিস্তারিত: Trigram হলো একটি শব্দকে ৩ অক্ষরের ছোট ছোট ভাগে ভাগ করার পদ্ধতি। যেমন "HELLO" শব্দটিকে " H", " HE", ...