ORM (Object Relational Mapping) একটি পদ্ধতি যা ডেটাবেস এবং প্রোগ্রামিং ভাষার মধ্যে সম্পর্ক স্থাপন করে। এটি ডেটাবেস টেবিলগুলিকে প্রোগ্রামিং ভাষার ক্লাসের সাথে মানচিত্রিত (map) করে এবং ডেটাবেসের রেকর্ডগুলিকে অবজেক্ট হিসেবে কাজ করতে সক্ষম করে। অর্থাৎ, ORM ডেটাবেসের কাজগুলোকে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে রূপান্তর করে, যাতে ডেটাবেসের সাথে কাজ করার সময় প্রোগ্রামারকে SQL স্টেটমেন্ট লিখতে না হয় এবং সরাসরি Python কোডের মাধ্যমে ডেটা পরিচালনা করা যায়।
SQLAlchemy ORM ব্যবহার করে, আপনি ডেটাবেসের টেবিলগুলোকে Python ক্লাসের মধ্যে রূপান্তর করতে পারেন এবং সেই ক্লাসের অবজেক্টের মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
ORM এর মূল বৈশিষ্ট্য
- ডেটাবেস টেবিলের অবজেক্ট হিসেবে উপস্থাপন:
ORM ডেটাবেস টেবিলগুলোকে Python ক্লাসের মাধ্যমে উপস্থাপন করে। প্রতিটি কলাম একটি অ্যাট্রিবিউট হিসেবে কাজ করে এবং এই অবজেক্টের মাধ্যমে ডেটাবেসের রেকর্ডের সাথে কাজ করা যায়। - CRUD অপারেশন:
ORM ব্যবহার করে আপনি ডেটাবেসে Create, Read, Update, এবং Delete (CRUD) অপারেশন করতে পারেন। এগুলো সব Python কোডের মাধ্যমে করা যায়, কোনো SQL লেখার প্রয়োজন হয় না। - SQL কোয়েরি না লেখার সুবিধা:
ORM আপনাকে সরাসরি SQL স্টেটমেন্ট লেখার থেকে মুক্তি দেয়। ডেটাবেস টেবিল এবং কলামের সাথে কাজ করতে Python অবজেক্ট ব্যবহার করে, যা কোডকে আরও পরিষ্কার এবং রিডেবল করে তোলে। - ডেটাবেস স্বাধীনতা:
ORM ব্যবহার করে ডেটাবেসের জন্য একক কোড বেস তৈরি করা যায়, যা একাধিক ডেটাবেস ইঞ্জিনের সাথে কাজ করতে সক্ষম। অর্থাৎ, আপনি একটি ডেটাবেস থেকে অন্য ডেটাবেসে পরিবর্তন করলেও ORM কোডে খুব বেশি পরিবর্তন করতে হয় না। - Relationship Handling:
ORM ডেটাবেসের টেবিলগুলির মধ্যে সম্পর্ক পরিচালনা করতে সাহায্য করে। যেমন, One-to-One, One-to-Many, এবং Many-to-Many সম্পর্ক সহজে তৈরি এবং পরিচালনা করা যায়।
ORM কেন ব্যবহার করা হয়?
- SQL এর জন্য সরাসরি কোড না লিখে কাজ করা:
ORM ব্যবহারের প্রধান সুবিধা হলো ডেটাবেসের সাথে কাজ করতে SQL স্টেটমেন্ট লিখতে হয় না। ORM Python ক্লাসের মাধ্যমে এই কাজটি সহজ করে দেয়, যা কোডিংয়ের ক্ষেত্রে সহজতা এনে দেয়। - ডেটাবেস মডেলিং:
ORM ডেটাবেসের কাঠামো বা মডেলিং প্রক্রিয়া সহজ করে তোলে। টেবিলের স্ট্রাকচার, কলাম, কনস্ট্রেইন্ট ইত্যাদি সব কিছু Python কোডের মধ্যে সংজ্ঞায়িত করা যায়। - পারফরম্যান্স অপটিমাইজেশন:
ORM ব্যবহার করে ডেটাবেস থেকে তথ্য লোড করা এবং প্রাসঙ্গিক ডেটা ফেচিং (lazy/eager loading) সহজে করা যায়। এছাড়া, ORM একাধিক অবজেক্টে একযোগে অপারেশন করতে সক্ষম। - ট্রানজেকশন ম্যানেজমেন্ট:
ORM ডেটাবেস ট্রানজেকশন পরিচালনা সহজ করে। এটি ডেটাবেসের মধ্যে পরিবর্তন সঠিকভাবে কমিট বা রোলব্যাক করার ব্যবস্থা সরবরাহ করে। - ডেভেলপমেন্টের গতির উন্নতি:
ORM ডেটাবেস ম্যানিপুলেশন দ্রুত এবং সহজতর করে, যার ফলে ডেভেলপারদের জন্য কাজের গতি বাড়ে। SQL কিউরি লেখার পরিবর্তে অবজেক্ট মডেল ব্যবহার করা ডেভেলপমেন্ট সময় কমাতে সাহায্য করে। - সিকিউরিটি:
ORM SQL ইনজেকশন প্রতিরোধে সাহায্য করে, কারণ ORM নিজে SQL কোড তৈরির সময় ইস্যু হওয়া নিরাপত্তা সমস্যাগুলোর প্রতি সতর্ক থাকে। এটি ডেটা ইনসার্ট, আপডেট ইত্যাদি অপারেশনগুলোকে নিরাপদভাবে পরিচালনা করতে পারে।
ORM এর উদাহরণ (SQLAlchemy ORM)
ধরা যাক, আমাদের একটি User টেবিল আছে, যেখানে id, name, এবং age কলাম রয়েছে। নিচে ORM ব্যবহার করে এটি কিভাবে মডেল করা যায়:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# Base ক্লাস তৈরি
Base = declarative_base()
# User ক্লাস তৈরি, যা টেবিলের মতো কাজ করবে
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db')
# টেবিল তৈরি করা
Base.metadata.create_all(engine)
# সেশন তৈরি
Session = sessionmaker(bind=engine)
session = Session()
# নতুন ইউজার ইনসার্ট করা
new_user = User(name="John", age=25)
session.add(new_user)
session.commit()
# ইউজার রিড করা
users = session.query(User).all()
for user in users:
print(user.name, user.age)
# সেশন বন্ধ করা
session.close()
এই কোডে:
Userক্লাসটি ডেটাবেসেরusersটেবিলের সাথে সম্পর্কিত।- SQLAlchemy ORM ব্যবহার করে অবজেক্ট তৈরি, সেভ, এবং ডেটাবেস থেকে রিড করা হয়েছে।
sessionঅবজেক্ট ব্যবহার করে CRUD অপারেশন সম্পন্ন করা হয়েছে।
সারাংশ
ORM (Object Relational Mapping) একটি গুরুত্বপূর্ণ কৌশল যা ডেটাবেস এবং প্রোগ্রামিং ভাষার মধ্যে সম্পর্ক স্থাপন করে। এটি SQLAlchemy এর মাধ্যমে ডেটাবেস ম্যানিপুলেশনকে সরল করে, এবং প্রোগ্রামারদের SQL স্টেটমেন্ট না লিখে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে কাজ করার সুযোগ দেয়। ORM ব্যবহারের মাধ্যমে ডেটাবেস পরিচালনা সহজ, দ্রুত, নিরাপদ এবং স্কেলেবল হয়।
Read more