ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ দিয়ে শুরু করুন,ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ দিয়ে শুরু করুন

এই কুইকস্টার্ট আপনাকে দেখায় কিভাবে ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ সেট আপ করতে হয়, ডেটা যোগ করতে হয়, তারপর Firebase কনসোলে আপনার যোগ করা ডেটা অনুসন্ধান করতে কোর অপারেশন বা পাইপলাইন অপারেশন ব্যবহার করতে হয়।

Cloud Firestore মোবাইল বা ওয়েব SDK এবং সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে:

  • Cloud Firestore অ্যান্ড্রয়েড, আইওএস এবং ওয়েব এবং আরও অনেক কিছুর জন্য SDK সমর্থন করে। Cloud Firestore Security Rules এবং Firebase Authentication সাথে মিলিত, মোবাইল এবং ওয়েব SDK সার্ভারলেস অ্যাপ আর্কিটেকচার সমর্থন করে যেখানে ক্লায়েন্টরা সরাসরি আপনার Cloud Firestore ডাটাবেসের সাথে সংযুক্ত হয়।

  • Cloud Firestore জাভা, নোড.জেএস এবং পাইথনের জন্য সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে। আপনার ডাটাবেসে সম্পূর্ণ অ্যাক্সেস সহ বিশেষায়িত সার্ভার পরিবেশ সেট আপ করতে এই ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করুন। সার্ভার ক্লায়েন্ট লাইব্রেরির জন্য কুইকস্টার্টে এই লাইব্রেরিগুলি সম্পর্কে আরও জানুন।

একটি ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ ডাটাবেস তৈরি করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে একটি Firebase প্রকল্প তৈরি করুন: Firebase কনসোলে , প্রকল্প যোগ করুন ক্লিক করুন, তারপর একটি Firebase প্রকল্প তৈরি করতে বা বিদ্যমান Google Cloud প্রকল্পে Firebase পরিষেবা যোগ করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।

  2. Firebase কনসোলে আপনার প্রজেক্টটি খুলুন। বাম প্যানেলে, Build প্রসারিত করুন এবং তারপর Firestore database নির্বাচন করুন।

  3. ডাটাবেস তৈরি করুন ক্লিক করুন।

  4. ডাটাবেস মোডের জন্য এন্টারপ্রাইজ নির্বাচন করুন।

  5. অপারেশন মোডের জন্য নেটিভ মোডে ফায়ারস্টোর নির্বাচন করুন, যা কোর এবং পাইপলাইন অপারেশন সমর্থন করে।

  6. আপনার ডাটাবেসের জন্য একটি অবস্থান নির্বাচন করুন।

  7. আপনার Cloud Firestore Security Rules জন্য একটি শুরুর মোড নির্বাচন করুন:

    পরীক্ষা মোড

    মোবাইল এবং ওয়েব ক্লায়েন্ট লাইব্রেরি দিয়ে শুরু করার জন্য ভালো, তবে যে কেউ আপনার ডেটা পড়তে এবং ওভাররাইট করতে পারে। পরীক্ষার পরে, আপনার ডেটা সুরক্ষিত করুন বিভাগটি পর্যালোচনা করতে ভুলবেন না।

    ওয়েব, অ্যাপল প্ল্যাটফর্ম, অথবা অ্যান্ড্রয়েড SDK ব্যবহার শুরু করতে, পরীক্ষা মোড নির্বাচন করুন।

    উৎপাদন মোড

    মোবাইল এবং ওয়েব ক্লায়েন্টদের থেকে সমস্ত পঠন এবং লেখার অনুমতি অস্বীকৃতি জানায়। আপনার প্রমাণীকৃত অ্যাপ্লিকেশন সার্ভার (পাইথন) এখনও আপনার ডাটাবেস অ্যাক্সেস করতে পারে।

    আপনার প্রাথমিক Cloud Firestore Security Rules আপনার ডিফল্ট Cloud Firestore ডাটাবেসে প্রযোজ্য হবে। আপনি যদি আপনার প্রকল্পের জন্য একাধিক ডাটাবেস তৈরি করেন, তাহলে আপনি প্রতিটি ডাটাবেসের জন্য Cloud Firestore Security Rules স্থাপন করতে পারেন।

  8. তৈরি করুন ক্লিক করুন।

