ডেটা রপ্তানির সময়সূচী

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে আপনার Cloud Firestore ডেটা রপ্তানির সময়সূচী করতে হয়। একটি সময়সূচীতে রপ্তানি চালানোর জন্য, আমরা Cloud Functions এবং Cloud Scheduler ব্যবহার করার পরামর্শ দিই।

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

পরিচালিত ডেটা রপ্তানির সময়সূচী করার আগে, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলি সম্পূর্ণ করতে হবে:

  1. আপনার Google Cloud প্রকল্পের জন্য বিলিং সক্ষম করুন৷ শুধুমাত্র Google Cloud প্রজেক্টে বিলিং চালু আছে তারা এক্সপোর্ট এবং ইম্পোর্ট ফিচার ব্যবহার করতে পারে।
  2. রপ্তানি ক্রিয়াকলাপগুলির জন্য একটি গন্তব্য Cloud Storage বালতি প্রয়োজন৷ আপনার Cloud Firestore ডাটাবেস অবস্থানের কাছাকাছি একটি অবস্থানে একটি Cloud Storage বালতি তৈরি করুন । আপনি রপ্তানি কার্যক্রমের জন্য একটি Requester Pays বালতি ব্যবহার করতে পারবেন না।

একটি ক্লাউড ফাংশন এবং একটি Cloud Scheduler কাজ তৈরি করুন

একটি Node.js ক্লাউড ফাংশন তৈরি করতে নীচের পদক্ষেপগুলি অনুসরণ করুন যা একটি Cloud Firestore ডেটা এক্সপোর্ট শুরু করে এবং সেই ফাংশনটিকে কল করার জন্য একটি Cloud Scheduler কাজ শুরু করে:

ফায়ারবেস CLI
  1. Firebase CLI ইনস্টল করুন । একটি নতুন ডিরেক্টরিতে, Cloud Functions জন্য CLI শুরু করুন:

    firebase init functions --project PROJECT_ID
    1. ভাষার জন্য JavaScript নির্বাচন করুন।
    2. ঐচ্ছিকভাবে, ESLint সক্ষম করুন।
    3. নির্ভরতা ইনস্টল করতে y লিখুন।
  2. নিম্নলিখিত দিয়ে functions/index.js ফাইলের কোড প্রতিস্থাপন করুন:

    const functions = require('firebase-functions');
    const firestore = require('@google-cloud/firestore');
    const client = new firestore.v1.FirestoreAdminClient();
    
    // Replace BUCKET_NAME
    const bucket = 'gs://BUCKET_NAME';
    
    exports.scheduledFirestoreExport = functions.pubsub
                                                .schedule('every 24 hours')
                                                .onRun((context) => {
    
      const projectId = process.env.GCP_PROJECT;
      const databaseName = 
        client.databasePath(projectId, '(default)');
    
      return client.exportDocuments({
        name: databaseName,
        outputUriPrefix: bucket,
        // Leave collectionIds empty to export all collections
        // or set to a list of collection IDs to export,
        // collectionIds: ['users', 'posts']
        collectionIds: []
        })
      .then(responses => {
        const response = responses[0];
        console.log(`Operation Name: ${response['name']}`);
      })
      .catch(err => {
        console.error(err);
        throw new Error('Export operation failed');
      });
    });
  3. উপরের কোডে, নিম্নলিখিত পরিবর্তন করুন:
    • আপনার বালতির নাম দিয়ে BUCKET_NAME প্রতিস্থাপন করুন।
    • আপনার রপ্তানির সময়সূচী সেট করতে every 24 hours পরিবর্তন করুন। AppEngine cron.yaml সিনট্যাক্স বা ইউনিক্স-ক্রোন ফর্ম্যাট ( * * * * * ) ব্যবহার করুন।
    • collectionIds: [] শুধুমাত্র নির্দিষ্ট সংগ্রহ গোষ্ঠী রপ্তানি করতে। সব সংগ্রহ রপ্তানি করা হয় হিসাবে ছেড়ে.

  4. নির্ধারিত ফাংশন স্থাপন করুন:

    firebase deploy --only functions
