Firebase Data Connect , মিউটেশন ব্যবহার করে বাল্ক ডেটা অপারেশন করা হয়। যদিও আপনার Data Connect প্রকল্পগুলি PostgreSQL-এ ডেটা সঞ্চয় করে, আপনি SQL স্টেটমেন্ট বা SQL টুলিং ব্যবহার করে প্রচুর পরিমাণে ডেটা লোড করতে পারবেন না: আপনার Data Connect পরিষেবা এবং এর স্কিমাগুলি আপনার ডাটাবেসের সাথে সিঙ্কে থাকতে হবে এবং সরাসরি PostgreSQL-এ অপারেটিং এই সিঙ্ক্রোনাইজেশন ভেঙে দেবে৷
সেজন্য Data Connect ডেটা সিডিং এবং বাল্ক ডেটা ম্যানেজমেন্টের জন্য স্ট্যান্ডার্ড _insertMany
, _upsertMany
এবং _deleteMany
মিউটেশন প্রদান করে।
আপনি যখন অ্যাপের প্রোটোটাইপ করছেন এবং CI/CD ফ্লো চালাচ্ছেন, তখন এই মিউটেশনগুলিকে VS কোড এক্সটেনশন, Data Connect এমুলেটর এবং (ঐচ্ছিকভাবে) একটি স্থানীয় ডাটাবেস উদাহরণ ব্যবহার করে স্থানীয় উন্নয়ন পরিবেশে কল করা যেতে পারে।
স্থানীয় এবং উৎপাদন দৃষ্টান্তে বীজ তথ্য
শুরু করুন গাইডে , আপনি অ্যাডহক সন্নিবেশ মিউটেশন ব্যবহার করে একটি একক টেবিলে একটি রেকর্ড যোগ করতে একটি অ্যাপ সেট আপ করেছেন৷
ব্যবহারযোগ্য হওয়ার জন্য, মুভি রিভিউ অ্যাপটির মুভি, রিভিউ এবং ব্যবহারকারীদের প্রোটোটাইপিং ক্যোয়ারী এবং মিউটেশনের জন্য ডেটা প্রয়োজন যা বাস্তবসম্মত ডেটা সহ একাধিক টেবিলে যোগদান এবং অন্যান্য ক্রিয়াকলাপ ব্যবহার করে। আপনি আপনার স্কিমা প্রসারিত করতে পারেন এবং আপনার ডাটাবেস বীজ করতে পারেন।
আপনার প্রোটোটাইপিং পরিবেশ ডেটা সিডিং সঞ্চালনের জন্য কোডের প্রয়োজন। এই নির্দেশিকা কিছু নমুনা প্রদান করে, ব্যাখ্যা করে:
- পৃথক টেবিলে
_insertMany
এবং_upsertMany
এর ব্যবহার - সম্পর্কিত টেবিলে
_insertMany
এর ব্যবহার
মুভি রিভিউ অ্যাপ স্কিমা আপডেট করুন
আপনি _insertMany
এবং _upsertMany
মিউটেশন ব্যবহার করতে পারেন এক সময়ে পৃথক ডাটাবেস টেবিল আপডেট করতে, অথবা যোগদানের মাধ্যমে সম্পর্কিত একাধিক টেবিল আপডেট করতে। একটি প্রসারিত মুভি পর্যালোচনা অ্যাপ স্কিমা যা এই ব্যবহারের ক্ষেত্রে এবং উদাহরণগুলিকে ব্যাখ্যা করতে সাহায্য করে নীচে দেখানো হয়েছে৷ এটি Actor
এবং MovieActor
প্রকারগুলিকে অন্তর্ভুক্ত করার জন্য শুরুর Movie
টাইপের বাইরে schema.gql
প্রসারিত করে, যাতে আমরা আরও জটিল প্রশ্নের প্রোটোটাইপ করতে পারি।
# Actors
# Suppose an actor can participate in multiple movies and movies can have multiple actors
# Movie - Actors (or vice versa) is a many to many relationship
type Actor @table {
id: UUID!
imageUrl: String!
name: String! @col(name: "name", dataType: "varchar(30)")
}
# Join table for many-to-many relationship for movies and actors
# The 'key' param signifies the primary key(s) of this table
# In this case, the keys are [movieId, actorId], the generated fields of the reference types [movie, actor]
type MovieActor @table(key: ["movie", "actor"]) {
# @ref creates a field in the current table (MovieActor) that holds the primary key of the referenced type
# In this case, @ref(fields: "movieId", references: "id") is implied
movie: Movie!
# movieId: UUID! <- this is created by the implied @ref
actor: Actor!
# actorId: UUID! <- this is created by the implied @ref
role: String! # "main" or "supporting"
}
বীজ শূন্য অবস্থার ডেটাতে মিউটেশন লিখুন
প্রোটোটাইপিংয়ের সময়, যখন আপনার প্রশ্ন এবং মিউটেশনগুলি বিচ্ছিন্ন মানগুলির একটি পরিসরের বিরুদ্ধে পরীক্ষা করা প্রয়োজন, আপনি একাধিক রেকর্ডের সাথে ডেটা পূরণ করতে পারেন। উদাহরণস্বরূপ, আপনি তুলনা এবং ফিল্টারিং পরীক্ষা করার জন্য বিভিন্ন ধরণের জেনার এবং রেটিং সহ একাধিক মুভি রেকর্ড যুক্ত করতে চাইতে পারেন।
Movie
এবং Actor
টেবিলে বীজ তথ্য
আপনার প্রোটোটাইপিংয়ের পর্যায়ের উপর নির্ভর করে, আপনি একটি বা দুটি রেকর্ড সন্নিবেশ করার জন্য শুরু করুন গাইডে প্রবর্তিত একই কৌশলটি ব্যবহার করতে পারেন: অর্থাৎ, আপনি মিউটেশন, হার্ড-কোড ডেটা এবং _insert
তৈরি করতে VS কোড এক্সটেনশনে কোড লেন্স ব্যবহার করতে পারেন ভিএস কোডে সেই মিউটেশনগুলি চালান ।
অবশেষে, একটি _insertMany
অপারেশন ব্যবহার করে একটি টেবিলে অনেক রেকর্ড যোগ করা আরও বোধগম্য হয়। মুভি রিভিউ অ্যাপের উদাহরণে, এটি Movie
এবং Actor
-তে ডেটার একটি প্রাথমিক সেট সন্নিবেশ করে।
নিম্নলিখিত মিউটেশনগুলি কার্যকর করতে, VS কোড ফায়ারবেস এক্সটেনশন ব্যবহার করে, উপযুক্ত ফাইল এডিটর ভিউতে, আপনি আপনার প্রোডাকশন পরিষেবা বা স্থানীয় ডাটাবেসের সাথে প্রোটোটাইপ করছেন কিনা তার উপর নির্ভর করে রান (উৎপাদন) বা রান (স্থানীয়) কোডলেন্স বোতামে ক্লিক করুন।
# insertMany for Movie
# 2 records shown
mutation {
movie_insertMany(data: [
{
id: "550e8400-e29b-41d4-a716-446655440000",
title: "Inception",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/movies%2Finception.jpg?alt=media&token=07b09781-b302-4623-a5c3-1956d0143168",
genre: "sci-fi",
},
{
id: "550e8400-e29b-41d4-a716-446655440001",
title: "The Matrix",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/movies%2Fthe_matrix.jpg?alt=media&token=4975645d-fef8-409e-84a5-bcc1046e2059",
genre: "action",
}
])
}
# insertMany for Actor
# 2 records shown
mutation {
actor_insertMany(data: [
{
id: "123e4567-e89b-12d3-a456-426614174000",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/actors%2Fdicaprio.jpeg?alt=media&token=452e030a-efa5-4ef4-bb81-502b23241316",
name: "Leonardo DiCaprio"
},
{
id: "123e4567-e89b-12d3-a456-426614174001",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/actors%2Fkeanu.jpg?alt=media&token=6056520c-ef3e-4823-aad0-108aab163115",
name: "Keanu Reeves"
}
])
}
MovieActor
যোগদানের টেবিলে বীজ ডেটা
যোগদান এবং অন্যান্য জটিল অপারেশন ব্যবহার করে প্রশ্ন এবং মিউটেশন পরীক্ষা করতে, আপনি MovieActor
টেবিলে একাধিক রেকর্ড যোগ করতে পারেন।
এখানে, যখন আপনি এই ধরনের সম্পর্কে একাধিক টেবিল আপডেট করছেন, আপনি আপডেটটি সঠিকভাবে সম্পন্ন হয়েছে তা নিশ্চিত করতে @transaction
নির্দেশিকা যোগ করতে পারেন।
mutation @transaction {
movie_insertMany(data: [
{
id: "550e8400-e29b-41d4-a716-446655440000",
title: "Inception",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/movies%2Finception.jpg?alt=media&token=07b09781-b302-4623-a5c3-1956d0143168",
genre: "sci-fi",
},
{
id: "550e8400-e29b-41d4-a716-446655440001",
title: "The Matrix",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/movies%2Fthe_matrix.jpg?alt=media&token=4975645d-fef8-409e-84a5-bcc1046e2059",
genre: "action",
}
])
actor_insertMany(data: [
{
id: "123e4567-e89b-12d3-a456-426614174000",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/actors%2Fdicaprio.jpeg?alt=media&token=452e030a-efa5-4ef4-bb81-502b23241316",
name: "Leonardo DiCaprio"
},
{
id: "123e4567-e89b-12d3-a456-426614174001",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/actors%2Fkeanu.jpg?alt=media&token=6056520c-ef3e-4823-aad0-108aab163115",
name: "Keanu Reeves"
}
])
}
বীজ ডেটা রিসেট করার জন্য একটি মিউটেশন লিখুন
প্রোটোটাইপিং এবং CI/CD সম্পাদন করার সময়, ডেটার একটি নতুন সেটে পরীক্ষার একটি নতুন সিরিজ চালানোর জন্য ডেটাকে শূন্য অবস্থায় রিসেট করা কার্যকর হতে পারে।
এটি করার জন্য, যদি আপনার প্রোটোটাইপ কোডটি আপনার টেবিলে রেকর্ড যোগ না করে, তাহলে Data Connect দ্বারা প্রদত্ত _upsertMany
মিউটেশন ব্যবহার করুন।
নিম্নলিখিত উদাহরণে, মুভির রেকর্ডগুলিকে তাদের আসল অবস্থায় আপডেট করার জন্য প্রাথমিক মান সহ movie_upsertMany
ডাকা হয়।
mutation {
# Execute an upsertMany operation to update the Movie table
movie_upsertMany(data: [
{
id: "550e8400-e29b-41d4-a716-446655440000",
title: "Inception",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/movies%2Finception.jpg?alt=media&token=07b09781-b302-4623-a5c3-1956d0143168",
genre: "sci-fi",
},
{
id: "550e8400-e29b-41d4-a716-446655440001",
title: "The Matrix",
imageUrl: "https://firebasestorage.googleapis.com/v0/b/fdc-quickstart-web.appspot.com/o/movies%2Fthe_matrix.jpg?alt=media&token=4975645d-fef8-409e-84a5-bcc1046e2059",
genre: "action",
}
…
}
এরপর কি?
- আপনার Data Connect প্রকল্পগুলিতে Admin SDK সংহত করার বিষয়ে জানুন৷