যখন আপনি ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ সক্ষম করেন, তখন এটি ক্লাউড এপিআই ম্যানেজারে এপিআইও সক্ষম করে।

আপনার উন্নয়ন পরিবেশ সেট আপ করুন

আপনার অ্যাপে প্রয়োজনীয় নির্ভরতা এবং ক্লায়েন্ট লাইব্রেরি যোগ করুন।

Web

  1. আপনার ওয়েব অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।
  2. Cloud Firestore SDK একটি npm প্যাকেজ হিসেবে উপলব্ধ।
    npm install firebase@12.9.0 --save
    আপনাকে Firebase এবং Cloud Firestore উভয়ই আমদানি করতে হবে।
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
আইওএস+

আপনার অ্যাপল অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।

ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।

  1. Xcode-এ, আপনার অ্যাপ প্রজেক্ট খোলা থাকা অবস্থায়, File > Swift Packages > Add Package Dependency- তে নেভিগেট করুন।
  2. অনুরোধ করা হলে, Firebase Apple platforms SDK সংগ্রহস্থল যোগ করুন:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. ফায়ারস্টোর লাইব্রেরিটি বেছে নিন।
  5. শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
অ্যান্ড্রয়েড
  1. আপনার অ্যান্ড্রয়েড অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।
  2. Firebase Android BoM ব্যবহার করে, আপনার মডিউল (app-level) Gradle ফাইলে (সাধারণত app/build.gradle.kts অথবা app/build.gradle ) Android এর জন্য Cloud Firestore লাইব্রেরির নির্ভরতা ঘোষণা করুন।
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.8.0"))
    
        // Declare the dependency for the Cloud Firestore library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-firestore")
    }

    Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সর্বদা Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) BoM ব্যবহার না করেই Firebase লাইব্রেরি নির্ভরতা ঘোষণা করুন

    যদি আপনি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।

    মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করেন, তাহলে আমরা লাইব্রেরি সংস্করণগুলি পরিচালনা করার জন্য BoM ব্যবহার করার পরামর্শ দিচ্ছি, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।

    dependencies {
        // Declare the dependency for the Cloud Firestore library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-firestore:26.1.0")
    }

    কোটলিন-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? ২০২৩ সালের অক্টোবরের রিলিজ থেকে শুরু করে, কোটলিন এবং জাভা ডেভেলপার উভয়ই মূল লাইব্রেরি মডিউলের উপর নির্ভর করতে পারেন (বিস্তারিত জানার জন্য, এই উদ্যোগ সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন)।

Cloud Firestore শুরু করুন

Cloud Firestore একটি উদাহরণ শুরু করুন:

Web

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// When initializing Firestore, remember to use the name of the database you created earlier:
const db = initializeFirestore(app, {}, 'your-new-enterprise-database');

আপনার ওয়েব অ্যাপের firebaseConfig দিয়ে FIREBASE_CONFIGURATION প্রতিস্থাপন করুন।

ডিভাইসটি সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা ধরে রাখতে, অফলাইন ডেটা সক্ষম করুন ডকুমেন্টেশনটি দেখুন।

সুইফট
import FirebaseCore
import FirebaseFirestore

FirebaseApp.configure()

// When initializing Firestore, remember to use the name of the database you created earlier:
let db = Firestore.firestore(database: "your-new-enterprise-database")

Kotlin

// Access a Cloud Firestore instance from your Activity
// When initializing Firestore, remember to use the name of the database you created earlier:
val firestore = FirebaseFirestore.getInstance("your-new-enterprise-database")

Java

// Access a Cloud Firestore instance from your Activity
// When initializing Firestore, remember to use the name of the database you created earlier:
FirebaseFirestore firestore = FirebaseFirestore.getInstance("your-new-enterprise-database");

কোর অপারেশন ব্যবহার করে ডেটা যোগ করুন

ডেটা অনুসন্ধানের জন্য কোর অপারেশন এবং পাইপলাইন অপারেশনগুলি অন্বেষণ করতে, কোর অপারেশনগুলি ব্যবহার করে আপনার ডাটাবেসে ডেটা যুক্ত করুন।

Cloud Firestore ডকুমেন্টসে ডেটা সঞ্চয় করে, যা কালেকশনে সংরক্ষিত থাকে। Cloud Firestore প্রথমবার ডকুমেন্টে ডেটা যোগ করার সময় পরোক্ষভাবে সংগ্রহ এবং ডকুমেন্ট তৈরি করে। আপনাকে স্পষ্টভাবে সংগ্রহ বা ডকুমেন্ট তৈরি করার প্রয়োজন নেই।

