- 1 1. Introduction
- 2 2. How to Use the MySQL BLOB Data Type
- 3 3. Types of MySQL BLOB Data
- 4 4. Working with MySQL BLOB Data
- 5 5. MySQL BLOB සඳහා වැදගත් සැලකිලි සහ හොඳ පුරුදු ක්රියාමාර්ග
- 6 6. සාරාංශය
- 7 7. සාමාන්ය ප්රශ්න (FAQ)
- 7.1 Q1: BLOB සහ TEXT දත්ත වර්ග අතර වෙනස කුමක්ද?
- 7.2 Q2: BLOB තීරුවක විශාල ගොනු ගබඩා කිරීම දත්ත ගබඩා කාර්ය සාධනයට බලපාද?
- 7.3 Q3: BLOB දත්ත පිටපත් කිරීම සඳහා කාර්යක්ෂම ක්රමයක් තිබේද?
- 7.4 Q4: BLOB තීරුවේ කොටසක් පමණක් ලබා ගැනීමට හැකිද?
- 7.5 Q5: BLOB දත්ත සැලසුම් කිරීමේදී සලකිය යුතු ආරක්ෂක කරුණු මොනවාද?
- 7.6 Q6: BLOB දත්ත සංකුචනය කිරීමේ ක්රමයක් තිබේද?
- 7.7 Q7: MySQL හි BLOB භාවිතා කරන විට කුමන ගබඩා එන්ජින් නිර්දේශ කරයි?
1. Introduction
Overview and Importance of the BLOB Type in MySQL
MySQL ලෝකය පුරා සම්බන්ධතා දත්ත සමුදා පද්ධතියක් ලෙස පුළුල් ලෙස භාවිතා වේ. එහි දත්ත වර්ග අතර, “BLOB වර්ගය (Binary Large Object)” යනු ද්විමීය දත්ත (ඡායාරූප, ශ්රව්ය, වීඩියෝ, ලේඛන වැනි) සෘජුව දත්ත සමුදායේ ගබඩා කිරීමට නිර්මාණය කරන ලද විශේෂ දත්ත වර්ගයකි.
BLOB වර්ගය බොහෝ ව්යාපෘති සඳහා අත්යවශ්ය කාර්ය සාධනය ලබා දේ; එහෙත්, එය භාවිතා කරන විට දත්ත ප්රමාණය සහ කාර්ය සාධන බලපෑම ගැන සැලකිල්ලට ගැනීම වැදගත් වේ.
Definition and Use Cases of BLOB (Binary Large Object)
BLOB වර්ගය පෙළ දත්ත වෙනුවට ද්විමීය-ආකෘතික දත්ත ගබඩා කිරීමට භාවිතා වේ. එම නිසා, එය පහත සඳහන් අවස්ථා වල පුළුල් ලෙස භාවිතා වේ:
- ඡායාරූප සහ ඡායාරූප දත්ත ගබඩා කිරීම (උදා: පරිශීලක පැතිකඩ ඡායාරූප)
- වීඩියෝ සහ ශ්රව්ය ගොනු ගබඩා කිරීම
- ලේඛන සහ PDF ගොනු සංරක්ෂණය
- ගුප්තකරණය කළ දත්ත සහ අනෙකුත් ද්විමීය ගොනු ගබඩා කිරීම
මෙම ලිපිය MySQL BLOB දත්ත වර්ගය විස්තරාත්මකව පැහැදිලි කරමින්, එහි භාවිතය සහ වැදගත් සැලකිලි සඳහා පියවරෙන් පියවර මාර්ගෝපදේශයක් ලබා දේ.
2. How to Use the MySQL BLOB Data Type
Creating a Table with a BLOB Column
MySQL හි BLOB වර්ගය භාවිතා කිරීමට, පළමුව වගුවක BLOB තීරුවක් නිර්වචනය කළ යුතුය. පහත දැක්වෙන්නේ BLOB තීරුවක් සමඟ වගුවක් නිර්මාණය කිරීම සඳහා උදාහරණ SQL ප්රකාශනයකි:
CREATE TABLE sample_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
data BLOB
);
මෙම උදාහරණයේ, data තීරුව BLOB වර්ගයක් ලෙස නිර්වචනය කර ඇත. ඔබට මෙම තීරුවේ ද්විමීය දත්ත ගබඩා කළ හැක.
Inserting BLOB Data Using an INSERT Statement
BLOB දත්ත ඇතුළත් කිරීමේදී, සාමාන්ය අක්ෂර දත්ත සඳහා භාවිතා කරන INSERT ප්රකාශනය භාවිතා කරයි. නමුත්, විශාල ද්විමීය දත්ත ඇතුළත් කරන විට, එය සුදුසු ද්විමීය ආකෘතියකට පරිවර්තනය කළ යුතුය.
INSERT INTO sample_table (name, data)
VALUES ('Example Name', LOAD_FILE('/path/to/file.jpg'));
මෙම උදාහරණයේ, LOAD_FILE() ක්රියාවලිය භාවිතා කර නියමිත ගොනුව BLOB තීරුවට ඇතුළත් කරයි.
Retrieving BLOB Data Using a SELECT Statement
BLOB දත්ත ලබා ගැනීමට, SELECT ප්රකාශනයක් භාවිතා කරන්න. නමුත්, ලබාගත් දත්ත නිසි ලෙස සැකසීමට, යෙදුම ද්විමීය දත්ත නිවැරදිව විකේතනය හෝ සැකසිය යුතුය.
SELECT id, name, data FROM sample_table WHERE id = 1;
3. Types of MySQL BLOB Data
Differences and Characteristics of TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB
MySQL භාවිතය අනුව BLOB දත්ත වර්ග හතරක් ලබා දේ. ඒවායේ ලක්ෂණ පහත පරිදි වේ:
| Data Type | Maximum Size | Main Use Case |
|---|---|---|
| TINYBLOB | 255 bytes | Small binary data |
| BLOB | 65,535 bytes | General binary data |
| MEDIUMBLOB | 16,777,215 bytes | Medium-sized data |
| LONGBLOB | 4,294,967,295 bytes | Very large binary data |
Maximum Size and Use Examples of Each BLOB Type
- TINYBLOB : අයිකන සහ කුඩා තම්බ්නෙල් ඡායාරූප.
- BLOB : සාමාන්ය ඡායාරූප ගොනු සහ කෙටි ශ්රව්ය ගොනු.
- MEDIUMBLOB : උසස් රෙසලූෂන් ඡායාරූප සහ දිගු ශ්රව්ය දත්ත.
- LONGBLOB : වීඩියෝ සහ විශාල පරිමාණ ගොනු දත්ත.
ඔබගේ භාවිත අවශ්යතාවය අනුව සුදුසු BLOB වර්ගය තෝරා ගැනීම, වඩා කාර්යක්ෂම දත්ත සමුදා සැලසුමකට හේතු වේ.
4. Working with MySQL BLOB Data
Handling BLOB Data Using PHP
Uploading Files and Saving Them to the Database
පහත උදාහරණය PHP භාවිතා කර උඩුගත කරන ලද ගොනුව ලබාගෙන MySQL BLOB තීරුවකට සුරැකීමේ ක්රියාවලිය පෙන්වයි:
<?php
$host = 'localhost';
$dbname = 'example_db';
$username = 'root';
$password = '';
// Database connection
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// If a file has been uploaded
if (isset($_FILES['file'])) {
$file = $_FILES['file']['tmp_name'];
$blob = file_get_contents($file);
// Data insertion query
$sql = "INSERT INTO sample_table (name, data) VALUES (:name, :data)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':name', $_FILES['file']['name']);
$stmt->bindParam(':data', $blob, PDO::PARAM_LOB);
if ($stmt->execute()) {
echo "File saved successfully.";
} else {
echo "An error occurred.";
}
}
?>
Displaying Stored BLOB Data
සුරැකූ BLOB දත්ත ප්රදර්ශනය කිරීමට, එය ලබාගෙන පහත පරිදි සුදුසු ශීර්ෂක (headers) සමඟ බ්රවුසරයට යවන්න:
<?php
// Retrieve data
$id = $_GET['id'];
$sql = "SELECT data FROM sample_table WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// Output BLOB data
header("Content-Type: image/jpeg"); // For image data
echo $row['data'];
?>
BLOB දත්ත කොටසක් ලබා ගැනීම
MySQL ඔබට BLOB දත්ත කොටසක් ලබා ගැනීමටත් ඉඩ සලසයි. උදාහරණයක් ලෙස, SUBSTRING ක්රියාවලිය භාවිතා කර බයිනරි දත්ත කොටසක් ලබා ගත හැක:
SELECT SUBSTRING(data, 1, 100) AS partial_data FROM sample_table WHERE id = 1;
ගොනු ප්රමාණ සීමා සහ දෝෂ සැකසීම
BLOB වර්ග සමඟ වැඩ කරන විට, ගොනු ප්රමාණ සීමා සහ දෝෂ සැකසීම වැදගත් කරුණු වේ. පහත කරුණු මත අවධානය යොමු කරන්න:
- උඩුගත කිරීමේ සීමා : PHP වින්යාස ගොනුව (
php.ini) තුළupload_max_filesizeසහpost_max_sizeනිසි ලෙස සකසන්න. - MySQL උපරිම පැකට් ප්රමාණය :
max_allowed_packetසැකසුම පරීක්ෂා කර, විශාල ගොනු සඳහා එය සකස් කරන්න. - දෝෂ සැකසීම : උඩුගත කිරීමේ දෝෂ නිසි ලෙස සැකසී, පරිශීලකයන්ට පැහැදිලි ප්රතිචාර ලබා දෙන්න.
5. MySQL BLOB සඳහා වැදගත් සැලකිලි සහ හොඳ පුරුදු ක්රියාමාර්ග
කාර්ය සාධන බලපෑම සහ සුදුසුකම්
විශාල ප්රමාණයේ BLOB දත්ත භාවිතා කරන විට, පහත කරුණු සලකා බලමින් කාර්ය සාධන අඩු වීම වැළැක්විය හැක:
- ගබඩා එන්ජින් තේරීම : InnoDB භාවිතා කිරීමෙන් දත්ත කාර්යක්ෂමව ගබඩා කර, විමසුම් කාර්ය සාධනය වැඩි කරයි.
- විශේෂිත ගබඩා භාවිතය : BLOB දත්ත ගොනු පද්ධතියක් හෝ වස්තු ගබඩා සේවාවක් (උදාහරණයක් ලෙස Amazon S3) තුළ ගබඩා කර, දත්ත ගබඩාවේ ගොනු මාර්ගය පමණක් සුරකින්න.
- සුචක (Index) සුදුසුකම් : BLOB තීරුවල සෘජුව සුචක සෑදීමෙන් වැළැක්වන්න; ඒ වෙනුවට, අනෙකුත් තීරුවල භාවිතා කර විමසුම් සුදුසුකම් කරගන්න.
උපස්ථාපනය සහ ප්රතිස්ථාපනය සඳහා සැලකිලි
BLOB දත්ත සාමාන්යයෙන් විශාල ප්රමාණයක් ගනී. එබැවින්, උපස්ථාපන සහ ප්රතිස්ථාපන කිරීමේදී අතිරේක අවධානයක් අවශ්ය වේ:
- mysqldump භාවිතය : BLOB දත්ත කාර්යක්ෂමව උපස්ථාපනය කිරීමට
--hex-blobවිකල්පය භාවිතා කරන්න. - ඉන්ක්රිමෙන්ටල් උපස්ථාපන : වෙනස් වූ දත්ත පමණක් උපස්ථාපනය කිරීමෙන් සැකසුම් කාලය සහ ගබඩා භාවිතය අඩු කළ හැක.
ආරක්ෂක සැලකිලි
BLOB තීරුවල අහඹු බයිනරි දත්ත ගබඩා කළ හැකි බැවින්, පහත ආරක්ෂක අවදානම් නිසි ලෙස කළමනාකරණය කළ යුතුය:
- ආදාන වලංගුකරණය : උඩුගත කරන ලද ගොනු වර්ග සහ ප්රමාණය සේවාදායක පැත්තේ පරීක්ෂා කරන්න.
- SQL ඉන්ජෙක්ශන් වැළැක්වීම : PDO සහ සූදානම් ප්රකාශ (prepared statements) භාවිතා කර SQL ඉන්ජෙක්ශන් ප්රහාර වැළැක්වන්න.
- ප්රවේශ පාලනය : අනුමත නොකළ දත්ත ප්රවේශය වැළැක්වීමට සත්යාපන සහ අනුමත කිරීමේ ක්රම ශක්තිමත් කරන්න.
6. සාරාංශය
BLOB දත්ත වර්ගයේ වාසි සහ අවාසි
MySQL BLOB දත්ත වර්ගය බයිනරි දත්ත කාර්යක්ෂමව ගබඩා කිරීම සහ කළමනාකරණය කිරීම සඳහා ඉතා ප්රයෝජනවත් වේ. ප්රධාන වාසියක් වන්නේ රූප, වීඩියෝ, ශ්රව්ය ගොනු, PDF ලේඛන වැනි විවිධ දත්ත ආකෘති එකම ආකාරයෙන් දත්ත ගබඩාවේ සෘජුව ගබඩා කිරීමේ හැකියාවයි.
වාසි:
- දත්ත ගබඩාවේ මධ්යස්ථ කළමනාකරණය.
- අනෙකුත් වගු තීරුවල සමඟ සම්බන්ධ වූ විට සොයා ගැනීම සහ පෙරහන් කිරීම පහසුය.
- විවිධ වැඩසටහන් භාෂා වලින් ප්රවේශය සහ කළමනාකරණය කළ හැක.
අවාසි:
- විශාල ප්රමාණයේ BLOB දත්ත දත්ත ගබඩාවේ ප්රමාණය ඉක්මනින් වැඩි කර, කාර්ය සාධනයට බලපෑමක් ඇති කරයි.
- ගොනු පද්ධති සමඟ සැසඳුන විට කියවීම/ලියීමේ වේගය අඩු විය හැක.
- නිසි ගබඩා එන්ජින් වින්යාසය අවශ්ය වන අතර, කළමනාකරණය සංකීර්ණ විය හැක.
සුදුසු දත්ත වර්ගය තේරීමේ වැදගත්කම
BLOB දත්ත වර්ගයක් තෝරා ගැනීමේදී, පහත මාර්ගෝපදේශයන් සලකා බලන්න:
- දත්ත ප්රමාණය සහ අරමුණ සලකා බලන්න :
- කුඩා රූප හෝ දත්ත සඳහා, සාමාන්ය BLOB වර්ගය ප්රමාණවත් වේ.
- විශාල ගොනු සඳහා, ගොනු පද්ධතියක් හෝ වලාකුළු ගබඩාවක (cloud storage) ගබඩා කර, දත්ත ගබඩාවේ ගොනු මාර්ගය සටහන් කිරීම වඩාත් සුදුසු විය හැක.
- ගබඩා සහ කාර්ය සාධනය අතර සමතුලිත කිරීම :
- සම්පූර්ණ දත්ත ගබඩාවේ කාර්ය සාධනය රැක ගැනීමට නිතර උපස්ථාපන සහ සුදුසුකම් සිදු කරන්න.
- ආරක්ෂක අවදානම් කළමනාකරණය :
- දත්ත අඛණ්ඩතාව සහ ප්රවේශ අවසර නිසි ලෙස කළමනාකරණය කරන්න.
To effectively use the BLOB data type, it is important to understand its characteristics and apply it carefully based on specific use cases.
BLOB දත්ත වර්ගය ප්රභාවී ලෙස භාවිතා කිරීමට, එහි ලක්ෂණ තේරුම් ගැනීම සහ විශේෂිත භාවිතා අවස්ථා අනුව සැලකිලිමත් ලෙස යෙදවීම වැදගත් වේ.

