ডেটা কানেক্ট স্কিমা এবং সংযোগকারী স্থাপন এবং পরিচালনা করুন

একটি Firebase Data Connect পরিষেবার তিনটি প্রধান উপাদান রয়েছে:

  • নিজস্ব SQL স্কিমা সহ একটি অন্তর্নিহিত PostgreSQL ডাটাবেস
  • একটি Data Connect অ্যাপ্লিকেশন স্কিমা (আপনার .gql ফাইলগুলিতে ঘোষণা করা হয়েছে)
  • অনেকগুলি সংযোগকারী (আপনার .gql ফাইলগুলিতে ঘোষিত, connector.yaml ফাইলগুলিতে কনফিগার করা হয়েছে)।

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 । এর মানে স্থাপনা বিদ্যমান ব্যবহারকারীদের ভাঙ্গতে পারে।

Data Connect Firebase CLI-তে আপনার কানেক্টর আপডেটের ব্রেকিং পরিবর্তনের বিশ্লেষণকে একীভূত করে।

CLI আপনার স্কিমার সাথে সম্পর্কিত প্রতিটি সংযোগকারীর পরিবর্তনগুলি বিশ্লেষণ করে এবং সংযোগকারীর পরিবর্তনের ক্ষেত্রে মূল্যায়ন বার্তাগুলির একটি সেট জারি করে যা ক্লায়েন্টের আচরণ (বার্তাগুলি সতর্কতা-স্তরের) পরিবর্তন করতে পারে বা ক্লায়েন্ট কোডের পূর্ববর্তী সংস্করণগুলি (মেসেজগুলি ব্রেকিং-লেভেল) পরিবর্তন করতে পারে

যেমন:

  • সংযোগকারী পরিবর্তন যা ক্লায়েন্ট আচরণ পরিবর্তন করতে পারে একটি @retired স্কিমা টীকা ছাড়া একটি প্রশ্ন থেকে একটি বাতিলযোগ্য ক্ষেত্র অপসারণ অন্তর্ভুক্ত।
  • সংযোগকারীর পরিবর্তনগুলি যা ক্লায়েন্টদের ভাঙতে পারে বা ভাঙতে পারে তার মধ্যে একটি ডিফল্ট মান ছাড়াই একটি নালযোগ্য অপারেশন ভেরিয়েবলকে নন-নাল এ পরিবর্তন করা, অথবা একটি ক্ষেত্রের ডেটা টাইপকে বেমানান কিছুতে পরিবর্তন করা অন্তর্ভুক্ত (যেমন String থেকে Int )।

সতর্কতা-স্তরের এবং ব্রেকিং-স্তরের পরিস্থিতিগুলির একটি আরও বিস্তৃত তালিকা CLI রেফারেন্স গাইডে দেওয়া হয়েছে।

স্থাপনার কর্মপ্রবাহ অনুসরণ করুন

আপনি স্থানীয় প্রজেক্ট ডিরেক্টরি এবং Firebase কনসোল উভয় ক্ষেত্রেই Data Connect প্রকল্পে কাজ করতে পারেন।

একটি প্রস্তাবিত স্থাপনার প্রবাহ জড়িত:

  1. firebase dataconnect:services:list সহ বর্তমানে-নিয়োজিত স্কিমা এবং সংযোগকারীর তালিকা করা।
  2. যেকোনো স্কিমা আপডেট পরিচালনা করা।
    1. firebase dataconnect:sql:diff সহ আপনার ক্লাউড SQL ডাটাবেস এবং স্থানীয় ডেটা কানেক্ট স্কিমার মধ্যে SQL স্কিমার পার্থক্য পরীক্ষা করুন।
    2. প্রয়োজনে, dataconnect:sql:migrate এর সাথে SQL স্কিমা মাইগ্রেশন করুন।
  3. শুধুমাত্র আপনার স্কিমা, শুধুমাত্র আপনার সংযোগকারী বা সংস্থানগুলির সংমিশ্রণগুলির জন্য, 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 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 রেফারেন্স গাইড দেখুন।

স্কিমা এবং সংযোগকারী পরিচালনার জন্য সর্বোত্তম অনুশীলন

Firebase আপনার Data Connect প্রকল্পগুলিতে অনুসরণ করার জন্য কিছু অনুশীলনের সুপারিশ করে৷

ব্রেকিং পরিবর্তনগুলি কম করুন

  • Firebase আপনার Data Connect স্কিমা এবং সংযোগকারী ফাইলগুলিকে সোর্স কন্ট্রোলে রাখার পরামর্শ দেয়৷
  • যখন সম্ভব পরিবর্তনগুলি ভাঙা এড়িয়ে চলুন। ব্রেকিং পরিবর্তনের কিছু সাধারণ উদাহরণের মধ্যে রয়েছে:
    • আপনার স্কিমা থেকে একটি ক্ষেত্র সরানো হচ্ছে
    • আপনার স্কিমাতে একটি বাতিলযোগ্য ক্ষেত্রকে বাতিলযোগ্য করা (যেমন Int -> Int! )
    • আপনার স্কিমা একটি ক্ষেত্রের নাম পরিবর্তন.
  • আপনি যদি আপনার স্কিমা থেকে একটি ক্ষেত্র অপসারণ করতে চান, প্রভাব কমাতে এটিকে কয়েকটি স্থাপনায় বিভক্ত করার কথা বিবেচনা করুন:
    • প্রথমে, আপনার সংযোগকারীর ক্ষেত্রের যে কোনো রেফারেন্স মুছে ফেলুন এবং পরিবর্তনটি স্থাপন করুন।
    • এরপরে, নতুন জেনারেট করা SDK ব্যবহার করতে আপনার অ্যাপ আপডেট করুন।
    • অবশেষে, আপনার স্কিমা .gql ফাইলের ক্ষেত্রটি সরান, আপনার SQL স্কিমা স্থানান্তর করুন এবং আরও একবার স্থাপন করুন।

নতুন ডাটাবেসের সাথে কাজ করার সময় কঠোর মোড ব্যবহার করুন

আপনি যদি একটি নতুন ডাটাবেসের সাথে Data Connect ব্যবহার করেন এবং সক্রিয়ভাবে আপনার অ্যাপ্লিকেশন স্কিমা বিকাশ করেন এবং আপনি নিশ্চিত করতে চান যে আপনার ডাটাবেস স্কিমা আপনার অ্যাপ্লিকেশন স্কিমার সাথে ঠিক সঙ্গতিপূর্ণ থাকে, আপনি আপনার dataconnect.yamlschemaValidation: "STRICT" উল্লেখ করতে পারেন।

এটি ঐচ্ছিক পরিবর্তনগুলিও প্রয়োগ করা নিশ্চিত করবে।

আপনার ডাটাবেসে উৎপাদন ডেটা থাকলে সামঞ্জস্যপূর্ণ মোড ব্যবহার করুন

আপনি যদি উৎপাদন ডেটা ধারণ করে এমন একটি ডাটাবেসে পরিবর্তন করেন, তাহলে বিদ্যমান ডেটা বাদ না দেওয়া নিশ্চিত করতে আমরা আপনাকে সামঞ্জস্যপূর্ণ মোডে আপনার স্কিমা স্থানান্তর চালানোর পরামর্শ দিই। আপনি আপনার dataconnect.yamlschemaValidation: "COMPATIBLE" নির্দিষ্ট করতে পারেন।

সামঞ্জস্যপূর্ণ মোডে, শুধুমাত্র প্রয়োজনীয় স্কিমা স্থানান্তর পরিবর্তনগুলি আপনার ডাটাবেসে প্রয়োগ করা হয়।

  • DROP SCHEMA , DROP TABLE , এবং DROP COLUMN ঐচ্ছিক বিবৃতি হিসাবে বিবেচিত হয় এবং আপনার প্ল্যানের জন্য তৈরি করা হবে না, এমনকি আপনার ডাটাবেস স্কিমাতে স্কিমা, টেবিল বা কলামগুলি আপনার অ্যাপ্লিকেশন স্কিমাতে সংজ্ঞায়িত না থাকলেও৷
  • যদি আপনার ডাটাবেস টেবিলে একটি নন-নাল কলাম থাকে যা আপনার অ্যাপ্লিকেশন স্কিমাতে অন্তর্ভুক্ত না হয়, তাহলে NOT NULL সীমাবদ্ধতা সরিয়ে দেওয়া হবে, যাতে ডেটা এখনও আপনার সংজ্ঞায়িত সংযোগকারীর সাথে টেবিলে যোগ করা যেতে পারে।

এরপর কি?