নিম্নলিখিত উদাহরণ কোড ব্যবহার করে একটি নতুন সংগ্রহ এবং একটি নথি তৈরি করুন।

Web

import { collection, addDoc } from "firebase/firestore"; 

try {
  const docRef = await addDoc(collection(db, "users"), {
    first: "Ada",
    last: "Lovelace",
    born: 1815
  });
  console.log("Document written with ID: ", docRef.id);
} catch (e) {
  console.error("Error adding document: ", e);
}

Web

db.collection("users").add({
    first: "Ada",
    last: "Lovelace",
    born: 1815
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
// Add a new document with a generated ID
do {
  let ref = try await db.collection("users").addDocument(data: [
    "first": "Ada",
    "last": "Lovelace",
    "born": 1815
  ])
  print("Document added with ID: \(ref.documentID)")
} catch {
  print("Error adding document: \(error)")
}

Kotlin

// Create a new user with a first and last name
val user = hashMapOf(
    "first" to "Ada",
    "last" to "Lovelace",
    "born" to 1815,
)

// Add a new document with a generated ID
db.collection("users")
    .add(user)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "Error adding document", e)
    }

Java

// Create a new user with a first and last name
Map<String, Object> user = new HashMap<>();
user.put("first", "Ada");
user.put("last", "Lovelace");
user.put("born", 1815);

// Add a new document with a generated ID
db.collection("users")
        .add(user)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

এখন users সংগ্রহে আরেকটি ডকুমেন্ট যোগ করুন। লক্ষ্য করুন যে এই ডকুমেন্টে একটি কী-মান জোড়া (মাঝের নাম) রয়েছে যা প্রথম ডকুমেন্টে প্রদর্শিত হয় না। একটি সংগ্রহের ডকুমেন্টে বিভিন্ন ধরণের তথ্য থাকতে পারে।

Web

// Add a second document with a generated ID.
import { addDoc, collection } from "firebase/firestore"; 

try {
  const docRef = await addDoc(collection(db, "users"), {
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
  });

  console.log("Document written with ID: ", docRef.id);
} catch (e) {
  console.error("Error adding document: ", e);
}

Web

// Add a second document with a generated ID.
db.collection("users").add({
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
// Add a second document with a generated ID.
do {
  let ref = try await db.collection("users").addDocument(data: [
    "first": "Alan",
    "middle": "Mathison",
    "last": "Turing",
    "born": 1912
  ])
  print("Document added with ID: \(ref.documentID)")
} catch {
  print("Error adding document: \(error)")
}

Kotlin

// Create a new user with a first, middle, and last name
val user = hashMapOf(
    "first" to "Alan",
    "middle" to "Mathison",
    "last" to "Turing",
    "born" to 1912,
)

// Add a new document with a generated ID
db.collection("users")
    .add(user)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "Error adding document", e)
    }

Java

// Create a new user with a first, middle, and last name
Map<String, Object> user = new HashMap<>();
user.put("first", "Alan");
user.put("middle", "Mathison");
user.put("last", "Turing");
user.put("born", 1912);

// Add a new document with a generated ID
db.collection("users")
        .add(user)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

কোর অপারেশন ব্যবহার করে ডেটা পড়ুন

আপনি Cloud Firestore ডেটা যোগ করেছেন কিনা তা দ্রুত যাচাই করতে ফায়ারবেস কনসোলে ডেটা ভিউয়ার ব্যবহার করুন।

আপনি সম্পূর্ণ সংগ্রহটি পুনরুদ্ধার করতে "get" পদ্ধতিটিও ব্যবহার করতে পারেন।

Web

import { collection, getDocs } from "firebase/firestore"; 

const querySnapshot = await getDocs(collection(db, "users"));
querySnapshot.forEach((doc) => {
  console.log(`${doc.id} => ${doc.data()}`);
});

Web