গুগল ক্লাউড কনসোল
একটি ক্লাউড ফাংশন তৈরি করুন
  1. Google ক্লাউড কনসোলে ক্লাউড ফাংশন পৃষ্ঠাতে যান:

    ক্লাউড ফাংশনে যান

  2. ফাংশন তৈরি করুন ক্লিক করুন
  3. একটি ফাংশনের নাম লিখুন যেমন firestoreExport
  4. ট্রিগারের অধীনে, ক্লাউড পাব/সাব নির্বাচন করুন
  5. বিষয়ের অধীনে, নতুন বিষয় তৈরি করুন নির্বাচন করুন। পাব/সাব বিষয়ের জন্য একটি নাম লিখুন, যেমন initiateFirestoreExport । আপনার Cloud Scheduler কাজ তৈরি করতে আপনার প্রয়োজনীয় বিষয়ের নামটি নোট করুন।
  6. সোর্স কোডের অধীনে, ইনলাইন সম্পাদক নির্বাচন করুন। index.js অধীনে নিম্নলিখিত কোড লিখুন:
    const firestore = require('@google-cloud/firestore');
    const client = new firestore.v1.FirestoreAdminClient();
    // Replace BUCKET_NAME
    const bucket = 'gs://BUCKET_NAME'
    
    exports.scheduledFirestoreExport = (event, context) => {
      const databaseName = client.databasePath(
        process.env.GCP_PROJECT,
        '(default)'
      );
    
      return client
        .exportDocuments({
          name: databaseName,
          outputUriPrefix: bucket,
          // Leave collectionIds empty to export all collections
          // or define a list of collection IDs:
          // collectionIds: ['users', 'posts']
          collectionIds: [],
        })
        .then(responses => {
          const response = responses[0];
          console.log(`Operation Name: ${response['name']}`);
          return response;
        })
        .catch(err => {
          console.error(err);
        });
    };
    উপরের কোডে, নিম্নলিখিত পরিবর্তন করুন:
    • আপনার বালতির নাম দিয়ে BUCKET_NAME প্রতিস্থাপন করুন।
    • collectionIds: [] শুধুমাত্র নির্দিষ্ট সংগ্রহ গোষ্ঠী রপ্তানি করতে। সব সংগ্রহ রপ্তানি করা হয় হিসাবে ছেড়ে.

  7. package.json এর অধীনে, নিম্নলিখিত নির্ভরতা যোগ করুন:
    {
      "dependencies": {
        "@google-cloud/firestore": "^1.3.0"
      }
    }
  8. কার্যকর করার ফাংশনের অধীনে, index.js এ ফাংশনের নাম, scheduledFirestoreExport লিখুন।
  9. ক্লাউড ফাংশন স্থাপন করতে তৈরি করুন ক্লিক করুন।
একটি Cloud Scheduler কাজ তৈরি করুন

এরপরে, একটি Cloud Scheduler কাজ তৈরি করুন যা আপনার ক্লাউড ফাংশনকে কল করে:

  1. Google ক্লাউড কনসোলে Cloud Scheduler পৃষ্ঠায় যান:

    Cloud Scheduler এ যান

  2. কাজ তৈরি করুন ক্লিক করুন।
  3. কাজের জন্য একটি নাম লিখুন যেমন scheduledFirestoreExport
  4. একটি ফ্রিকোয়েন্সি লিখুন, উদাহরণস্বরূপ, every 24 hours
  5. একটি টাইমজোন নির্বাচন করুন।
  6. লক্ষ্যের অধীনে, পাব/সাব নির্বাচন করুন। টপিক ফিল্ডে, আপনার ক্লাউড ফাংশনের পাশে আপনার সংজ্ঞায়িত পাব/সাব টপিকের নাম লিখুন, উপরের উদাহরণে initiateFirestoreExport
  7. পেলোড ফিল্ডে, start export লিখুন। কাজের জন্য একটি পেলোড সংজ্ঞায়িত করা প্রয়োজন, কিন্তু উপরের ক্লাউড ফাংশনটি আসলে এই মানটি ব্যবহার করে না।
  8. তৈরি করুন ক্লিক করুন।
এই মুহুর্তে, আপনি আপনার ক্লাউড ফাংশন এবং Cloud Scheduler কাজ স্থাপন করেছেন, কিন্তু আপনার ক্লাউড ফাংশনের এখনও এক্সপোর্ট অপারেশন চালানোর জন্য অ্যাক্সেসের অনুমতি প্রয়োজন৷

অ্যাক্সেসের অনুমতি কনফিগার করুন

এর পরে, ক্লাউড ফাংশনকে রপ্তানি কার্যক্রম শুরু করার এবং আপনার GCS বালতিতে লেখার অনুমতি দিন।

এই ক্লাউড ফাংশনটি আপনার প্রজেক্টের ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে এটির রপ্তানি ক্রিয়াকলাপকে প্রমাণীকরণ এবং অনুমোদন করতে। আপনি যখন একটি প্রকল্প তৈরি করেন, তখন নিম্নলিখিত নামে আপনার জন্য একটি ডিফল্ট পরিষেবা অ্যাকাউন্ট তৈরি করা হয়:

PROJECT_ID@appspot.gserviceaccount.com

