এই কুইকস্টার্টটি আপনাকে দেখাবে কীভাবে ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ সেট আপ করতে হয়, ডেটা যোগ করতে হয় এবং তারপরে Firebase কনসোলে আপনার যোগ করা ডেটা কোয়েরি করার জন্য কোর অপারেশন বা পাইপলাইন অপারেশন ব্যবহার করতে হয়।
Cloud Firestore মোবাইল বা ওয়েব এসডিকে এবং সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে:
Cloud Firestore অ্যান্ড্রয়েড, আইওএস, ওয়েব এবং আরও অনেক কিছুর জন্য এসডিকে (SDK) সমর্থন করে। Cloud Firestore Security Rules এবং Firebase Authentication সাথে মিলিত হয়ে, মোবাইল ও ওয়েব এসডিকেগুলো সার্ভারবিহীন অ্যাপ আর্কিটেকচারকে সমর্থন করে, যেখানে ক্লায়েন্টরা সরাসরি আপনার Cloud Firestore ডেটাবেসের সাথে সংযোগ স্থাপন করে।
Cloud Firestore জাভা, নোড.জেএস এবং পাইথনের জন্য সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে। আপনার ডেটাবেসে সম্পূর্ণ অ্যাক্সেস সহ বিশেষাধিকারপ্রাপ্ত সার্ভার পরিবেশ সেট আপ করতে এই ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করুন। সার্ভার ক্লায়েন্ট লাইব্রেরির কুইকস্টার্ট- এ এই লাইব্রেরিগুলি সম্পর্কে আরও জানুন।
একটি ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণ ডাটাবেস তৈরি করুন
যদি আগে থেকে তৈরি করা না থাকে, তাহলে একটি Firebase প্রজেক্ট তৈরি করুন: Firebase কনসোলে , 'Add project'-এ ক্লিক করুন, তারপর একটি Firebase প্রজেক্ট তৈরি করতে বা বিদ্যমান Google Cloud প্রজেক্টে Firebase পরিষেবা যোগ করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।
Firebase কনসোলে আপনার প্রজেক্টটি খুলুন। বাম প্যানেলে, 'Build' প্রসারিত করুন এবং তারপরে 'Firestore database' নির্বাচন করুন।
ডাটাবেস তৈরি করুন -এ ক্লিক করুন।
ডাটাবেস মোডের জন্য এন্টারপ্রাইজ নির্বাচন করুন।
অপারেশন মোডের জন্য ফায়ারস্টোরের নেটিভ মোড নির্বাচন করুন, যা কোর এবং পাইপলাইন অপারেশন সমর্থন করে।
আপনার ডেটাবেসের জন্য একটি অবস্থান নির্বাচন করুন।
আপনার Cloud Firestore Security Rules জন্য একটি প্রারম্ভিক মোড নির্বাচন করুন:
- টেস্ট মোড
মোবাইল এবং ওয়েব ক্লায়েন্ট লাইব্রেরি দিয়ে কাজ শুরু করার জন্য এটি ভালো, কিন্তু এর মাধ্যমে যে কেউ আপনার ডেটা পড়তে এবং মুছে ফেলতে পারে। পরীক্ষা করার পর, ‘ আপনার ডেটা সুরক্ষিত করুন’ অংশটি অবশ্যই পর্যালোচনা করে নেবেন।
ওয়েব, অ্যাপল প্ল্যাটফর্ম বা অ্যান্ড্রয়েড এসডিকে দিয়ে কাজ শুরু করতে, টেস্ট মোড নির্বাচন করুন।
- উৎপাদন মোড
মোবাইল এবং ওয়েব ক্লায়েন্ট থেকে সমস্ত রিড এবং রাইট অ্যাক্সেস নিষিদ্ধ করা হয়েছে। আপনার প্রমাণীকৃত অ্যাপ্লিকেশন সার্ভারগুলো (পাইথন) এখনও আপনার ডেটাবেস অ্যাক্সেস করতে পারবে।
আপনার প্রাথমিক Cloud Firestore Security Rules আপনার ডিফল্ট Cloud Firestore ডেটাবেসে প্রযোজ্য হবে। যদি আপনি আপনার প্রকল্পের জন্য একাধিক ডেটাবেস তৈরি করেন, তবে আপনি প্রতিটি ডেটাবেসের জন্য Cloud Firestore Security Rules প্রয়োগ করতে পারেন।
তৈরি করুন- এ ক্লিক করুন।
আপনি যখন Firestore Enterprise সংস্করণটি সক্রিয় করেন, তখন Cloud API Manager- এ থাকা API-টিও সক্রিয় হয়ে যায়।
আপনার উন্নয়ন পরিবেশ সেট আপ করুন
আপনার অ্যাপে প্রয়োজনীয় ডিপেন্ডেন্সি এবং ক্লায়েন্ট লাইব্রেরিগুলো যোগ করুন।
Web
- আপনার ওয়েব অ্যাপে ফায়ারবেস যুক্ত করতে নির্দেশাবলী অনুসরণ করুন।
- Cloud Firestore এসডিকে একটি এনপিএম প্যাকেজ হিসেবে পাওয়া যায়।
আপনাকে Firebase এবং Cloud Firestore উভয়ই ইম্পোর্ট করতে হবে।npm install firebase@12.10.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
আপনার Apple অ্যাপে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
ফায়ারবেস ডিপেন্ডেন্সিগুলো ইনস্টল ও পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
- Xcode-এ আপনার অ্যাপ প্রজেক্টটি খুলে, File > Swift Packages > Add Package Dependency -তে যান।
- অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK রিপোজিটরিটি যোগ করুন:
- ফায়ারস্টোর লাইব্রেরিটি নির্বাচন করুন।
- কাজ শেষ হলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার ডিপেন্ডেন্সিগুলো রিজলভ ও ডাউনলোড করা শুরু করবে।
https://github.com/firebase/firebase-ios-sdk
অ্যান্ড্রয়েড
- আপনার অ্যান্ড্রয়েড অ্যাপে ফায়ারবেস যুক্ত করতে নির্দেশাবলী অনুসরণ করুন।
- Firebase Android BoM ব্যবহার করে, আপনার মডিউল (অ্যাপ-লেভেল) 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.10.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 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.1") }
কোটলিনের জন্য নির্দিষ্ট কোনো লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর ২০২৩ রিলিজ থেকে, কোটলিন এবং জাভা উভয় ডেভেলপাররাই প্রধান লাইব্রেরি মডিউলটির উপর নির্ভর করতে পারবেন (বিস্তারিত জানতে, এই উদ্যোগ সম্পর্কিত FAQ দেখুন)।
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');
FIREBASE_CONFIGURATION পরিবর্তে আপনার ওয়েব অ্যাপের firebaseConfig ব্যবহার করুন।
ডিভাইসের সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা অক্ষুণ্ণ রাখতে, ‘অফলাইন ডেটা সক্ষম করুন’ ডকুমেন্টেশনটি দেখুন।
সুইফট
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); });
সুইফট
// 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); });
সুইফট
// 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()}`); }); });
সুইফট
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); } });
মোবাইল ও ওয়েব এসডিকে-এর জন্য আপনার ডেটা সুরক্ষিত করুন
আপনি যদি ওয়েব, অ্যান্ড্রয়েড বা অ্যাপল প্ল্যাটফর্মের এসডিকে ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে ফায়ারবেস অথেনটিকেশন এবং Cloud Firestore Security Rules ব্যবহার করুন।
শুরু করার জন্য এখানে কিছু প্রাথমিক নিয়মাবলী দেওয়া হলো। আপনি কনসোলের '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;
}
}
}
আপনার ওয়েব, অ্যান্ড্রয়েড বা আইওএস অ্যাপ প্রোডাকশনে ডেপ্লয় করার আগে, এটাও নিশ্চিত করার জন্য পদক্ষেপ নিন যে শুধুমাত্র আপনার অ্যাপ ক্লায়েন্টরাই আপনার Cloud Firestore ডেটা অ্যাক্সেস করতে পারবে। অ্যাপ চেক ডকুমেন্টেশন দেখুন।
আপনি যদি সার্ভার SDK-গুলোর মধ্যে কোনো একটি ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করুন।
পরবর্তী পদক্ষেপ
নিম্নলিখিত বিষয়গুলির মাধ্যমে কোর এবং পাইপলাইন অপারেশন সম্পর্কে আপনার জ্ঞান আরও গভীর করুন:
- কোর অপারেশন ব্যবহার করে কোয়েরি করার বিষয়ে আরও জানুন।
- পাইপলাইন অপারেশন ব্যবহার করে কোয়েরি করার বিষয়ে আরও জানুন।