db.collection("users").get().then((querySnapshot) => {
    querySnapshot.forEach((doc) => {
        console.log(`${doc.id} => ${doc.data()}`);
    });
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
do {
  let snapshot = try await db.collection("users").getDocuments()
  for document in snapshot.documents {
    print("\(document.documentID) => \(document.data())")
  }
} catch {
  print("Error getting documents: \(error)")
}

Kotlin

db.collection("users")
    .get()
    .addOnSuccessListener { result ->
        for (document in result) {
            Log.d(TAG, "${document.id} => ${document.data}")
        }
    }
    .addOnFailureListener { exception ->
        Log.w(TAG, "Error getting documents.", exception)
    }

Java

db.collection("users")
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                } else {
                    Log.w(TAG, "Error getting documents.", task.getException());
                }
            }
        });

পাইপলাইন অপারেশন ব্যবহার করে ডেটা পড়ুন

এখন আপনি পাইপলাইন কোয়েরি অভিজ্ঞতার সাথে কোর কোয়েরি অভিজ্ঞতার তুলনা করতে পারেন।

Web

// The import/require of "firebase/firestore/pipelines" has a side-effect
// of extending the Firestore class with the `.pipeline()` method.
// Without this import/require, you will not be able to create a Pipeline.
// import { execute } from "firebase/firestore/pipelines";
const readDataPipeline = db.pipeline()
  .collection("users");

// Execute the pipeline and handle the result
try {
  const querySnapshot = await execute(readDataPipeline);
  querySnapshot.results.forEach((result) => {
    console.log(`${result.id} => ${result.data()}`);
  });
} catch (error) {
    console.error("Error getting documents: ", error);
}
সুইফট
do {
  // Initialize a Firestore Pipeline instance and specify the "users" collection as the
  // input stage.
  let snapshot = try await db.pipeline()
    .collection("users")
    .execute() // Execute the pipeline to retrieve documents.

  // Iterate through the documents in the pipeline results, similar to a regular query
  // snapshot.
  for result in snapshot.results {
    print("\(result.id ?? "no ID") => \(result.data)")
  }
} catch {
  print("Error getting documents with pipeline: \(error)")
}

Kotlin

val readDataPipeline = db.pipeline()
    .collection("users")

// Execute the pipeline and handle the result
readDataPipeline.execute()
    .addOnSuccessListener { result ->
        for (document in result) {
            println("${document.getId()} => ${document.getData()}")
        }
    }
    .addOnFailureListener { exception ->
        println("Error getting documents: $exception")
    }

Java

Pipeline readDataPipeline = db.pipeline()
.collection("users");

readDataPipeline.execute()
.addOnSuccessListener(new OnSuccessListener<Pipeline.Snapshot>() {
    @Override
    public void onSuccess(Pipeline.Snapshot snapshot) {
        for (PipelineResult result : snapshot.getResults()) {
            System.out.println(result.getId() + " => " + result.getData());
        }
    }
})
.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        System.out.println("Error getting documents: " + e);
    }
});

মোবাইল এবং ওয়েব SDK-এর জন্য আপনার ডেটা সুরক্ষিত করুন

আপনি যদি ওয়েব, অ্যান্ড্রয়েড, অথবা অ্যাপল প্ল্যাটফর্ম SDK ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে ফায়ারবেস প্রমাণীকরণ এবং Cloud Firestore Security Rules ব্যবহার করুন।

শুরু করার জন্য এখানে কিছু মৌলিক নিয়ম সেট দেওয়া হল যা আপনি ব্যবহার করতে পারেন। আপনি কনসোলের নিয়ম ট্যাবে আপনার নিরাপত্তা নিয়ম পরিবর্তন করতে পারেন।

প্রমাণীকরণ প্রয়োজন

// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{uid} {
      allow read, write: if request.auth != null && request.auth.uid == uid;
    }
  }
}

উৎপাদন মোড

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

আপনার ওয়েব, অ্যান্ড্রয়েড, অথবা iOS অ্যাপটি প্রোডাকশনে স্থাপন করার আগে, শুধুমাত্র আপনার অ্যাপ ক্লায়েন্টরা যাতে আপনার Cloud Firestore ডেটা অ্যাক্সেস করতে পারে তা নিশ্চিত করার জন্য পদক্ষেপ নিন। অ্যাপ চেক ডকুমেন্টেশন দেখুন।

আপনি যদি সার্ভার SDK ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করুন।

পরবর্তী পদক্ষেপ

নিম্নলিখিত বিষয়গুলি ব্যবহার করে কোর এবং পাইপলাইন অপারেশন সম্পর্কে আপনার জ্ঞান আরও গভীর করুন:

,

এই কুইকস্টার্ট আপনাকে দেখায় কিভাবে ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ সেট আপ করতে হয়, ডেটা যোগ করতে হয়, তারপর Firebase কনসোলে আপনার যোগ করা ডেটা অনুসন্ধান করতে কোর অপারেশন বা পাইপলাইন অপারেশন ব্যবহার করতে হয়।

Cloud Firestore মোবাইল বা ওয়েব SDK এবং সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে:

  • Cloud Firestore অ্যান্ড্রয়েড, আইওএস এবং ওয়েব এবং আরও অনেক কিছুর জন্য SDK সমর্থন করে। Cloud Firestore Security Rules এবং Firebase Authentication সাথে মিলিত, মোবাইল এবং ওয়েব SDK সার্ভারলেস অ্যাপ আর্কিটেকচার সমর্থন করে যেখানে ক্লায়েন্টরা সরাসরি আপনার Cloud Firestore ডাটাবেসের সাথে সংযুক্ত হয়।

  • Cloud Firestore জাভা, নোড.জেএস এবং পাইথনের জন্য সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে। আপনার ডাটাবেসে সম্পূর্ণ অ্যাক্সেস সহ বিশেষায়িত সার্ভার পরিবেশ সেট আপ করতে এই ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করুন। সার্ভার ক্লায়েন্ট লাইব্রেরির জন্য কুইকস্টার্টে এই লাইব্রেরিগুলি সম্পর্কে আরও জানুন।

একটি ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ ডাটাবেস তৈরি করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে একটি Firebase প্রকল্প তৈরি করুন: Firebase কনসোলে , প্রকল্প যোগ করুন ক্লিক করুন, তারপর একটি Firebase প্রকল্প তৈরি করতে বা বিদ্যমান Google Cloud প্রকল্পে Firebase পরিষেবা যোগ করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।

  2. Firebase কনসোলে আপনার প্রজেক্টটি খুলুন। বাম প্যানেলে, Build প্রসারিত করুন এবং তারপর Firestore database নির্বাচন করুন।

  3. ডাটাবেস তৈরি করুন ক্লিক করুন।

  4. ডাটাবেস মোডের জন্য এন্টারপ্রাইজ নির্বাচন করুন।

  5. অপারেশন মোডের জন্য নেটিভ মোডে ফায়ারস্টোর নির্বাচন করুন, যা কোর এবং পাইপলাইন অপারেশন সমর্থন করে।

  6. আপনার ডাটাবেসের জন্য একটি অবস্থান নির্বাচন করুন।

  7. আপনার Cloud Firestore Security Rules জন্য একটি শুরুর মোড নির্বাচন করুন:

    পরীক্ষা মোড

    মোবাইল এবং ওয়েব ক্লায়েন্ট লাইব্রেরি দিয়ে শুরু করার জন্য ভালো, তবে যে কেউ আপনার ডেটা পড়তে এবং ওভাররাইট করতে পারে। পরীক্ষার পরে, আপনার ডেটা সুরক্ষিত করুন বিভাগটি পর্যালোচনা করতে ভুলবেন না।

    ওয়েব, অ্যাপল প্ল্যাটফর্ম, অথবা অ্যান্ড্রয়েড SDK ব্যবহার শুরু করতে, পরীক্ষা মোড নির্বাচন করুন।

    উৎপাদন মোড

    মোবাইল এবং ওয়েব ক্লায়েন্টদের থেকে সমস্ত পঠন এবং লেখার অনুমতি অস্বীকৃতি জানায়। আপনার প্রমাণীকৃত অ্যাপ্লিকেশন সার্ভার (পাইথন) এখনও আপনার ডাটাবেস অ্যাক্সেস করতে পারে।

    আপনার প্রাথমিক Cloud Firestore Security Rules আপনার ডিফল্ট Cloud Firestore ডাটাবেসে প্রযোজ্য হবে। আপনি যদি আপনার প্রকল্পের জন্য একাধিক ডাটাবেস তৈরি করেন, তাহলে আপনি প্রতিটি ডাটাবেসের জন্য Cloud Firestore Security Rules স্থাপন করতে পারেন।

  8. তৈরি করুন ক্লিক করুন।

যখন আপনি ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ সক্ষম করেন, তখন এটি ক্লাউড এপিআই ম্যানেজারে এপিআইও সক্ষম করে।

