একটি Firebase Data Connect পরিষেবার তিনটি প্রধান উপাদান থাকে:
- নিজস্ব SQL স্কিমা সহ একটি অন্তর্নিহিত PostgreSQL ডাটাবেস
- একটি Data Connect অ্যাপ্লিকেশন স্কিমা (আপনার
.gqlফাইলে ঘোষিত) - বেশ কিছু সংযোগকারী (আপনার
.gqlফাইলে ঘোষিত,connector.yamlফাইলে কনফিগার করা)।
SQL স্কিমা হল আপনার ডেটার সত্যতার উৎস, Data Connect স্কিমা হল আপনার সংযোগকারীরা কীভাবে সেই ডেটা দেখতে পারে এবং সংযোগকারীরা সেই API গুলি ঘোষণা করে যা আপনার ক্লায়েন্টরা সেই ডেটা অ্যাক্সেস করতে ব্যবহার করতে পারে।
যখন আপনি CLI এর সাথে আপনার Data Connect পরিষেবা স্থাপন করবেন, তখন আপনি আপনার SQL স্কিমা স্থানান্তর করবেন, তারপর আপনার Data Connect স্কিমা আপডেট করবেন, তারপর আপনার প্রতিটি সংযোগকারী আপডেট করবেন।
গুরুত্বপূর্ণ স্থাপনার ধারণা
স্থাপনা সম্পূর্ণরূপে বোঝার জন্য, স্কিমা এবং সংযোগকারী সম্পর্কে মূল ধারণাগুলি লক্ষ্য করা গুরুত্বপূর্ণ।
স্কিমা স্থাপনা
Data Connect স্কিমা স্থাপন আপনার ক্লাউড এসকিউএল ডাটাবেসের জন্য এসকিউএল স্কিমাকে প্রভাবিত করে। Data Connect আপনাকে স্থাপনের সময় আপনার স্কিমাগুলি স্থানান্তর করতে সাহায্য করে, আপনি একটি নতুন ডাটাবেসের সাথে কাজ করছেন বা বিদ্যমান ডাটাবেসকে ধ্বংসাত্মকভাবে অভিযোজিত করার প্রয়োজন হোক না কেন।
Data Connect স্কিমা মাইগ্রেশনের দুটি ভিন্ন স্কিমা ভ্যালিডেশন মোড রয়েছে: কঠোর এবং সামঞ্জস্যপূর্ণ ।
কঠোর মোড যাচাইকরণের জন্য অ্যাপ্লিকেশন স্কিমা আপডেট করার আগে ডাটাবেস স্কিমাটি অ্যাপ্লিকেশন স্কিমার সাথে হুবহু মেলে। আপনার Data Connect স্কিমায় ব্যবহৃত না হওয়া যেকোনো টেবিল বা কলাম ডাটাবেস থেকে মুছে ফেলা হবে।
সামঞ্জস্যপূর্ণ মোড যাচাইকরণের জন্য অ্যাপ্লিকেশন স্কিমা আপডেট করার আগে ডাটাবেস স্কিমা অ্যাপ্লিকেশন স্কিমার সাথে সামঞ্জস্যপূর্ণ হওয়া প্রয়োজন; স্কিমা, টেবিল বা কলাম বাদ দিলে যে কোনও অতিরিক্ত পরিবর্তন ঐচ্ছিক।
সামঞ্জস্যপূর্ণ মানে হল স্কিমা মাইগ্রেশন শুধুমাত্র আপনার অ্যাপ্লিকেশন স্কিমায় উল্লেখিত টেবিল এবং কলামগুলিকে প্রভাবিত করে। আপনার ডাটাবেসের যে উপাদানগুলি আপনার অ্যাপ্লিকেশন স্কিমা দ্বারা ব্যবহৃত হয় না সেগুলি অপরিবর্তিত থাকে। অতএব, স্থাপনের পরে, আপনার ডাটাবেসে অব্যবহৃত থাকতে পারে:
- স্কিমা
- টেবিল
- কলাম
সংযোগকারী স্থাপনা
Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয় না। পরিবর্তে, যখন স্থাপন করা হয়, তখন এই Data Connect ক্রিয়াকলাপগুলি সার্ভারে সংরক্ষণ করা হয়, যেমন Cloud Functions । এর অর্থ হল স্থাপনা বিদ্যমান ব্যবহারকারীদের ভেঙে দিতে পারে।
Data Connect আপনার সংযোগকারী আপডেটের পরিবর্তনের বিশ্লেষণকে Firebase সিএলআই-তে একীভূত করে।
CLI আপনার স্কিমার সাথে সম্পর্কিত প্রতিটি সংযোগকারীর পরিবর্তন বিশ্লেষণ করে এবং সংযোগকারীর পরিবর্তনের ক্ষেত্রে মূল্যায়ন বার্তাগুলির একটি সেট জারি করে যা ক্লায়েন্ট কোডের পূর্ববর্তী সংস্করণগুলির ক্লায়েন্ট আচরণ (বার্তাগুলি সতর্কতা-স্তরের) পরিবর্তন করতে পারে বা ভেঙে ফেলতে পারে (বার্তাগুলি ব্রেকিং-স্তরের)।
উদাহরণস্বরূপ:
- ক্লায়েন্টের আচরণ পরিবর্তন করতে পারে এমন সংযোগকারীর পরিবর্তনগুলির মধ্যে রয়েছে
@retiredস্কিমা অ্যানোটেশন ছাড়াই একটি কোয়েরি থেকে একটি nullable ক্ষেত্র অপসারণ করা। - সংযোগকারী পরিবর্তন যা ক্লায়েন্টদের ভেঙে ফেলতে পারে বা করবে তার মধ্যে রয়েছে একটি nullable অপারেশন ভেরিয়েবলকে ডিফল্ট মান ছাড়াই non-null এ পরিবর্তন করা, অথবা একটি ক্ষেত্রের ডেটা টাইপকে অসঙ্গত কিছুতে পরিবর্তন করা (যেমন
StringথেকেInt)।
CLI রেফারেন্স গাইডে সতর্কতা-স্তর এবং ব্রেকিং-স্তরের পরিস্থিতির আরও বিস্তৃত তালিকা দেওয়া আছে।
স্থাপনার কর্মপ্রবাহ অনুসরণ করুন
আপনি স্থানীয় প্রকল্প ডিরেক্টরি এবং 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 সরঞ্জামগুলি ব্যবহার করার পরিকল্পনা করতে পারেন।
ডিফ এসকিউএল স্কিমা পরিবর্তন
আপনি পরিবর্তনগুলি যাচাই করতে পারেন:
firebase dataconnect:sql:diffআপনি কমা দ্বারা পৃথক করা পরিষেবার তালিকাটি পাস করতে পারেন।
এই কমান্ডটি একটি পরিষেবার স্থানীয় স্কিমার সাথে সংশ্লিষ্ট ক্লাউড SQL ডাটাবেসের বর্তমান স্কিমার তুলনা করে। যদি কোনও পার্থক্য থাকে, তাহলে এটি SQL কমান্ডগুলি প্রিন্ট করে যা সেই পার্থক্যটি ঠিক করার জন্য চালানো হবে।
পরিবর্তনগুলি প্রয়োগ করুন
যখন আপনি সন্তুষ্ট হবেন এবং স্কিমা ক্লাউড 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 deploy চালান, তখন CLI প্রযোজ্য সংযোগকারীদের একটি আপডেট শুরু করে এবং প্রযোজ্য সতর্কতা-স্তর (ক্লায়েন্টের আচরণের উপর প্রভাব ফেলতে পারে) এবং ব্রেকিং-স্তর (সম্ভবত বা নিশ্চিতভাবে ব্রেকিং) মূল্যায়ন বার্তা জারি করে।
CLI দিয়ে সংযোগকারী আপডেট পরিচালনা করুন
ইন্টারেক্টিভ মোড এবং নন-ইন্টারেক্টিভ মোডে CLI-এর আচরণ কিছুটা আলাদা।
আপনি যেমনটি আশা করতে পারেন, ইন্টারেক্টিভ মোডে, CLI আপনাকে সমস্ত বার্তা গ্রহণ করতে অনুরোধ করবে। আপনি --force পতাকা ব্যবহার করে সংযোগকারী স্থাপনকে ওভাররাইড এবং জোর করতে পারেন।
# Prompts for acceptance for any warning-level or breaking-level changes prior # to deploying connectors. firebase deploy --only dataconnect# Will deploy connectors without prompting. firebase deploy --only dataconnect --force
নন-ইন্টারেক্টিভ মোডে, যতক্ষণ না কোনও ব্রেকিং-লেভেল মূল্যায়ন না থাকে, ততক্ষণ CLI আপনার সংযোগকারী স্থাপন করবে। অন্যথায়, আপনার স্ক্রিপ্টটি ব্রেকিং পরিবর্তনের লগ সহ প্রস্থান করবে। আপনি --force পতাকা সেট করে ওভাররাইড এবং স্থাপন করতে পারেন।
# Will deploy connectors with warning-level changes. If any breaking changes # are present, the deploy will fail and output any breaking changes firebase deploy --only dataconnect --non-interactive# Will deploy the connectors from the previous step, if the same issues are present. firebase deploy --only dataconnect --non-interactive --force
আরও তথ্যের জন্য, CLI রেফারেন্স গাইড দেখুন।
স্কিমা এবং সংযোগকারী পরিচালনার জন্য সর্বোত্তম অনুশীলন
আপনার Data Connect প্রকল্পগুলিতে অনুসরণ করার জন্য ফায়ারবেস কিছু অনুশীলনের পরামর্শ দেয়।
ব্রেকিং পরিবর্তনগুলি কমিয়ে আনুন
- ফায়ারবেস আপনার 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 , web এবং Flutter- এর নির্দেশিকাগুলিতে কভার করা হয়েছে।
- ডিপ্লয়মেন্ট টুলিং সম্পর্কে আরও তথ্যের জন্য, Data Connect CLI রেফারেন্স এবং Data Connect কনফিগারেশন ফাইল রেফারেন্স পর্যালোচনা করুন।