এই পরিষেবা অ্যাকাউন্টটির একটি রপ্তানি অপারেশন শুরু করার জন্য এবং আপনার Cloud Storage বালতিতে লিখতে অনুমতি প্রয়োজন৷ এই অনুমতিগুলি মঞ্জুর করতে, ডিফল্ট পরিষেবা অ্যাকাউন্টে নিম্নলিখিত IAM ভূমিকাগুলি বরাদ্দ করুন:

  • Cloud Datastore Import Export Admin
  • বালতিতে Owner বা Storage Admin ভূমিকা

আপনি এই ভূমিকাগুলি বরাদ্দ করতে gcloud এবং gsutil কমান্ড-লাইন সরঞ্জামগুলি ব্যবহার করতে পারেন।

যদি ইতিমধ্যে ইনস্টল না করা থাকে, আপনি Google ক্লাউড কনসোলে Cloud Shell থেকে এই সরঞ্জামগুলি অ্যাক্সেস করতে পারেন:
Cloud Shell শুরু করুন

  1. ক্লাউড ডেটাস্টোর আমদানি রপ্তানি প্রশাসক ভূমিকা বরাদ্দ করুন৷ PROJECT_ID প্রতিস্থাপন করুন এবং নিম্নলিখিত কমান্ডটি চালান:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \
        --role roles/datastore.importExportAdmin
  2. আপনার বালতিতে স্টোরেজ অ্যাডমিনের ভূমিকা বরাদ্দ করুন। PROJECT_ID এবং BUCKET_NAME প্রতিস্থাপন করুন এবং নিম্নলিখিত কমান্ডটি চালান:

    gsutil iam ch serviceAccount:PROJECT_ID@appspot.gserviceaccount.com:admin \
        gs://BUCKET_NAME

আপনি যদি আপনার App Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট অক্ষম বা মুছে ফেলেন, তাহলে আপনার App Engine অ্যাপ আপনার Cloud Firestore ডেটাবেসে অ্যাক্সেস হারাবে। আপনি যদি আপনার App Engine পরিষেবা অ্যাকাউন্টটি অক্ষম করে থাকেন তবে আপনি এটিকে পুনরায় সক্ষম করতে পারেন, একটি পরিষেবা অ্যাকাউন্ট সক্ষম করা দেখুন৷ আপনি যদি আপনার App Engine পরিষেবা অ্যাকাউন্টটি গত 30 দিনের মধ্যে মুছে ফেলে থাকেন তবে আপনি আপনার পরিষেবা অ্যাকাউন্ট পুনরুদ্ধার করতে পারেন, একটি পরিষেবা অ্যাকাউন্ট মুছে ফেলার বিষয়টি দেখুন।

আপনার Cloud Scheduler কাজ এবং ক্লাউড ফাংশন পরীক্ষা করুন

আপনি Google ক্লাউড কনসোলের Cloud Scheduler পৃষ্ঠায় আপনার Cloud Scheduler কাজটি পরীক্ষা করতে পারেন।

  1. Google ক্লাউড কনসোলে Cloud Scheduler পৃষ্ঠায় যান।
    Cloud Scheduler এ যান

  2. আপনার নতুন Cloud Scheduler কাজের জন্য সারিতে, এখন চালান ক্লিক করুন।

    কয়েক সেকেন্ডের পরে, Cloud Scheduler কাজটি ফলাফলের কলামটিকে সফল এবং বর্তমান সময়ে সর্বশেষ রানে আপডেট করতে হবে। আপনাকে রিফ্রেশ ক্লিক করতে হতে পারে।

Cloud Scheduler পৃষ্ঠাটি শুধুমাত্র নিশ্চিত করে যে কাজটিকে আপনার ক্লাউড ফাংশন বলা হয়। আপনার ফাংশনের লগগুলি দেখতে ক্লাউড ফাংশন পৃষ্ঠাটি খুলুন৷

ক্লাউড ফাংশন লগগুলি দেখুন

ক্লাউড ফাংশন সফলভাবে একটি এক্সপোর্ট অপারেশন শুরু করেছে কিনা তা দেখতে, ফাংশনের লগগুলি খুলুন:

ফায়ারবেস কনসোল

Firebase কনসোলে Cloud Functions পৃষ্ঠাতে যান।

ফাংশন লগ-এ যান

GCP কনসোল

Google ক্লাউড কনসোলে Cloud Functions পৃষ্ঠাতে যান।

লগ ভিউয়ারে যান

রপ্তানি অগ্রগতি দেখুন

আপনি আপনার রপ্তানি ক্রিয়াকলাপের অগ্রগতি দেখতে, রপ্তানি এবং আমদানি ক্রিয়াকলাপ পরিচালনা দেখতে gcloud firestore operations list কমান্ড ব্যবহার করতে পারেন।

একটি রপ্তানি অপারেশন সম্পূর্ণ হওয়ার পরে, আপনি আপনার Cloud Storage বাকেটের আউটপুট ফাইলগুলি দেখতে পারেন:

Cloud Storage ব্রাউজার খুলুন