Binary Large Objects (BLOB) এবং Character Large Objects (CLOB) হল দুটি ডেটা টাইপ যা সাধারণত ডেটাবেসে বড় আকারের ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়। এগুলি বিশেষত ব্যবহৃত হয় যখন ডেটাবেসে ছবির মতো মিডিয়া ফাইল, অথবা বড় আকারের টেক্সট ডেটা সংরক্ষণ করতে হয়।
1. Binary Large Objects (BLOB)
BLOB হল একটি ডেটা টাইপ যা বাইনারি ডেটা (যেমন ছবি, ভিডিও, অডিও ফাইল, বা অন্যান্য বড় আকারের বাইনারি ফাইল) সংরক্ষণ করতে ব্যবহৃত হয়। BLOB ফিল্ডে আপনি এক্সিকিউটেবল ফাইল, ছবি, অডিও ক্লিপ বা অন্যান্য কোনো বাইনারি ডেটা স্টোর করতে পারেন।
BLOB এর প্রকারভেদ:
- TINYBLOB: সর্বাধিক 255 বাইট পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
- BLOB: সর্বাধিক 65,535 বাইট (64 KB) পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
- MEDIUMBLOB: সর্বাধিক 16,777,215 বাইট (16 MB) পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
- LONGBLOB: সর্বাধিক 4,294,967,295 বাইট (4 GB) পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
BLOB ফিল্ডে ডেটা ইনসার্ট করা:
Java-তে MySQL ডেটাবেসে BLOB ডেটা ইনসার্ট করতে হলে, আপনি PreparedStatement ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনার কাছে একটি ইমেজ ফাইল থাকে, তাহলে সেটি ডেটাবেসে সংরক্ষণ করতে নিম্নলিখিত কোডটি ব্যবহার করা যেতে পারে।
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class BlobExample {
public static void main(String[] args) {
try {
// ডেটাবেস সংযোগ
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/TestDB", "root", "password");
// ফাইল ইনপুট স্ট্রিম
FileInputStream fis = new FileInputStream("path/to/image.jpg");
// SQL ইনসার্ট স্টেটমেন্ট
String sql = "INSERT INTO images (image) VALUES (?)";
PreparedStatement ps = conn.prepareStatement(sql);
// BLOB ডেটা সেট করা
ps.setBinaryStream(1, fis, fis.available());
// স্টেটমেন্ট এক্সিকিউট করা
ps.executeUpdate();
// সংযোগ বন্ধ
ps.close();
conn.close();
fis.close();
System.out.println("Image inserted successfully!");
} catch (IOException | SQLException e) {
e.printStackTrace();
}
}
}
এখানে:
setBinaryStream()মেথডের মাধ্যমে BLOB ডেটা ইনপুট স্ট্রিমের মাধ্যমে ডেটাবেসে পাঠানো হয়।
2. Character Large Objects (CLOB)
CLOB হল একটি ডেটা টাইপ যা বড় আকারের টেক্সট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন দীর্ঘ সেমিস্টার রিপোর্ট, ব্লগ পোস্ট, বা কোনো বড় টেক্সট ডকুমেন্ট। CLOB ডেটা প্রক্রিয়াকরণের জন্য সাধারণত UTF-8 বা অন্যান্য টেক্সট এনকোডিং ব্যবহার করা হয়।
CLOB এর প্রকারভেদ:
- TINYTEXT: সর্বাধিক 255 অক্ষর পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
- TEXT: সর্বাধিক 65,535 অক্ষর (64 KB) পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
- MEDIUMTEXT: সর্বাধিক 16,777,215 অক্ষর (16 MB) পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
- LONGTEXT: সর্বাধিক 4,294,967,295 অক্ষর (4 GB) পর্যন্ত ডেটা সংরক্ষণ করতে পারে।
CLOB ফিল্ডে ডেটা ইনসার্ট করা:
Java-তে MySQL ডেটাবেসে CLOB ডেটা ইনসার্ট করার জন্য, PreparedStatement ব্যবহার করতে হয়। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে টেক্সট ফাইল ডেটাবেসে ইনসার্ট করা হচ্ছে।
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ClobExample {
public static void main(String[] args) {
try {
// ডেটাবেস সংযোগ
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/TestDB", "root", "password");
// ফাইল রিডার
FileReader reader = new FileReader("path/to/textfile.txt");
// SQL ইনসার্ট স্টেটমেন্ট
String sql = "INSERT INTO documents (doc_text) VALUES (?)";
PreparedStatement ps = conn.prepareStatement(sql);
// CLOB ডেটা সেট করা
ps.setCharacterStream(1, reader);
// স্টেটমেন্ট এক্সিকিউট করা
ps.executeUpdate();
// সংযোগ বন্ধ
ps.close();
conn.close();
reader.close();
System.out.println("Text inserted successfully!");
} catch (IOException | SQLException e) {
e.printStackTrace();
}
}
}
এখানে:
setCharacterStream()মেথড ব্যবহার করে টেক্সট ফাইলের ডেটা ডেটাবেসে CLOB হিসেবে ইনসার্ট করা হচ্ছে।
3. BLOB এবং CLOB এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | BLOB (Binary Large Object) | CLOB (Character Large Object) |
|---|---|---|
| ধরন | বাইনারি ডেটা (ছবি, ভিডিও, অডিও) | টেক্সট ডেটা (লম্বা টেক্সট, ডকুমেন্ট) |
| ডেটা স্টোরেজ | বাইনারি ফরম্যাটে | টেক্সট ফরম্যাটে |
| ব্যবহার | ছবি, অডিও, ভিডিও বা অন্যান্য বাইনারি ফাইল সংরক্ষণ | বড় আকারের টেক্সট ডেটা সংরক্ষণ |
| MySQL ডেটাটাইপ | BLOB, TINYBLOB, MEDIUMBLOB, LONGBLOB | TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT |
4. Java MySQL এ BLOB এবং CLOB ব্যবহার করার সময় কিছু গুরুত্বপূর্ণ বিষয়
- স্টোরেজ সাইজ: BLOB এবং CLOB ডেটার আকার বড় হতে পারে, তাই এসব ডেটা স্টোর করার সময় ডেটাবেসের স্টোরেজ কনফিগারেশন সঠিকভাবে করা জরুরি।
- পারফরম্যান্স: বড় আকারের ডেটা যেমন BLOB বা CLOB ডেটাবেসে সংরক্ষণ এবং অ্যাক্সেস করার সময় পারফরম্যান্সের প্রভাব পড়তে পারে। সঠিক ক্যাশিং এবং ডেটাবেস অপটিমাইজেশন গুরুত্বপূর্ণ।
- ডেটা প্রক্রিয়াকরণ: বড় আকারের ডেটা প্রক্রিয়াকরণে অতিরিক্ত মেমরি এবং প্রসেসিং ক্ষমতা প্রয়োজন হতে পারে।
সারাংশ
BLOB এবং CLOB হল দুটি ডেটা টাইপ যা বড় আকারের বাইনারি এবং টেক্সট ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়। BLOB সাধারণত ছবি, ভিডিও বা অন্যান্য বাইনারি ফাইল সংরক্ষণ করতে ব্যবহৃত হয়, এবং CLOB বড় টেক্সট ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। Java-তে MySQL ডেটাবেসে BLOB এবং CLOB ডেটা ইনসার্ট করার জন্য PreparedStatement ব্যবহার করা হয়। BLOB এবং CLOB ডেটার সঠিক ব্যবস্থাপনা এবং পারফরম্যান্স নিশ্চিত করতে সঠিক কনফিগারেশন এবং ডেটাবেস অপটিমাইজেশন গুরুত্বপূর্ণ।
Read more