একটি Firebase Data Connect পরিষেবার তিনটি প্রধান উপাদান রয়েছে:
- নিজস্ব SQL স্কিমা সহ একটি অন্তর্নিহিত PostgreSQL ডাটাবেস
- একটি Data Connect অ্যাপ্লিকেশন স্কিমা (আপনার
.gql
ফাইলগুলিতে ঘোষণা করা হয়েছে) - অনেকগুলি সংযোগকারী (আপনার
.gql
ফাইলগুলিতে ঘোষিত)।
SQL স্কিমা হল আপনার ডেটার জন্য সত্যের উৎস, Data Connect স্কিমা হল কীভাবে আপনার সংযোগকারীরা সেই ডেটা দেখতে পারে এবং সংযোগকারীরা APIগুলি ঘোষণা করে যা আপনার ক্লায়েন্টরা সেই ডেটা অ্যাক্সেস করতে ব্যবহার করতে পারে৷
যখন আপনি CLI-এর সাথে আপনার Data Connect পরিষেবা স্থাপন করবেন, তখন আপনি আপনার SQL স্কিমা স্থানান্তর করবেন, তারপর আপনার Data Connect স্কিমা আপডেট করবেন, তারপর আপনার প্রতিটি সংযোগকারীকে আপডেট করবেন।
গুরুত্বপূর্ণ স্থাপনার ধারণা
স্থাপনা সম্পূর্ণরূপে বোঝার জন্য, স্কিমা এবং সংযোগকারী সম্পর্কে মূল ধারণাগুলি নোট করা গুরুত্বপূর্ণ।
স্কিমা স্থাপনা
একটি Data Connect স্কিমার স্থাপনা আপনার ক্লাউড SQL ডাটাবেসের জন্য SQL স্কিমাকে প্রভাবিত করে। আপনি একটি নতুন ডাটাবেসের সাথে কাজ করছেন বা বিদ্যমান ডাটাবেসকে অ-ধ্বংসাত্মকভাবে মানিয়ে নেওয়ার প্রয়োজন হোক না কেন, Data Connect আপনাকে স্থাপনার সময় আপনার স্কিমাগুলি স্থানান্তর করতে সহায়তা করে৷
Data Connect স্কিমা মাইগ্রেশনের দুটি ভিন্ন স্কিমা বৈধতা মোড রয়েছে: কঠোর এবং সামঞ্জস্যপূর্ণ ।
কঠোর মোড যাচাইকরণের জন্য অ্যাপ্লিকেশন স্কিমা আপডেট করার আগে ডাটাবেস স্কিমাটি অ্যাপ্লিকেশন স্কিমার সাথে ঠিক মেলে। আপনার Data Connect স্কিমাতে ব্যবহার করা হয়নি এমন কোনো টেবিল বা কলাম ডাটাবেস থেকে মুছে ফেলা হবে।
সামঞ্জস্যপূর্ণ মোড যাচাইকরণের জন্য অ্যাপ্লিকেশন স্কিমা আপডেট করার আগে ডাটাবেস স্কিমা অ্যাপ্লিকেশন স্কিমার সাথে সামঞ্জস্যপূর্ণ হতে হবে; স্কিমা, টেবিল বা কলাম ড্রপ করা কোনো অতিরিক্ত পরিবর্তন ঐচ্ছিক।
সামঞ্জস্যপূর্ণ মানে স্কিমা স্থানান্তরগুলি শুধুমাত্র আপনার অ্যাপ্লিকেশন স্কিমাতে উল্লেখ করা টেবিল এবং কলামগুলিকে প্রভাবিত করে৷ আপনার ডাটাবেসের উপাদানগুলি যা আপনার অ্যাপ্লিকেশন স্কিমা দ্বারা ব্যবহৃত হয় না তা অপরিবর্তিত রেখে দেওয়া হয়। অতএব, স্থাপনার পরে, আপনার ডাটাবেসে অব্যবহৃত থাকতে পারে:
- স্কিমাস
- টেবিল
- কলাম
সংযোগকারী স্থাপনা
Data Connect প্রশ্ন এবং মিউটেশন ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয়। পরিবর্তে, যখন স্থাপন করা হয়, তখন এই Data Connect অপারেশনগুলি সার্ভারে সংরক্ষণ করা হয়, যেমন Cloud Functions । এর মানে স্থাপনা বিদ্যমান ব্যবহারকারীদের ভাঙ্গতে পারে।
স্থাপনার কর্মপ্রবাহ অনুসরণ করুন
আপনি স্থানীয় প্রজেক্ট ডিরেক্টরি এবং Firebase কনসোল উভয় ক্ষেত্রেই Data Connect প্রকল্পে কাজ করতে পারেন।
একটি প্রস্তাবিত স্থাপনার প্রবাহ জড়িত:
-
firebase dataconnect:services:list
সহ বর্তমানে-নিয়োজিত স্কিমা এবং সংযোগকারীর তালিকা করা। - যেকোনো স্কিমা আপডেট পরিচালনা করা।
-
firebase dataconnect:sql:diff
সহ আপনার ক্লাউড SQL ডাটাবেস এবং স্থানীয় ডেটা কানেক্ট স্কিমার মধ্যে SQL স্কিমার পার্থক্য পরীক্ষা করুন। - প্রয়োজনে,
dataconnect:sql:migrate
এর সাথে SQL স্কিমা মাইগ্রেশন করুন।
-
- শুধুমাত্র আপনার স্কিমা, শুধুমাত্র আপনার সংযোগকারী বা সংস্থানগুলির সংমিশ্রণের জন্য,
firebase deploy
চালিয়ে স্কিমা সম্পাদন করা এবং সংযোগ স্থাপন করা ।
Data Connect সংস্থান স্থাপন এবং পরিচালনা করুন
স্থাপনাগুলি সম্পাদন করার আগে উত্পাদন সংস্থানগুলি যাচাই করা একটি ভাল ধারণা।
firebase dataconnect:services:list
একটি স্থানীয় প্রকল্প ডিরেক্টরিতে কাজ করার সময়, আপনি সাধারণত ইন্টারেক্টিভ প্রতিক্রিয়া সহ আপনার স্কিমা এবং সংযোগকারীগুলিকে উত্পাদনে স্থাপন করতে firebase deploy
কমান্ড ব্যবহার করবেন।
যেকোন deploy
কমান্ড ব্যবহার করে, --only dataconnect
পতাকা আপনাকে আপনার প্রোজেক্টের অন্যান্য পণ্য থেকে Data Connect স্থাপনাগুলিকে আলাদা করতে দেয়।
স্বাভাবিক স্থাপনা
firebase deploy --only dataconnect
এই স্বাভাবিক স্থাপনায়, Firebase CLI আপনার স্কিমা এবং সংযোগকারী স্থাপন করার চেষ্টা করে।
এটি যাচাই করে যে নতুন স্কিমা কোনো বিদ্যমান সংযোগকারীকে ভাঙছে না। ব্রেকিং পরিবর্তন করার সময় সর্বোত্তম অনুশীলন অনুসরণ করুন।
এটিও যাচাই করে যে Data Connect স্কিমা আপডেট করার আগে SQL স্কিমা ইতিমধ্যেই স্থানান্তরিত হয়েছে৷ যদি তা না হয়, এটি স্বয়ংক্রিয়ভাবে আপনাকে স্কিমা স্থানান্তর করার জন্য প্রয়োজনীয় পদক্ষেপের জন্য অনুরোধ করে।
--force
পতাকা স্থাপনা
firebase deploy --only dataconnect --force
যদি সংযোগকারী বা SQL স্কিমা যাচাইকরণের কোনোটিই উদ্বেগের বিষয় না হয়, তাহলে আপনি --force
দিয়ে কমান্ডটি পুনরায় চালাতে পারেন।
--force
deploy এখনও পরীক্ষা করে যে SQL স্কিমা Data Connect স্কিমার সাথে মেলে কিনা, অসঙ্গতি সম্পর্কে সতর্ক করে এবং প্রম্পট দেয়।
নির্বাচিত সংস্থান স্থাপন করুন
আরও দানাদার নিয়ন্ত্রণের সাথে স্থাপন করতে, serviceId
আর্গুমেন্টের সাথে --only
পতাকা ব্যবহার করুন। একটি নির্দিষ্ট পরিষেবার জন্য শুধুমাত্র স্কিমা পরিবর্তন স্থাপন করতে:
firebase deploy --only dataconnect:serviceId:schema
আপনি একটি নির্দিষ্ট সংযোগকারী এবং পরিষেবার জন্য সমস্ত সংস্থান স্থাপন করতে পারেন৷
firebase deploy --only dataconnect:serviceId:connectorId
অবশেষে, আপনি একটি একক পরিষেবার জন্য স্কিমা এবং সমস্ত সংযোগকারী স্থাপন করতে পারেন।
firebase deploy --only dataconnect:serviceId
একটি স্থাপনা রোল ব্যাক
একটি ম্যানুয়াল রোলব্যাক সম্পাদন করতে, আপনার কোডের একটি পূর্ববর্তী সংস্করণ দেখুন এবং এটি স্থাপন করুন৷ যদি মূল স্থাপনায় ধ্বংসাত্মক ব্রেকিং পরিবর্তনগুলি অন্তর্ভুক্ত থাকে তবে আপনি মুছে ফেলা কোনও ডেটা সম্পূর্ণরূপে পুনরুদ্ধার করতে পারবেন না।
ডাটাবেস স্কিমা স্থানান্তর করুন
আপনি যদি দ্রুত প্রোটোটাইপ করেন, স্কিমা নিয়ে পরীক্ষা-নিরীক্ষা করেন এবং জানেন যে আপনার স্কিমা পরিবর্তনগুলি ধ্বংসাত্মক, আপনি পরিবর্তনগুলি যাচাই করতে এবং আপডেটগুলি কীভাবে সম্পাদিত হয় তা তত্ত্বাবধান করতে Data Connect সরঞ্জামগুলি ব্যবহার করার পরিকল্পনা করতে পারেন৷
ভিন্ন SQL স্কিমা পরিবর্তন
আপনি পরিবর্তনগুলি যাচাই করতে পারেন:
firebase dataconnect:sql:diff
আপনি পরিষেবাগুলির একটি কমা দ্বারা পৃথক তালিকা পাস করতে পারেন৷
কমান্ডটি একটি পরিষেবার জন্য স্থানীয় স্কিমাকে সংশ্লিষ্ট ক্লাউড SQL ডাটাবেসের বর্তমান স্কিমার সাথে তুলনা করে। যদি কোন পার্থক্য থাকে, তবে এটি এসকিউএল কমান্ডগুলি প্রিন্ট করে যা সেই পার্থক্যটি ঠিক করার জন্য চালানো হবে
পরিবর্তনগুলি প্রয়োগ করুন
আপনি যখন সন্তুষ্ট হন এবং স্কিমা ক্লাউড এসকিউএল ইনস্ট্যান্সে পরিবর্তনগুলি স্থাপন করতে প্রস্তুত হন, তখন firebase dataconnect:sql:migrate
কমান্ডটি ইস্যু করুন৷ আপনাকে পরিবর্তনগুলি অনুমোদন করতে বলা হবে৷
firebase dataconnect:sql:migrate [serviceId]
ইন্টারেক্টিভ পরিবেশে, SQL মাইগ্রেশন স্টেটমেন্ট এবং অ্যাকশন প্রম্পট প্রদর্শিত হয়।
কঠোর বা সামঞ্জস্যপূর্ণ মোডে স্থানান্তর করা
একটি একেবারে নতুন প্রকল্পে, ডিফল্ট স্কিমা বৈধতা মোড প্রযোজ্য। migrate
কমান্ডের আচরণ হল আপনার অ্যাপ্লিকেশন স্কিমার জন্য প্রয়োজনীয় সমস্ত ডাটাবেস স্কিমা পরিবর্তনগুলি প্রয়োগ করা, তারপরে আপনাকে ঐচ্ছিক ক্রিয়াকলাপগুলিকে অনুমোদন করার জন্য অনুরোধ করবে যা স্কিমা, টেবিল বা কলামগুলিকে আপনার অ্যাপ্লিকেশন স্কিমার সাথে হুবহু মেলে আপনার ডাটাবেস স্কিমাকে বাধ্য করতে বাধ্য করে৷
আপনি আপনার dataconnect.yaml
ফাইল পরিবর্তন করে এই আচরণ সামঞ্জস্য করতে পারেন। schemaValidation
কীটি আনকমেন্ট করুন এবং COMPATIBLE
ঘোষণা করুন যাতে শুধুমাত্র প্রয়োজনীয় পরিবর্তনগুলি মাইগ্রেশনে প্রয়োগ করা হয়।
schemaValidation: "COMPATIBLE"
অথবা আচরণটিকে STRICT
এ সেট করুন যাতে সমস্ত স্কিমা পরিবর্তনগুলি প্রয়োগ করা হয় এবং আপনার ডাটাবেস স্কিমা আপনার অ্যাপ্লিকেশন স্কিমার সাথে মিলতে বাধ্য হয়৷
schemaValidation: "STRICT"
আরও তথ্যের জন্য Data Connect CLI রেফারেন্স দেখুন।
স্কিমা এবং সংযোগকারী পরিচালনার জন্য সর্বোত্তম অনুশীলন
Firebase আপনার Data Connect প্রকল্পগুলিতে অনুসরণ করার জন্য কিছু অনুশীলনের সুপারিশ করে৷
ব্রেকিং পরিবর্তনগুলি কম করুন
- Firebase আপনার Data Connect স্কিমা এবং সংযোগকারী ফাইলগুলিকে সোর্স কন্ট্রোলে রাখার পরামর্শ দেয়৷
- যখন সম্ভব পরিবর্তনগুলি ভাঙা এড়িয়ে চলুন। ব্রেকিং পরিবর্তনের কিছু সাধারণ উদাহরণের মধ্যে রয়েছে:
- আপনার স্কিমা থেকে একটি ক্ষেত্র সরানো হচ্ছে
- আপনার স্কিমাতে একটি বাতিলযোগ্য ক্ষেত্রকে বাতিলযোগ্য করা (যেমন
Int
->Int!
) - আপনার স্কিমা একটি ক্ষেত্রের নাম পরিবর্তন.
- আপনি যদি আপনার স্কিমা থেকে একটি ক্ষেত্র অপসারণ করতে চান, প্রভাব কমাতে এটিকে কয়েকটি স্থাপনায় বিভক্ত করার কথা বিবেচনা করুন:
- প্রথমে, আপনার সংযোগকারীর ক্ষেত্রের যে কোনো রেফারেন্স মুছে ফেলুন এবং পরিবর্তনটি স্থাপন করুন।
- এরপরে, নতুন জেনারেট করা SDK ব্যবহার করতে আপনার অ্যাপ আপডেট করুন।
- অবশেষে, আপনার স্কিমা
.gql
ফাইলের ক্ষেত্রটি সরান, আপনার SQL স্কিমা স্থানান্তর করুন এবং আরও একবার স্থাপন করুন।
নতুন ডাটাবেসের সাথে কাজ করার সময় কঠোর মোড ব্যবহার করুন
আপনি যদি একটি নতুন ডাটাবেসের সাথে Data Connect ব্যবহার করেন এবং সক্রিয়ভাবে আপনার অ্যাপ্লিকেশন স্কিমা বিকাশ করেন এবং আপনি নিশ্চিত করতে চান যে আপনার ডাটাবেস স্কিমা আপনার অ্যাপ্লিকেশন স্কিমার সাথে ঠিক সঙ্গতিপূর্ণ থাকে, আপনি আপনার dataconnect.yaml
এ schemaValidation: "STRICT"
উল্লেখ করতে পারেন।
এটি ঐচ্ছিক পরিবর্তনগুলিও প্রয়োগ করা নিশ্চিত করবে।
আপনার ডাটাবেসে উৎপাদন ডেটা থাকলে সামঞ্জস্যপূর্ণ মোড ব্যবহার করুন
আপনি যদি উৎপাদন ডেটা ধারণ করে এমন একটি ডাটাবেসে পরিবর্তন করেন, তাহলে বিদ্যমান ডেটা বাদ না দেওয়া নিশ্চিত করতে আমরা আপনাকে সামঞ্জস্যপূর্ণ মোডে আপনার স্কিমা স্থানান্তর চালানোর পরামর্শ দিই। আপনি স্কিমা ভ্যালিডেশন নির্দিষ্ট করতে পারেন: আপনার dataconnect.yaml
এ schemaValidation: "COMPATIBLE"
সামঞ্জস্যপূর্ণ মোডে, শুধুমাত্র প্রয়োজনীয় স্কিমা স্থানান্তর পরিবর্তনগুলি আপনার ডাটাবেসে প্রয়োগ করা হয়।
-
DROP SCHEMA
,DROP TABLE
, এবংDROP COLUMN
ঐচ্ছিক বিবৃতি হিসাবে বিবেচিত হয় এবং আপনার প্ল্যানের জন্য তৈরি করা হবে না, এমনকি আপনার ডাটাবেস স্কিমাতে স্কিমা, টেবিল বা কলামগুলি আপনার অ্যাপ্লিকেশন স্কিমাতে সংজ্ঞায়িত না থাকলেও৷ - যদি আপনার ডাটাবেস টেবিলে একটি নন-নাল কলাম থাকে যা আপনার অ্যাপ্লিকেশন স্কিমাতে অন্তর্ভুক্ত না হয়, তাহলে
NOT NULL
সীমাবদ্ধতা সরিয়ে দেওয়া হবে, যাতে ডেটা এখনও আপনার সংজ্ঞায়িত সংযোগকারীর সাথে টেবিলে যোগ করা যেতে পারে।
এরপর কি?
- জেনারেট করা SDK-এর সাহায্যে আপনার ডেভেলপ করা ক্লায়েন্ট কোড স্থাপন ও পরিচালনা করা Android , iOS , ওয়েব এবং Flutter- এর জন্য গাইডে অন্তর্ভুক্ত রয়েছে।
- ডিপ্লয়মেন্ট টুলিং সম্পর্কে আরও তথ্যের জন্য, Data Connect CLI রেফারেন্স এবং Data Connect কনফিগারেশন ফাইলের রেফারেন্স পর্যালোচনা করুন।