আপনার উন্নয়ন পরিবেশ সেট আপ করুন

আপনার অ্যাপে প্রয়োজনীয় নির্ভরতা এবং ক্লায়েন্ট লাইব্রেরি যোগ করুন।

Web

  1. আপনার ওয়েব অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।
  2. Cloud Firestore SDK একটি npm প্যাকেজ হিসেবে উপলব্ধ।
    npm install firebase@12.9.0 --save
    আপনাকে Firebase এবং Cloud Firestore উভয়ই আমদানি করতে হবে।
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
আইওএস+

আপনার অ্যাপল অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।

ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।

  1. Xcode-এ, আপনার অ্যাপ প্রজেক্ট খোলা থাকা অবস্থায়, File > Swift Packages > Add Package Dependency- তে নেভিগেট করুন।
  2. অনুরোধ করা হলে, Firebase Apple platforms SDK সংগ্রহস্থল যোগ করুন:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. ফায়ারস্টোর লাইব্রেরিটি বেছে নিন।
  5. শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
অ্যান্ড্রয়েড
  1. আপনার অ্যান্ড্রয়েড অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।
  2. Firebase Android BoM ব্যবহার করে, আপনার মডিউল (app-level) Gradle ফাইলে (সাধারণত app/build.gradle.kts অথবা app/build.gradle ) Android এর জন্য Cloud Firestore লাইব্রেরির নির্ভরতা ঘোষণা করুন।
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.8.0"))
    
        // Declare the dependency for the Cloud Firestore library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-firestore")
    }

    Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সর্বদা Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) BoM ব্যবহার না করেই Firebase লাইব্রেরি নির্ভরতা ঘোষণা করুন

    যদি আপনি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।

    মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করেন, তাহলে আমরা লাইব্রেরি সংস্করণগুলি পরিচালনা করার জন্য BoM ব্যবহার করার পরামর্শ দিচ্ছি, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।

    dependencies {
        // Declare the dependency for the Cloud Firestore library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-firestore:26.1.0")
    }

    কোটলিন-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? ২০২৩ সালের অক্টোবরের রিলিজ থেকে শুরু করে, কোটলিন এবং জাভা ডেভেলপার উভয়ই মূল লাইব্রেরি মডিউলের উপর নির্ভর করতে পারেন (বিস্তারিত জানার জন্য, এই উদ্যোগ সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন)।

Cloud Firestore শুরু করুন

Cloud Firestore একটি উদাহরণ শুরু করুন:

Web

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// When initializing Firestore, remember to use the name of the database you created earlier:
const db = initializeFirestore(app, {}, 'your-new-enterprise-database');

আপনার ওয়েব অ্যাপের firebaseConfig দিয়ে FIREBASE_CONFIGURATION প্রতিস্থাপন করুন।

ডিভাইসটি সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা ধরে রাখতে, অফলাইন ডেটা সক্ষম করুন ডকুমেন্টেশনটি দেখুন।

সুইফট
import FirebaseCore
import FirebaseFirestore

FirebaseApp.configure()

// When initializing Firestore, remember to use the name of the database you created earlier:
let db = Firestore.firestore(database: "your-new-enterprise-database")

Kotlin

// Access a Cloud Firestore instance from your Activity
// When initializing Firestore, remember to use the name of the database you created earlier:
val firestore = FirebaseFirestore.getInstance("your-new-enterprise-database")

Java

// Access a Cloud Firestore instance from your Activity
// When initializing Firestore, remember to use the name of the database you created earlier:
FirebaseFirestore firestore = FirebaseFirestore.getInstance("your-new-enterprise-database");

কোর অপারেশন ব্যবহার করে ডেটা যোগ করুন

ডেটা অনুসন্ধানের জন্য কোর অপারেশন এবং পাইপলাইন অপারেশনগুলি অন্বেষণ করতে, কোর অপারেশনগুলি ব্যবহার করে আপনার ডাটাবেসে ডেটা যুক্ত করুন।

Cloud Firestore ডকুমেন্টসে ডেটা সঞ্চয় করে, যা কালেকশনে সংরক্ষিত থাকে। Cloud Firestore প্রথমবার ডকুমেন্টে ডেটা যোগ করার সময় পরোক্ষভাবে সংগ্রহ এবং ডকুমেন্ট তৈরি করে। আপনাকে স্পষ্টভাবে সংগ্রহ বা ডকুমেন্ট তৈরি করার প্রয়োজন নেই।