7. සාමාන්ය ප්රශ්න (FAQ)
Q1: BLOB සහ TEXT දත්ත වර්ග අතර වෙනස කුමක්ද?
A1: BLOB සහ TEXT වර්ග දෙකම විශාල ප්රමාණයේ දත්ත ගබඩා කිරීමට භාවිතා කරයි, නමුත් ඒවා සැලසුම් කරන දත්ත වර්ගය සහ ක්රියාකාරිත්වය වෙනස් වේ.
- BLOB වර්ගය බයිනරි දත්ත (උදාහරණként රූප, වීඩියෝ, ශ්රව්ය ගොනු) ගබඩා කිරීමට නිර්මාණය කර ඇත. දත්ත බයිට් වලින් සැලසුම් කරයි, සහ සංසන්දන බයිනරි සංසන්දනය භාවිතා කර සිදු කරයි.
- TEXT වර්ගය පෙළ දත්ත ගබඩා කිරීමට නිර්මාණය කර ඇත. සංසන්දන සහ අනුක්රමණය අක්ෂර සමුහ සහ සම්බන්ධතා නීති මත සිදු කරයි.
Q2: BLOB තීරුවක විශාල ගොනු ගබඩා කිරීම දත්ත ගබඩා කාර්ය සාධනයට බලපාද?
A2: ඔව්. විශාල ගොනු ගණනක් ගබඩා කිරීම දත්ත ගබඩා ප්රමාණය ඉක්මනින් වැඩි කරයි, සහ කාර්ය සාධනයට අහිතකර බලපෑම් ඇති කරයි. පහත බලපෑම් සිදුවිය හැක:
- විමසුම් සැකසීමේ වේගය මන්දගාමී වේ.
- උපස්ථාපනය සහ ප්රතිස්ථාපනය කාලය වැඩි වේ.
- ඉහළ ගබඩා වියදම්. එයට ප්රතිකාරයක් ලෙස, ගොනු ගොනු පද්ධතියේ ගබඩා කර, දත්ත ගබඩාවේ ගොනු මාර්ගය පමණක් සුරකින්න.
Q3: BLOB දත්ත පිටපත් කිරීම සඳහා කාර්යක්ෂම ක්රමයක් තිබේද?
A3: MySQL mysqldump විධානය භාවිතා කරන විට, --hex-blob විකල්පය සඳහන් කිරීමෙන් BLOB දත්ත හෙක්ස්ඩෙසිමල් ආකාරයෙන් පිටපත් කළ හැක. මෙන්න විශේෂ උදාහරණයක්:
mysqldump --user=username --password=password --hex-blob database_name > backup.sql
මෙම ක්රමය BLOB දත්ත අඩංගු වගු ආරක්ෂිතව සහ නිවැරදිව පිටපත් කිරීමේ හැකියාව සලසයි.
Q4: BLOB තීරුවේ කොටසක් පමණක් ලබා ගැනීමට හැකිද?
A4: ඔව්. MySQL හි SUBSTRING ක්රියාවලිය භාවිතා කර BLOB දත්තයේ කොටසක් ලබා ගත හැක. උදාහරණként, පළමු 100 බයිට් ලබා ගැනීමට:
SELECT SUBSTRING(data, 1, 100) AS partial_data FROM sample_table WHERE id = 1;
සම්පූර්ණ දත්ත කට්ටලය සැලසුම් කිරීමේ වඩා, කොටස් දත්ත ලබා ගැනීම සැකසුම් කාර්යක්ෂමතාව වැඩි කරයි.
Q5: BLOB දත්ත සැලසුම් කිරීමේදී සලකිය යුතු ආරක්ෂක කරුණු මොනවාද?
A5: BLOB තීරුව arbitrary බයිනරි දත්ත ගබඩා කළ හැකි බැවින්, පහත ආරක්ෂක අවදානම් නිසි ලෙස කළමනාකරණය කළ යුතුය:
- උඩුගත කරන ලද දත්ත වල සත්යාපනය :
- අවසර නොලත් හෝ දුෂ්කර දත්ත ගබඩා වීම වැළැක්වීමට ගොනු වර්ග සහ ප්රමාණය පරීක්ෂා කරන්න.
- ගොනු දිගුව පමණක් නොව MIME වර්ග සහ ගොනු අන්තර්ගතයද පරීක්ෂා කරන්න.
- SQL ඉන්ජෙක්ශන් වැළැක්වීම :
- පූර්ව-තැන්පත් ප්රකාශ භාවිතා කර, පරිශීලක ඇතුළත් කර ඇති දත්ත SQL විමසුම් වලට සෘජුව ඇතුළත් කිරීමෙන් වැළැක්වන්න.
- ප්රවේශ පාලනය :
- ගබඩා කර ඇති BLOB දත්ත සඳහා කියවීමේ අවසර නිසි ලෙස කළමනාකරණය කරන්න.
Q6: BLOB දත්ත සංකුචනය කිරීමේ ක්රමයක් තිබේද?
A6: BLOB දත්ත සංකුචනය කිරීම යෙදුම් මට්ටමේ සැකසීම අවශ්ය වේ. උදාහරණként, PHP හි Gzip ආකාරයෙන් දත්ත සංකුචනය කර සුරැකීමට පෙර:
$compressedData = gzcompress(file_get_contents('file.jpg'));
දත්ත සුරැකීමට පෙර සංකුචනය කර, ලබා ගැනීමේදී විස්තාරණය කිරීමෙන් ගබඩා භාවිතය අඩු කළ හැක.
Q7: MySQL හි BLOB භාවිතා කරන විට කුමන ගබඩා එන්ජින් නිර්දේශ කරයි?
A7: BLOB දත්ත වර්ගය භාවිතා කරන විට, InnoDB සාමාන්යයෙන් නිර්දේශ කරයි. InnoDB දත්ත අඛණ්ඩතාව රැකගෙන කාර්ය සාධනය වැඩි කරන විශේෂාංග ලබා දෙයි. එNevertheless, ඔබට විශාල ප්රමාණයේ BLOB දත්ත ගබඩා කිරීමට අවශ්ය නම්, ගොනු පද්ධතියක් හෝ වලාකුළු ගබඩා (උදාහරණként Amazon S3) භාවිතා කිරීමත් සලකා බලන්න.


