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

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

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

আপনি শুরু করার আগে

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

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

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

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

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

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

উৎস প্রকল্প থেকে তথ্য রপ্তানি

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

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

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

যদি আপনার 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 থেকে লেখে

    নিরাপত্তা বিধিগুলি ফায়ারবেস অ্যাডমিন SDK বা Google ক্লাউড সার্ভার ক্লায়েন্ট লাইব্রেরি ব্যবহার করে তৈরি করা বিশেষ সুবিধাপ্রাপ্ত সার্ভার পরিবেশ থেকে লেখা আসা বন্ধ করে না৷ আপনার সার্ভারগুলি বন্ধ করে বা আপডেট করার মাধ্যমে আপনার অ্যাডমিন সার্ভারগুলি থেকে লেখার ক্রিয়াকলাপ বন্ধ করার বিষয়টি নিশ্চিত করুন৷

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

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

সমস্ত ডেটা রপ্তানি করুন
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