নিম্নলিখিত উদাহরণ কোড ব্যবহার করে একটি নতুন সংগ্রহ এবং একটি নথি তৈরি করুন।

Web

import { collection, addDoc } from "firebase/firestore"; 

try {
  const docRef = await addDoc(collection(db, "users"), {
    first: "Ada",
    last: "Lovelace",
    born: 1815
  });
  console.log("Document written with ID: ", docRef.id);
} catch (e) {
  console.error("Error adding document: ", e);
}

Web

db.collection("users").add({
    first: "Ada",
    last: "Lovelace",
    born: 1815
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
// Add a new document with a generated ID
do {
  let ref = try await db.collection("users").addDocument(data: [
    "first": "Ada",
    "last": "Lovelace",
    "born": 1815
  ])
  print("Document added with ID: \(ref.documentID)")
} catch {
  print("Error adding document: \(error)")
}

Kotlin

// Create a new user with a first and last name
val user = hashMapOf(
    "first" to "Ada",
    "last" to "Lovelace",
    "born" to 1815,
)

// Add a new document with a generated ID
db.collection("users")
    .add(user)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "Error adding document", e)
    }

Java

// Create a new user with a first and last name
Map<String, Object> user = new HashMap<>();
user.put("first", "Ada");
user.put("last", "Lovelace");
user.put("born", 1815);

// Add a new document with a generated ID
db.collection("users")
        .add(user)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

এখন users সংগ্রহে আরেকটি ডকুমেন্ট যোগ করুন। লক্ষ্য করুন যে এই ডকুমেন্টে একটি কী-মান জোড়া (মাঝের নাম) রয়েছে যা প্রথম ডকুমেন্টে প্রদর্শিত হয় না। একটি সংগ্রহের ডকুমেন্টে বিভিন্ন ধরণের তথ্য থাকতে পারে।

Web

// Add a second document with a generated ID.
import { addDoc, collection } from "firebase/firestore"; 

try {
  const docRef = await addDoc(collection(db, "users"), {
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
  });

  console.log("Document written with ID: ", docRef.id);
} catch (e) {
  console.error("Error adding document: ", e);
}

Web

// Add a second document with a generated ID.
db.collection("users").add({
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
// Add a second document with a generated ID.
do {
  let ref = try await db.collection("users").addDocument(data: [
    "first": "Alan",
    "middle": "Mathison",
    "last": "Turing",
    "born": 1912
  ])
  print("Document added with ID: \(ref.documentID)")
} catch {
  print("Error adding document: \(error)")
}

Kotlin

// Create a new user with a first, middle, and last name
val user = hashMapOf(
    "first" to "Alan",
    "middle" to "Mathison",
    "last" to "Turing",
    "born" to 1912,
)

// Add a new document with a generated ID
db.collection("users")
    .add(user)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "Error adding document", e)
    }

Java

// Create a new user with a first, middle, and last name
Map<String, Object> user = new HashMap<>();
user.put("first", "Alan");
user.put("middle", "Mathison");
user.put("last", "Turing");
user.put("born", 1912);

// Add a new document with a generated ID
db.collection("users")
        .add(user)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

কোর অপারেশন ব্যবহার করে ডেটা পড়ুন

আপনি Cloud Firestore ডেটা যোগ করেছেন কিনা তা দ্রুত যাচাই করতে ফায়ারবেস কনসোলে ডেটা ভিউয়ার ব্যবহার করুন।

আপনি সম্পূর্ণ সংগ্রহটি পুনরুদ্ধার করতে "get" পদ্ধতিটিও ব্যবহার করতে পারেন।

Web

import { collection, getDocs } from "firebase/firestore"; 

const querySnapshot = await getDocs(collection(db, "users"));
querySnapshot.forEach((doc) => {
  console.log(`${doc.id} => ${doc.data()}`);
});

Web

