ডেটাবেস ও সার্ভিস
ডেটাবেস, Redis ও RabbitMQ
PostgreSQL (pgvector-সহ), MySQL, MariaDB, SQL Server, Redis এবং RabbitMQ — ডেটাবেস তৈরি, অ্যাপের সাথে সংযোগ, ব্রাউজার থেকে পরিচালনা, ডেটা ইমপোর্ট/এক্সপোর্ট ও স্বয়ংক্রিয় ব্যাকআপ গাইড।
কোন ইঞ্জিনটি বেছে নেবেন?
| ইঞ্জিন | কোন ধরনের প্রজেক্টের জন্য উপযুক্ত | বিশেষ সুবিধা ও লক্ষণীয় বিষয় |
|---|---|---|
| PostgreSQL | যেকোনো নতুন প্রজেক্টের জন্য সেরা ডিফল্ট চয়েস — বিশেষ করে Django, Prisma বা আধুনিক ওয়েব অ্যাপ | pgvector এক্সটেনশনের মাধ্যমে সহজেই AI ভেক্টর সার্চ (embeddings) ব্যবহার করা যায় |
| MySQL 8.4 | যেসব অ্যাপ্লিকেশন সুনির্দিষ্টভাবে MySQL নির্ভর | — |
| MariaDB | Laravel, WordPress এবং সাধারণ PHP প্রজেক্ট | MySQL-এর সাথে প্রায় শতভাগ সামঞ্জস্যপূর্ণ ও হালকা |
| SQL Server 2025 | ASP.NET Core / EF Core প্রজেক্ট এবং পুরনো .bak ফাইল রিস্টোর করার জন্য | পিসির SSMS থেকে সরাসরি যুক্ত হওয়া যায়; Express সংস্করণে প্রতি ডেটাবেসে সর্বোচ্চ ৫০ GB স্টোরেজ সাপোর্ট করে |
| Redis 7.4 | দ্রুতগতির ক্যাশ, সেশন ও ব্যাকগ্রাউন্ড কিউ (BullMQ, Celery, Laravel Queue) | এটি মূল ডেটাবেসের পাশাপাশি একটি সহযোগী ইন-মেমোরি সার্ভিস হিসেবে কাজ করে |
| RabbitMQ 4.1 | মেসেজ কিউ এবং একাধিক মাইক্রোসার্ভিস বা অ্যাপের মধ্যে কাজ আদান-প্রদান | অ্যাপের প্রাইভেট নেটওয়ার্কে মেসেজ ব্রোকার হিসেবে কাজ করে |
নতুন ডেটাবেস তৈরি করা
নতুন অ্যাপ তৈরির সময় It needs a database বক্সে টিক দিলেই অ্যাপের সাথে একটি ডেটাবেস তৈরি হয়ে যায়। ডেটাবেস ইঞ্জিন, নাম বা স্টোরেজ কোটা পরিবর্তন করতে চাইলে Advanced → Database engine অপশনে যান।
Meghly আপনার অ্যাকাউন্টের জন্য আলাদা প্রিফিক্স ও আইসোলেশন দিয়ে ডেটাবেস তৈরি করে—ফলে আপনার ডেটাবেসে অন্য কারো প্রবেশাধিকার থাকে না।
দুটি আলাদা লগইন (Runtime ও Migration)
নিরাপত্তা নিশ্চিত করতে প্রতিটি ডেটাবেসের জন্য দুটি ভিন্ন লগইন তৈরি করা হয়:
| লগইনের ধরন | কে ব্যবহার করে | অনুমতি (Permissions) |
|---|---|---|
| runtime | মূল চলমান অ্যাপ্লিকেশন | ডেটা পড়া (SELECT), লেখা (INSERT/UPDATE/DELETE) এবং স্টোরড প্রসিডিউর চালানো — কিন্তু নতুন টেবিল তৈরি বা স্কিমা পরিবর্তনের অনুমতি নেই |
| migration | প্রতি ডিপ্লয়ের আগে রিলিজ (release) কন্টেইনার | ডেটাবেসের পূর্ণ মালিকানা: নতুন টেবিল তৈরি, পরিবর্তন (ALTER) ও মুছে ফেলা (DROP) |
এ কারণে অ্যাপ স্টার্টআপের সময় কোডের ভেতর থেকে স্কিমা পরিবর্তনের চেষ্টা করলে (যেমন Database.Migrate(), EnsureCreated() বা sequelize.sync()) তা কাজ করবে না। স্কিমা মাইগ্রেশন সবসময় রিলিজ ধাপে সম্পন্ন করতে হয় (অ্যাপ কীভাবে চলে দেখুন)। এক্ষেত্রে একমাত্র ব্যতিক্রম হলো WordPress।
অ্যাপে যে এনভায়রনমেন্ট ভেরিয়েবলগুলো পাওয়া যায়
ডেটাবেস যুক্ত করার সাথে সাথে আপনার অ্যাপে নিচের ভেরিয়েবলগুলো স্বয়ংক্রিয়ভাবে চলে আসে:
| ভেরিয়েবল | বিবরণ |
|---|---|
DATABASE_URL | সম্পূর্ণ কানেকশন ইউআরএল (Prisma, Django, Node ইত্যাদির জন্য) |
DB_CONNECTION | ডেটাবেস ড্রাইভারের নাম: pgsql, mysql অথবা sqlsrv |
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD | কানেকশনের প্রতিটি অংশ আলাদা ভেরিয়েবল হিসেবে (Laravel বা PHP-এর জন্য) |
ConnectionStrings__Default | ASP.NET Core / .NET অ্যাপ্লিকেশনের জন্য রেডি কানেকশন স্ট্রিং |
প্যানেলের Databases মেনু থেকে আপনার ডেটাবেসটি সিলেক্ট করলে .NET connection string, DATABASE_URL এবং Laravel .env ফরম্যাট এক ক্লিকে কপি করার জন্য প্রস্তুত অবস্থায় পাবেন।
একাধিক অ্যাপে একই ডেটাবেস ব্যবহার করা
আপনার মূল ওয়েব অ্যাপের পাশাপাশি আলাদা কোনো ওয়ার্কার বা দ্বিতীয় কোনো সার্ভিসে একই ডেটাবেস সংযোগ দিতে চাইলে অ্যাপের Databases ট্যাবে গিয়ে Use this database in another app অপশনটি বেছে নিন। এরপর দ্বিতীয় অ্যাপটি সিলেক্ট করে ভেরিয়েবলের নাম দিলে সেখানে কানেকশনটি সিক্রেট হিসেবে যুক্ত হয়ে যাবে।
ব্রাউজারে ডেটাবেস দেখা ও পরিচালনা করা
প্যানেলে Databases → আপনার ডেটাবেস → Open database manager বাটনে ক্লিক করলে ব্রাউজারেই একটি ডেটাবেস ম্যানেজমেন্ট ইন্টারফেস খুলে যাবে। এখান থেকে সরাসরি টেবিল দেখা, ডেটা এডিট করা, SQL কোয়েরি চালানো এবং ডেটা এক্সপোর্ট করা যায়। প্যানেলে লগইন তথ্য দেখানো হয় এবং নিরাপত্তার স্বার্থে এই অ্যাক্সেসের তথ্য অডিট লগে রেকর্ড থাকে। টানা এক ঘণ্টা অব্যবহৃত থাকলে টুলটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
SQL Server-এ SSMS দিয়ে যুক্ত হওয়া
নিরাপত্তার কারণে SQL Server-এর পোর্ট ডিফল্টভাবে বাইরের ইন্টারনেটের জন্য বন্ধ থাকে। প্যানেলের Remote Access সেকশনে গিয়ে আমার IP যোগ করো বাটনে ক্লিক করলে (অথবা নির্দিষ্ট IP অ্যাড্রেস দিয়ে Save allowlist করলে) শুধুমাত্র সেই অনুমোদিত IP থেকে SSMS বা Azure Data Studio দিয়ে সরাসরি কানেক্ট করা যাবে। বিস্তারিত নিয়ম দেখুন ASP.NET Core ও SQL Server গাইডে।
অন্যদিকে PostgreSQL, MySQL এবং MariaDB শুধুমাত্র অ্যাপের অভ্যন্তরীণ প্রাইভেট নেটওয়ার্কে চলে—বাইরে থেকে এগুলো পরিচালনা করতে Open database manager ব্যবহার করুন।
ডেটাবেস স্টোরেজ ও কোটা
Size and Quota সেকশন থেকে Max size (MB) নির্ধারণ করে Save quota চাপুন। ডেটাবেসের মোট আকার আপনার প্ল্যানের বরাদ্দকৃত সীমার মধ্যে থাকতে হবে। স্টোরেজ ৮০% ও ৯৫% পূর্ণ হলে প্যানেলে সতর্কবার্তা দেখানো হয় এবং ১০০% সীমায় পৌঁছালে ডেটাবেসে নতুন ডেটা রাইট করা বন্ধ হয়ে যায়।
ডেটা ইমপোর্ট ও এক্সপোর্ট (Import & Export)
| ডেটাবেস ইঞ্জিন | ডেটা ইমপোর্ট করার পদ্ধতি | ডেটা এক্সপোর্ট করার পদ্ধতি |
|---|---|---|
| PostgreSQL, MySQL, MariaDB | Import SQL dump — .sql ফাইল আপলোড | Download export — সম্পূর্ণ SQL ডাম্প ডাউনলোড |
| SQL Server | Import .bak file — .bak ব্যাকআপ ফাইল আপলোড | Download export — ভেরিফাইড .bak ফাইল ডাউনলোড |
পুরনো সার্ভার থেকে সঠিকভাবে ডাম্প নেওয়ার কমান্ড:
mysqldump --single-transaction --routines --triggers --no-tablespaces mydb > mydb.sqlpg_dump --no-owner --no-privileges mydb > mydb.sqlইমপোর্ট প্রক্রিয়াটি migration login ব্যবহার করে সরাসরি আপনার ডেটাবেসের ভেতরে সম্পন্ন হয়। তাই .sql ফাইলের ভেতরে অন্য কোনো ডেটাবেসের নাম (যেমন USE other_db বা CREATE DATABASE) উল্লেখ থাকলে তা কাজ করবে না।
SQL Server-এ .bak ফাইল ইমপোর্ট করলে তা আপনার বর্তমান ডেটাবেসের ওপর রিস্টোর হয়—ফলে বর্তমান ডেটাবেসে থাকা আগের সব ডেটা মুছে যাবে।
PostgreSQL-এ AI ভেক্টর সার্চ (pgvector)
PostgreSQL ডেটাবেসের সেটিংসে Turn on vector search বাটনে ক্লিক করলে pgvector এক্সটেনশন চালু হয়ে যায়। এর সাহায্যে টেক্সট এমবেডিং (embeddings) সংরক্ষণ করে AI সিম্যান্টিক সার্চ চালানো যায় (এটি একবার চালু করলে পরে আর বন্ধ করা যায় না):
CREATE TABLE items (id bigserial PRIMARY KEY, body text, embedding vector(1536));
SELECT id, body FROM items ORDER BY embedding <=> $1 LIMIT 5;Managed Redis ব্যবহার করা
Databases পেজের Managed Redis সেকশন থেকে নতুন Redis ইনস্ট্যান্স তৈরি করা যায়:
- App: কোন অ্যাপের জন্য তৈরি করছেন তা বেছে নিন (প্রতিটি অ্যাপের জন্য আলাদা প্রাইভেট নেটওয়ার্কে একটি করে Redis থাকে)।
- Memory (MB) এবং Persistent data (MB): ডেটা র্যামের পাশাপাশি ডিস্কেও সংরক্ষিত হয় (AOF), ফলে রিস্টার্ট হলেও ডেটা হারায় না।
- Maxmemory policy: সাধারণ ক্যাশিংয়ের জন্য
allkeys-lru(মেমোরি ভরলে পুরনো কি মুছে নতুন কি বসবে) এবং কিউ বা জবের জন্যnoeviction(কোনো ডেটা মুছবে না) ব্যবহার করুন।
অ্যাপে স্বয়ংক্রিয়ভাবে REDIS_URL, REDIS_HOST, REDIS_PORT, REDIS_USERNAME ও REDIS_PASSWORD ভেরিয়েবল যুক্ত হয়।
RabbitMQ মেসেজ ব্রোকার
অ্যাপের General → RabbitMQ → Create RabbitMQ অপশন থেকে প্রাইভেট মেসেজ ব্রোকার চালু করা যায়। একই Service group-এর অধীনে থাকা আপনার সব অ্যাপ এই ব্রোকারটি ব্যবহার করতে পারবে এবং স্বয়ংক্রিয়ভাবে RABBITMQ_URL, RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_USER, RABBITMQ_PASSWORD ও RABBITMQ_VHOST ভেরিয়েবল পেয়ে যাবে।
স্বয়ংক্রিয় ব্যাকআপ ও রিস্টোর
ডেটাবেস এবং ভলিউমের সব ব্যাকআপ মূল সার্ভারের বাইরে এনক্রিপ্টেড অবস্থায় নিরাপদে সংরক্ষণ করা হয়। প্যানেলের Backups পেজ থেকে:
- Target নির্বাচন করে তাৎক্ষণিক ব্যাকআপ নিতে পারেন অথবা প্রতিদিনের অটোমেটিক ব্যাকআপ শিডিউল চালু করতে পারেন। আপনার প্ল্যান অনুযায়ী Retention days (কতদিন পর্যন্ত ব্যাকআপ সংরক্ষিত থাকবে) নির্ধারণ করা যায়।
- Backup history তালিকা থেকে যেকোনো পুরনো ব্যাকআপ ডাউনলোড অথবা সরাসরি রিস্টোর করতে পারবেন।
ব্যাকআপ রিস্টোর করলে বর্তমানের লাইভ ডেটা প্রতিস্থাপিত হয়, তাই রিস্টোর করার আগে প্যানেল থেকে আপনার চূড়ান্ত সম্মতি চাওয়া হয়। মনে রাখবেন, অ্যাপ্লিকেশন রোলব্যাক করলে ডেটাবেস আগের অবস্থায় ফেরে না—ডেটাবেস পূর্বের অবস্থায় ফিরিয়ে নিতে হলে এখান থেকেই ব্যাকআপ রিস্টোর করতে হবে।
আটকে গেছেন?
আমাদের ইঞ্জিনিয়ারদের সাথে সরাসরি কথা বলুন — ফোন বা ইমেইলে, বাংলায়।