প্রকল্পগুলির মধ্যে ডেটা সরান

এই পৃষ্ঠায় Cloud Firestore ডেটা এক প্রকল্প থেকে অন্য প্রকল্পে স্থানান্তর করার জন্য পরিচালিত আমদানি এবং রপ্তানি বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন তা বর্ণনা করা হয়েছে। এটি একটি উন্নয়ন পরিবেশ সেট আপ করার জন্য বা একটি অ্যাপকে স্থায়ীভাবে অন্য প্রকল্পে স্থানান্তর করার অংশ হিসাবে কার্যকর হতে পারে। এই পৃষ্ঠার উদাহরণটি দেখায় যে কীভাবে একটি উৎস প্রকল্প থেকে ডেটা রপ্তানি করা যায় এবং তারপরে সেই ডেটা একটি গন্তব্য প্রকল্পে আমদানি করা যায়। প্রকল্পগুলির মধ্যে ডেটা স্থানান্তরের জন্য নিম্নলিখিত পদক্ষেপগুলি জড়িত:

  1. আপনার সোর্স প্রজেক্ট থেকে ডেটা ধরে রাখার জন্য একটি Cloud Storage বাকেট তৈরি করুন।
  2. আপনার সোর্স প্রজেক্ট থেকে ডেটা বাকেটে রপ্তানি করুন।
  3. আপনার গন্তব্য প্রকল্পটিকে বালতি থেকে পড়ার অনুমতি দিন।
  4. বাকেট থেকে ডেটা আপনার গন্তব্য প্রকল্পে আমদানি করুন।

শুরু করার আগে

পরিচালিত রপ্তানি এবং আমদানি পরিষেবা ব্যবহার করার আগে, আপনাকে নিম্নলিখিত কাজগুলি সম্পন্ন করতে হবে:

  1. আপনার সোর্স প্রোজেক্ট এবং ডেস্টিনেশন প্রোজেক্ট উভয়ের জন্যই বিলিং সক্ষম করুন। বিলিং সক্ষম থাকা Google Cloud প্রোজেক্টগুলিই কেবল এক্সপোর্ট এবং ইমপোর্ট কার্যকারিতা ব্যবহার করতে পারবে।
  2. নিশ্চিত করুন যে আপনার অ্যাকাউন্টে আপনার সোর্স প্রজেক্ট এবং ডেস্টিনেশন প্রজেক্টে প্রয়োজনীয় ক্লাউড IAM অনুমতি আছে। আপনি যদি উভয় প্রজেক্টের জন্যই একজন প্রজেক্ট মালিক হন, তাহলে আপনার অ্যাকাউন্টে প্রয়োজনীয় অনুমতি আছে। অন্যথায়, নিম্নলিখিত ক্লাউড IAM ভূমিকাগুলি Cloud Firestore এক্সপোর্ট এবং ইমপোর্ট অপারেশনের জন্য প্রয়োজনীয় অনুমতি প্রদান করে:

    Owner , Cloud Datastore Owner , অথবা Cloud Datastore Import Export Admin

    একজন প্রকল্প মালিক Grant access এর ধাপগুলি অনুসরণ করে এই ভূমিকাগুলির মধ্যে একটি প্রদান করতে পারেন।

  3. gcloud কমান্ড-লাইন টুল সেট আপ করুন এবং নিম্নলিখিত যেকোনো একটি উপায়ে আপনার প্রকল্পের সাথে সংযোগ করুন:

  4. আপনার নতুন প্রকল্পে সূচী সেট আপ করুন। যৌগিক সূচীগুলি উৎস এবং গন্তব্য প্রকল্পের মধ্যে মিলিত হওয়া উচিত। প্রতিটি নথি একাধিকবার প্রক্রিয়া করা এড়াতে প্রথমে সূচী সেট আপ করা উচিত।

উৎস প্রকল্প থেকে ডেটা রপ্তানি করুন

আপনার Cloud Firestore এক্সপোর্ট ফাইলের জন্য একটি Cloud Storage বাকেট তৈরি করে এবং একটি এক্সপোর্ট অপারেশন শুরু করে আপনার ডেটা এক্সপোর্ট করুন।

একটি Cloud Storage বাকেট তৈরি করুন

আপনার Cloud Firestore ডাটাবেসের মতো একই স্থানে একটি Cloud Storage বাকেট তৈরি করুন । আপনার ডাটাবেসের অবস্থান দেখতে, আপনার প্রকল্পের অবস্থান সেটিং দেখুন। আপনি রপ্তানি এবং আমদানি কার্যক্রমের জন্য একটি অনুরোধকারী পে বাকেট ব্যবহার করতে পারবেন না।

যদি আপনার Cloud Storage বাকেট আপনার সোর্স প্রজেক্টে না থাকে , তাহলে আপনাকে অবশ্যই সোর্স প্রজেক্টের ডিফল্ট সার্ভিস অ্যাকাউন্টকে বাকেটের অ্যাক্সেস দিতে হবে। প্রতিটি Google Cloud প্রোজেক্টে PROJECT_ID @appspot.gserviceaccount.com নামে একটি স্বয়ংক্রিয়ভাবে তৈরি ডিফল্ট সার্ভিস অ্যাকাউন্ট থাকে। Cloud Firestore এক্সপোর্ট অপারেশনগুলি Cloud Storage বাকেট অপারেশনগুলিকে অনুমোদন করার জন্য এই ডিফল্ট সার্ভিস অ্যাকাউন্টটি ব্যবহার করে। আপনার সোর্স বাকেটের ডিফল্ট সার্ভিস অ্যাকাউন্টকে অ্যাক্সেস দেওয়ার জন্য, এটিকে Storage Admin ভূমিকা প্রদান করুন।

আপনি Cloud Shell উপলব্ধ gsutil টুলটি ব্যবহার করে এই ভূমিকাটি প্রদান করতে পারেন:

Cloud Shell শুরু করুন

gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\
gs://[BUCKET_NAME]@

আপনি Google Cloud কনসোলেও এই ভূমিকাটি প্রদান করতে পারেন।

লেখার ক্রিয়াকলাপ অক্ষম করুন (ঐচ্ছিক)

যদি আপনার অ্যাপটি এক্সপোর্ট অপারেশন করার সময় আপনার ডাটাবেসে লিখতে থাকে, তাহলে আপনি আপনার এক্সপোর্ট ফাইলে সেই সমস্ত লেখা ক্যাপচার করতে পারবেন না। একটি সামঞ্জস্যপূর্ণ অবস্থা থেকে ডেটা এক্সপোর্ট করতে, আপনার সুরক্ষা নিয়ম আপডেট করে এবং যেকোনো অ্যাডমিন SDK অপারেশন বন্ধ করে আপনার ডাটাবেসে লেখা অক্ষম করুন।

  1. নিরাপত্তা নিয়ম আপডেট করুন

    কনসোলের Cloud Firestore রুলস ট্যাবে , সমস্ত লেখা বন্ধ করতে আপনার সোর্স প্রোজেক্ট সিকিউরিটি রুলস আপডেট করুন। উদাহরণস্বরূপ:

      // Deny write access to all users under any conditions
      service cloud.firestore {
        match /databases/{database}/documents {
          match /{document=**} {
            allow write: if false;
          }
          // Reads do not affect export operations
          // Add your read rules here
        }
      }
    
  2. অ্যাডমিন SDK থেকে হাল্ট লেখেন

    নিরাপত্তা নিয়মগুলি Firebase Admin SDK বা Google Cloud Server Client Library ব্যবহার করে তৈরি বিশেষ সুবিধাপ্রাপ্ত সার্ভার পরিবেশ থেকে লেখা বন্ধ করে না। আপনার সার্ভারগুলি বন্ধ করে বা আপডেট করে আপনার অ্যাডমিন সার্ভার থেকে লেখার কাজ বন্ধ করতে ভুলবেন না।

রপ্তানি কার্যক্রম শুরু করুন

আপনার সোর্স প্রজেক্ট থেকে ডেটা এক্সপোর্ট করতে gcloud firestore export কমান্ড ব্যবহার করুন। আপনি আপনার সমস্ত ডেটা অথবা শুধুমাত্র নির্দিষ্ট সংগ্রহ রপ্তানি করতে পারেন। [SOURCE_BUCKET] আপনার Cloud Storage বাকেটের নাম দিয়ে প্রতিস্থাপন করুন:

সমস্ত ডেটা রপ্তানি করুন
gcloud firestore export gs://[SOURCE_BUCKET] --async
নির্দিষ্ট সংগ্রহ রপ্তানি করুন
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async

আপনার এক্সপোর্ট অপারেশনের outputURIPrefix লক্ষ্য করুন কারণ আপনি এটি পরে ব্যবহার করবেন। ডিফল্টরূপে, Cloud Firestore আপনার এক্সপোর্ট ফাইলগুলিতে একটি টাইমস্ট্যাম্পের উপর ভিত্তি করে একটি প্রি-ফিক্স যোগ করে:

outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418

এক্সপোর্ট অপারেশন চলাকালীন, আপনি আপনার অপারেশনের অগ্রগতি দেখতে firestore operations list কমান্ড ব্যবহার করতে পারেন:

gcloud firestore operations list

গন্তব্য প্রকল্পে ডেটা আমদানি করুন

এরপর, গন্তব্য প্রকল্পটিকে আপনার Cloud Firestore ডেটা ফাইলগুলিতে অ্যাক্সেস দিন এবং একটি আমদানি কার্যক্রম শুরু করুন।

গন্তব্য প্রকল্পটিকে আপনার ডেটা ফাইলগুলিতে অ্যাক্সেস দিন

আমদানি কার্যক্রম শুরু করার আগে, আপনাকে নিশ্চিত করতে হবে যে আপনার গন্তব্য প্রকল্পটি আপনার Cloud Firestore ডেটা ফাইলগুলি অ্যাক্সেস করতে পারে।

ডেটা ফাইলগুলিকে স্থানীয় বাকেটে সরান

যদি আপনার সোর্স বাকেটের অবস্থান আপনার গন্তব্য প্রকল্পের Cloud Firestore অবস্থান থেকে আলাদা হয়, তাহলে আপনাকে অবশ্যই আপনার ডেটা ফাইলগুলিকে আপনার গন্তব্য প্রকল্পের একই স্থানে থাকা Cloud Storage বাকেটে স্থানান্তর করতে হবে।

"বাকেট সরানো এবং নাম পরিবর্তন করা" এর ধাপগুলি অনুসরণ করে আপনার ডেটা ফাইলগুলি অন্য Cloud Storage বাকেটে সরান। নিম্নলিখিত সমস্ত ধাপের জন্য, এই নতুন বাকেটটি [SOURCE_BUCKET] হিসাবে ব্যবহার করুন।

আপনার সোর্স বাকেটে প্রজেক্ট সার্ভিস অ্যাকাউন্টের অ্যাক্সেস দিন।

যদি আপনার সোর্স বাকেট আপনার ডেস্টিনেশন প্রজেক্টে না থাকে, তাহলে আপনাকে অবশ্যই ডেস্টিনেশন প্রজেক্টের ডিফল্ট সার্ভিস অ্যাকাউন্টকে আপনার সোর্স বাকেটের অ্যাক্সেস দিতে হবে। ডিফল্ট সার্ভিস অ্যাকাউন্টটির নাম [DESTINATION_PROJECT_ID] @appspot.gserviceaccount.com । আপনার সোর্স বাকেটের ডিফল্ট সার্ভিস অ্যাকাউন্টকে অ্যাক্সেস দিতে, বাকেট অ্যাক্সেস করার জন্য যথাযথ অনুমতি দিন।

Cloud Shell উপলব্ধ gsutil টুলটি ব্যবহার করে আপনি প্রয়োজনীয় ভূমিকা প্রদান করতে পারেন:

Cloud Shell শুরু করুন

gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \
gs://[SOURCE_BUCKET]

আপনি Google Cloud কনসোলেও এই ভূমিকাটি প্রদান করতে পারেন।

একটি আমদানি কার্যক্রম শুরু করুন

আমদানি কার্যক্রম শুরু করার আগে, নিশ্চিত করুন যে gcloud সঠিক প্রকল্পের জন্য কনফিগার করা আছে:

gcloud config set project [DESTINATION_PROJECT_ID]

আপনার সোর্স বাকেটের ডেটা আপনার গন্তব্য প্রকল্পে আমদানি করতে gcloud firestore import কমান্ডটি ব্যবহার করুন:

gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async

যেখানে [EXPORT_PREFIX] আপনার এক্সপোর্ট অপারেশনের outputUriPrefix এর প্রি-ফিক্সের সাথে মিলে যায়। উদাহরণস্বরূপ:

gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async

এক্সপোর্ট অপারেশন চলাকালীন, আপনি আপনার অপারেশনের অগ্রগতি দেখতে firestore operations list কমান্ড ব্যবহার করতে পারেন:

gcloud firestore operations list