db.collection("users").get().then((querySnapshot) => {
    querySnapshot.forEach((doc) => {
        console.log(`${doc.id} => ${doc.data()}`);
    });
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
do {
  let snapshot = try await db.collection("users").getDocuments()
  for document in snapshot.documents {
    print("\(document.documentID) => \(document.data())")
  }
} catch {
  print("Error getting documents: \(error)")
}

Kotlin

db.collection("users")
    .get()
    .addOnSuccessListener { result ->
        for (document in result) {
            Log.d(TAG, "${document.id} => ${document.data}")
        }
    }
    .addOnFailureListener { exception ->
        Log.w(TAG, "Error getting documents.", exception)
    }

Java

db.collection("users")
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                } else {
                    Log.w(TAG, "Error getting documents.", task.getException());
                }
            }
        });

পাইপলাইন অপারেশন ব্যবহার করে ডেটা পড়ুন

এখন আপনি পাইপলাইন কোয়েরি অভিজ্ঞতার সাথে কোর কোয়েরি অভিজ্ঞতার তুলনা করতে পারেন।

Web

// The import/require of "firebase/firestore/pipelines" has a side-effect
// of extending the Firestore class with the `.pipeline()` method.
// Without this import/require, you will not be able to create a Pipeline.
// import { execute } from "firebase/firestore/pipelines";
const readDataPipeline = db.pipeline()
  .collection("users");

// Execute the pipeline and handle the result
try {
  const querySnapshot = await execute(readDataPipeline);
  querySnapshot.results.forEach((result) => {
    console.log(`${result.id} => ${result.data()}`);
  });
} catch (error) {
    console.error("Error getting documents: ", error);
}
সুইফট
do {
  // Initialize a Firestore Pipeline instance and specify the "users" collection as the
  // input stage.
  let snapshot = try await db.pipeline()
    .collection("users")
    .execute() // Execute the pipeline to retrieve documents.

  // Iterate through the documents in the pipeline results, similar to a regular query
  // snapshot.
  for result in snapshot.results {
    print("\(result.id ?? "no ID") => \(result.data)")
  }
} catch {
  print("Error getting documents with pipeline: \(error)")
}

Kotlin

val readDataPipeline = db.pipeline()
    .collection("users")

// Execute the pipeline and handle the result
readDataPipeline.execute()
    .addOnSuccessListener { result ->
        for (document in result) {
            println("${document.getId()} => ${document.getData()}")
        }
    }
    .addOnFailureListener { exception ->
        println("Error getting documents: $exception")
    }

Java

Pipeline readDataPipeline = db.pipeline()
.collection("users");

readDataPipeline.execute()
.addOnSuccessListener(new OnSuccessListener<Pipeline.Snapshot>() {
    @Override
    public void onSuccess(Pipeline.Snapshot snapshot) {
        for (PipelineResult result : snapshot.getResults()) {
            System.out.println(result.getId() + " => " + result.getData());
        }
    }
})
.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        System.out.println("Error getting documents: " + e);
    }
});

মোবাইল এবং ওয়েব SDK-এর জন্য আপনার ডেটা সুরক্ষিত করুন

আপনি যদি ওয়েব, অ্যান্ড্রয়েড, অথবা অ্যাপল প্ল্যাটফর্ম SDK ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে ফায়ারবেস প্রমাণীকরণ এবং Cloud Firestore Security Rules ব্যবহার করুন।

শুরু করার জন্য এখানে কিছু মৌলিক নিয়ম সেট দেওয়া হল যা আপনি ব্যবহার করতে পারেন। আপনি কনসোলের নিয়ম ট্যাবে আপনার নিরাপত্তা নিয়ম পরিবর্তন করতে পারেন।

প্রমাণীকরণ প্রয়োজন

// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{uid} {
      allow read, write: if request.auth != null && request.auth.uid == uid;
    }
  }
}

উৎপাদন মোড

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

আপনার ওয়েব, অ্যান্ড্রয়েড, অথবা iOS অ্যাপটি প্রোডাকশনে স্থাপন করার আগে, শুধুমাত্র আপনার অ্যাপ ক্লায়েন্টরা যাতে আপনার Cloud Firestore ডেটা অ্যাক্সেস করতে পারে তা নিশ্চিত করার জন্য পদক্ষেপ নিন। অ্যাপ চেক ডকুমেন্টেশন দেখুন।

আপনি যদি সার্ভার SDK ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করুন।

পরবর্তী পদক্ষেপ

নিম্নলিখিত বিষয়গুলি ব্যবহার করে কোর এবং পাইপলাইন অপারেশন সম্পর্কে আপনার জ্ঞান আরও গভীর করুন: