Apache Derby একটি হালকা, Java-ভিত্তিক, ওপেন সোর্স রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। এটি সম্পূর্ণভাবে Java দ্বারা তৈরি এবং এটি এমবেডেবল ডেটাবেস হিসেবে কাজ করে, যার মানে হল যে এটি অ্যাপ্লিকেশনগুলির মধ্যে সরাসরি অন্তর্ভুক্ত করা যায়। Apache Derby এর আর্কিটেকচারটি বেশ শক্তিশালী এবং কার্যকর, যাতে এটি ডেটাবেস অপারেশনগুলিকে দক্ষভাবে পরিচালনা করতে সক্ষম হয়।
এটির আর্কিটেকচার দুটি প্রধান অংশে বিভক্ত: স্টোরেজ ইঞ্জিন এবং ডেটাবেস সার্ভার। নিচে এটির মূল উপাদানগুলি বিস্তারিতভাবে আলোচনা করা হলো।
Apache Derby এর স্টোরেজ ইঞ্জিন ডেটা সংরক্ষণের জন্য মূলভাবে দায়ী। এটি ডেটাবেসের টেবিল, ইনডেক্স, লজিক্যাল কাঠামো, এবং ডেটা স্টোরেজের দায়িত্ব পালন করে। স্টোরেজ ইঞ্জিনটির দুটি প্রধান কাজ হল:
এটি Apache Derby এর প্রধান কম্পোনেন্ট যা ডেটাবেস অ্যাপ্লিকেশন এবং ডেটাবেস ইঞ্জিনের মধ্যে ইন্টারফেস হিসেবে কাজ করে। এই স্তরের মাধ্যমে ডেটাবেস অপারেশন (যেমন SELECT, INSERT, UPDATE, DELETE) চালানো হয়।
এক্সিকিউশন ইঞ্জিন ডেটাবেসের SQL কোয়েরি প্রক্রিয়া এবং ফলাফল তৈরির জন্য দায়ী। এটি SQL কোয়েরিগুলির জন্য পরিকল্পনা তৈরি করে এবং তাদের কার্যকর করে। এর প্রধান কাজ:
Apache Derby তে ট্রানজেকশন ম্যানেজার ডেটাবেসে নিরাপদ এবং অ্যাটমিক ট্রানজেকশন পরিচালনা করে। এটি নিম্নলিখিত কাজগুলি সম্পন্ন করে:
Apache Derby একটি নেটওয়ার্ক সার্ভার চালাতে সক্ষম। সার্ভারটি ক্লায়েন্ট থেকে ডেটাবেসের অ্যাক্সেস প্রদান করে এবং রিমোট ডেটাবেস সংযোগের জন্য সার্ভার হিসেবে কাজ করে। এটি Derby Network Server নামেও পরিচিত।
ডেটাবেস ক্যাটালগ হলো একটি মেটাডেটা স্টোরেজ যা সমস্ত ডেটাবেস অবজেক্ট (যেমন টেবিল, ইনডেক্স, কনস্ট্রেইন্ট) এবং তাদের বৈশিষ্ট্যসমূহ সংরক্ষণ করে। এটি ডেটাবেসের কাঠামো সম্পর্কে তথ্য সরবরাহ করে।
Apache Derby ডেটাবেসের জন্য একটি লগিং সিস্টেম প্রদান করে, যা সকল পরিবর্তন এবং ট্রানজেকশন লগ করে। এটি ডেটাবেসের নিরাপত্তা ও ইনটেগ্রিটি নিশ্চিত করে।
+--------------------------------------------------+
| Application |
+--------------------------------------------------+
| |
JDBC Interface Network Server
| |
+-------------------+ +--------------------------+
| Query Optimizer | | Remote Database Access |
+-------------------+ +--------------------------+
| |
+-------------------+ +---------------------------+
| Execution Engine | | Transaction Manager |
+-------------------+ +---------------------------+
| |
+------------+ +------------------+
| Storage | | Database Catalog |
| Engine | | (Metadata Store) |
+------------+ +------------------+
Apache Derby একটি Java-ভিত্তিক রিলেশনাল ডেটাবেস সিস্টেম, যার আর্কিটেকচারটি একটি ইন্টিগ্রেটেড স্টোরেজ ইঞ্জিন, এক্সিকিউশন ইঞ্জিন, ট্রানজেকশন ম্যানেজার, এবং ডেটাবেস সার্ভারসহ একাধিক উপাদান দ্বারা গঠিত। এর এমবেডেবল সিস্টেম এবং রিমোট অ্যাক্সেস ক্ষমতা এটি ছোট থেকে মাঝারি আকারের অ্যাপ্লিকেশনের জন্য আদর্শ করে তোলে।
Embedded Mode হলো Apache Derby ডেটাবেসের একটি কনফিগারেশন যেখানে ডেটাবেসটি সরাসরি অ্যাপ্লিকেশনের মধ্যে এমবেড করা হয়। এই মোডে, Apache Derby কোনো স্ট্যান্ডঅ্যালোন সার্ভারের মতো কাজ না করে, বরং অ্যাপ্লিকেশনের মধ্যে ইনস্ট্যান্টভাবে চলমান থাকে এবং সমস্ত ডেটাবেস অপারেশন অ্যাপ্লিকেশনের অভ্যন্তরে সঞ্চালিত হয়। এটি প্রধানত ছোট থেকে মাঝারি আকারের ডেভেলপমেন্ট এবং ডেস্কটপ অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয়।
এমবেডেড মোডে Apache Derby একটি স্বতন্ত্র ডেটাবেস সার্ভার চালায় না। বরং, ডেটাবেসের সমস্ত কার্যাবলী অ্যাপ্লিকেশনের মধ্যে একীভূত হয়ে চলে। এতে ডেটাবেস সার্ভার চালানোর জন্য কোনো নেটওয়ার্ক কনফিগারেশনের প্রয়োজন হয় না।
এমবেডেড মোডে Apache Derby কম রিসোর্স ব্যবহার করে, কারণ এতে কোনো সার্ভার প্রয়োজন হয় না। এটি ছোট এবং মাঝারি আকারের অ্যাপ্লিকেশনগুলির জন্য আদর্শ, যেখানে ডেটাবেসের সহজ এবং দ্রুত প্রবেশাধিকার প্রয়োজন।
এই মোডে ডেটাবেস কনফিগারেশন খুবই সহজ। অ্যাপ্লিকেশনটি যখন চালু হয়, তখন ডেটাবেসও স্বয়ংক্রিয়ভাবে শুরু হয়ে যায়, এবং এর জন্য সার্ভারের মতো কোনো আলাদা পোর্ট বা কনফিগারেশন প্রয়োজন হয় না।
ডেটাবেস অ্যাক্সেস করার জন্য অ্যাপ্লিকেশনটি JDBC API ব্যবহার করে। অ্যাপ্লিকেশন এবং ডেটাবেসের মধ্যে যোগাযোগ JDBC কানেকশন মাধ্যমে সম্পন্ন হয়।
এমবেডেড মোডে, ডেটাবেস অ্যাপ্লিকেশনের অংশ হিসেবে কাজ করে, এবং তাই নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল অ্যাপ্লিকেশনের মাধ্যমে পরিচালিত হয়।
এমবেডেড মোডে অ্যাপ্লিকেশনটি নিজেই ডেটাবেস তৈরি করতে এবং পরিচালনা করতে সক্ষম। SQL কুয়েরি, ইনডেক্সিং, ট্রানজেকশন এবং অন্যান্য ডেটাবেস কার্যাবলী সরাসরি অ্যাপ্লিকেশন কোডের মাধ্যমে সম্পাদিত হয়।
Embedded Mode এ একটি ডেটাবেস তৈরি করতে নিচের JDBC কমান্ড ব্যবহার করা যেতে পারে:
Connection conn = DriverManager.getConnection("jdbc:derby:myDB;create=true");
এটি ডেটাবেস myDB তৈরি করবে (যদি এটি আগে থেকে না থাকে) এবং ডেটাবেসে সংযোগ স্থাপন করবে।
ডেটাবেস তৈরি হওয়ার পর, আপনি SQL কুয়েরি ব্যবহার করে টেবিল তৈরি করতে পারবেন:
Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT)");
ডেটাবেসটি বন্ধ করতে আপনি নিচের কোড ব্যবহার করতে পারেন:
conn.close();
আপনি একাধিক ডেটাবেসও পরিচালনা করতে পারেন। একে ব্যবহার করার জন্য একটি নতুন ডেটাবেস কানেকশন খুলতে হবে:
Connection conn = DriverManager.getConnection("jdbc:derby:/path/to/database;create=false");
Embedded Mode এ Apache Derby ডেটাবেসে সংযোগ স্থাপন করার জন্য আপনাকে সঠিক JDBC URL ব্যবহার করতে হবে। এই URL ডেটাবেস লোকেশন এবং বিভিন্ন কনফিগারেশন সেটিংস নির্ধারণ করে।
Connection conn = DriverManager.getConnection("jdbc:derby:myDB");
এটি ডেটাবেস myDB-তে সংযোগ স্থাপন করবে, এবং যদি এটি না থাকে, তবে এটি তৈরি হবে।
Apache Derby Embedded Mode একটি শক্তিশালী, হালকা, এবং সহজ ব্যবহারের ডেটাবেস সিস্টেম, যা ছোট থেকে মাঝারি আকারের অ্যাপ্লিকেশন এবং ডেস্কটপ সফটওয়্যার ডেভেলপমেন্টের জন্য আদর্শ। এটি অ্যাপ্লিকেশন কোডের মাধ্যমে এমবেড করা যায় এবং ডেটাবেসের সাথে সরাসরি ইন্টিগ্রেট করা যায়, যা উন্নয়ন প্রক্রিয়াকে সহজ এবং দ্রুত করে তোলে। তবে, এর স্কেলেবলতা এবং নেটওয়ার্ক সাপোর্ট সীমিত, তাই বৃহত্তর বা ডিস্ট্রিবিউটেড সিস্টেমে এটি ব্যবহৃত হবে না।
Apache Derby একটি এমবেডেবল ডেটাবেস সিস্টেম হলেও এটি Client-Server Mode এ কাজ করার ক্ষমতাও রাখে, যেখানে Apache Derby Server এবং Client অ্যাপ্লিকেশন আলাদাভাবে চলে। এই পরিবেশে, সার্ভার এবং ক্লায়েন্ট একে অপরের সাথে নেটওয়ার্কের মাধ্যমে যোগাযোগ করে এবং ডেটাবেস পরিচালনা করে। Client-Server Mode সাধারণত তখন ব্যবহৃত হয় যখন একাধিক ক্লায়েন্টকে একই ডেটাবেসে অ্যাক্সেস দেওয়া হয় বা অ্যাপ্লিকেশন এবং ডেটাবেস একে অপরের থেকে আলাদা থাকে।
Apache Derby Client-Server Mode কনফিগার করতে হলে আপনাকে নিচের ধাপগুলো অনুসরণ করতে হবে।
প্রথমে, আপনি Apache Derby সার্ভার চালু করতে হবে যা Network Server হিসেবে কাজ করবে। এটি একটি TCP/IP ভিত্তিক নেটওয়ার্ক সার্ভার হবে, যার মাধ্যমে ক্লায়েন্টরা ডেটাবেসে অ্যাক্সেস করতে পারবে।
আপনি startNetworkServer.bat ফাইলটি ব্যবহার করে সার্ভার চালু করতে পারেন। এটি সাধারণত Apache Derby ইনস্টলেশনের bin ফোল্ডারে পাওয়া যাবে।
C:\derby\bin\startNetworkServer.bat
Linux বা MacOS এ, আপনি startNetworkServer.sh স্ক্রিপ্ট ব্যবহার করতে পারেন:
$DERBY_HOME/bin/startNetworkServer.sh
এটি Apache Derby Network Server চালু করবে এবং ডিফল্টভাবে 1527 পোর্টে নেটওয়ার্ক কানেকশন গ্রহণ করবে।
ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করতে হলে, আপনাকে JDBC (Java Database Connectivity) ব্যবহার করতে হবে। ক্লায়েন্ট অ্যাপ্লিকেশন সার্ভারের মাধ্যমে ডেটাবেসে সংযোগ স্থাপন করবে।
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DerbyClient {
public static void main(String[] args) {
try {
// ড্রাইভার লোড
Class.forName("org.apache.derby.client.ClientDriver");
// সার্ভারে ডেটাবেসের সাথে সংযোগ স্থাপন
String url = "jdbc:derby://localhost:1527/myDB;create=true";
Connection conn = DriverManager.getConnection(url);
// স্টেটমেন্ট তৈরি
Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT)");
System.out.println("Employee টেবিল তৈরি করা হয়েছে!");
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে, আপনি jdbc:derby://localhost:1527/myDB
URL দিয়ে ডেটাবেসের সাথে সংযোগ স্থাপন করবেন, যেখানে:
localhost
হল সার্ভারের আইপি বা হোস্টনেম।1527
হল ডিফল্ট পোর্ট, তবে আপনি কনফিগারেশনের মাধ্যমে এটি পরিবর্তন করতে পারেন।myDB
হল ডেটাবেসের নাম।Client-Server Mode এ SQL কুয়েরি একইভাবে পরিচালিত হয় যেমন আপনি Embedded Mode এ করতেন, তবে এখানে কুয়েরি পাঠানো হয় সার্ভারের কাছে এবং সার্ভার তা পরিচালনা করে।
stmt.executeUpdate("INSERT INTO employee VALUES (1, 'John Doe', 30)");
ResultSet rs = stmt.executeQuery("SELECT * FROM employee");
while (rs.next()) {
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + ", Age: " + rs.getInt("age"));
}
Client-Server Mode এর মধ্যে, ক্লায়েন্ট সার্ভারের সাথে TCP/IP কানেকশনের মাধ্যমে যোগাযোগ করে। ডেটাবেস সার্ভারটি Derby Network Server-এর মাধ্যমে চলতে থাকে, যেখানে সার্ভার ডেটাবেসের সব অপারেশন সম্পাদন করে এবং ক্লায়েন্ট কেবল সার্ভারের কাছে কুয়েরি পাঠায়।
আপনি derby.properties ফাইলের মাধ্যমে নেটওয়ার্ক সার্ভারের পোর্ট কনফিগার করতে পারেন। ডিফল্ট পোর্ট 1527 হলেও এটি পরিবর্তন করা সম্ভব।
উদাহরণ:
derby.drda.portNumber=1528
এছাড়া, আপনি সার্ভারের সিকিউরিটি ও অ্যাক্সেস কন্ট্রোল কনফিগার করতে পারেন।
যখন আপনার কাজ শেষ হয়ে যাবে, তখন আপনি Network Server বন্ধ করতে পারবেন।
C:\derby\bin\stopNetworkServer.bat
$DERBY_HOME/bin/stopNetworkServer.sh
এটি সার্ভার বন্ধ করে দেবে।
Apache Derby Client-Server Mode ডেটাবেসের সাথে একাধিক ক্লায়েন্ট সংযোগ স্থাপনের একটি শক্তিশালী পদ্ধতি। এতে সার্ভার এবং ক্লায়েন্ট আলাদাভাবে কাজ করে এবং ডেটাবেস পরিচালনার জন্য নেটওয়ার্কের মাধ্যমে যোগাযোগ স্থাপন করা হয়। এটি সাধারণত বড় বা ডিসেন্ট্রালাইজড অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে একাধিক ক্লায়েন্ট সার্ভারের ডেটাবেসে অ্যাক্সেস করতে পারে।
Apache Derby একটি হালকা ও Java-ভিত্তিক রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। এটি Derby Engine নামে পরিচিত মূল ডেটাবেস ইঞ্জিন ব্যবহার করে কাজ করে। Derby Engine একটি সম্পূর্ণরূপে Java দিয়ে তৈরি এবং এটি এমবেডেবল (embeddable) ডেটাবেস হিসেবে ব্যবহৃত হয়, যেখানে এটি ডেভেলপারদের Java অ্যাপ্লিকেশনগুলিতে সরাসরি এমবেড করে ব্যবহার করার সুবিধা দেয়।
এই বিভাগের মাধ্যমে Derby Engine এবং ডেটাবেসের মূল ধারণা সম্বন্ধে বিস্তারিত আলোচনা করা হবে।
Derby Engine হল Apache Derby ডেটাবেসের অন্তর্নিহিত ইঞ্জিন, যা সমস্ত ডেটাবেস অপারেশন পরিচালনা করে। এটি SQL কুয়েরি প্রক্রিয়াকরণ, ডেটাবেস ট্রানজেকশন, ডেটা ম্যানিপুলেশন এবং অন্যান্য ডেটাবেস সম্পর্কিত কার্যাবলী সম্পাদন করে।
Derby Engine এর মূল কাজগুলি হলো:
Derby Engine, এমবেডেড ডেটাবেস হিসেবে JDBC (Java Database Connectivity) বা JPA (Java Persistence API) এর মাধ্যমে ব্যবহৃত হতে পারে। এটি Java Virtual Machine (JVM) এ কার্যকরীভাবে চলে এবং অন্যান্য Java অ্যাপ্লিকেশনগুলির সঙ্গে সহজে ইন্টিগ্রেট করা যায়।
ডেটাবেস একটি সংগঠিত তথ্য সঞ্চয়ের ব্যবস্থা যেখানে তথ্যটি বিভিন্ন টেবিলের মধ্যে সংরক্ষিত থাকে। রিলেশনাল ডেটাবেস সিস্টেমে (RDBMS) এই তথ্যগুলি টেবিল, কলাম, এবং রো আকারে থাকে। Apache Derby একটি রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS), যা তথ্য সঞ্চয়, পরিচালনা এবং পুনরুদ্ধার করার জন্য SQL ব্যবহার করে।
ডেটাবেসের মধ্যে তথ্য সাধারণত টেবিল আকারে সঞ্চিত থাকে। প্রতিটি টেবিল এক বা একাধিক কলাম (columns) ও রো (rows) দিয়ে গঠিত। টেবিলের প্রতিটি রো একটি একক ডেটা ইউনিট (যেমন, একটি ব্যক্তি বা একটি পণ্য) প্রকাশ করে এবং প্রতিটি কলাম সেই ইউনিটের নির্দিষ্ট বৈশিষ্ট্য (যেমন, নাম, বয়স, দাম) ধারণ করে।
প্রাইমারি কী একটি টেবিলের এমন একটি কলাম যা প্রতিটি রোকে ইউনিকভাবে চিহ্নিত করে। একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপনের জন্য প্রাইমারি কী অত্যন্ত গুরুত্বপূর্ণ।
ফরেন কী একটি কলাম যা একটি টেবিলের রোকে অন্য একটি টেবিলের প্রাইমারি কী দিয়ে সংযুক্ত করে। এটি দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করতে সহায়তা করে।
রিলেশন হল ডেটাবেসের দুটি টেবিলের মধ্যে সম্পর্ক। একটি রিলেশন একটি টেবিলের তথ্য অন্য একটি টেবিলের তথ্যের সাথে যুক্ত করে।
ইনডেক্স হল ডেটাবেসের এমন একটি বৈশিষ্ট্য যা টেবিলের তথ্য দ্রুত অনুসন্ধান করতে সহায়তা করে। এটি ডেটাবেসের পারফরম্যান্স বাড়াতে সহায়ক, বিশেষত যখন বড় ডেটাবেসে দ্রুত অনুসন্ধান প্রয়োজন।
SQL হল ডেটাবেসের সাথে যোগাযোগের ভাষা, যা ডেটাবেসে তথ্য সংযোজন, আপডেট, মুছে ফেলা, এবং অনুসন্ধান করার জন্য ব্যবহৃত হয়। Apache Derby SQL সমর্থন করে, যা ANSI SQL এর কিছু মূল অংশ অন্তর্ভুক্ত করে।
ট্রানজেকশন হল একাধিক ডেটাবেস অপারেশন যা একত্রে সম্পন্ন হতে হবে। যদি একটিও অপারেশন ব্যর্থ হয়, তবে পুরো ট্রানজেকশনটি রোলব্যাক করা হয়। ট্রানজেকশন ACID বৈশিষ্ট্য নিশ্চিত করে:
Derby Engine একটি শক্তিশালী এবং Java-ভিত্তিক ডেটাবেস ইঞ্জিন, যা ডেটাবেস অপারেশন, ট্রানজেকশন ম্যানেজমেন্ট, এবং SQL কুয়েরি এক্সিকিউশনকে পরিচালনা করে। এটি Apache Derby ডেটাবেস সিস্টেমের মূল অংশ এবং এটি ডেটাবেসের কার্যক্ষমতা এবং ব্যবস্থাপনা নিশ্চিত করে। ডেটাবেসের মূল ধারণাগুলি, যেমন টেবিল, প্রাইমারি কী, ফরেন কী, রিলেশন, এবং ট্রানজেকশন, ডেটাবেসের কার্যকরী অপারেশন এবং ডেটা ম্যানিপুলেশনের জন্য অপরিহার্য।
common.read_more