1. ওভারভিউ
Google ক্লাউড ডেটাস্টোর হল একটি NoSQL ডকুমেন্ট ডাটাবেস যা স্বয়ংক্রিয় স্কেলিং, উচ্চ কার্যকারিতা এবং অ্যাপ্লিকেশন বিকাশের সহজতার জন্য তৈরি করা হয়েছে।
আপনি কি শিখবেন
- স্প্রিং বুটে জাভা অবজেক্টগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে ক্লাউড ডেটাস্টোর কীভাবে ব্যবহার করবেন
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
আপনি Google ক্লাউড প্ল্যাটফর্ম পরিষেবাগুলি ব্যবহার করার বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন .
যদি এটি আপনার প্রথমবার ক্লাউড শেল শুরু হয়, তাহলে এটি কী তা বর্ণনা করে আপনাকে একটি মধ্যবর্তী স্ক্রীন উপস্থাপন করা হবে। যদি আপনি একটি মধ্যবর্তী স্ক্রীনের সাথে উপস্থাপিত হন, তবে চালিয়ে যান ক্লিক করুন।
ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷
এই ভার্চুয়াল মেশিনটি প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জাম দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5 GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, ব্রাউজার দিয়ে করা যেতে পারে।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
3. ক্লাউড ডেটাস্টোর শুরু করুন
GCP কনসোলে , মেনুতে নেভিগেট করুন -> ডেটাস্টোর (স্টোরেজ বিভাগে) অথবা এখানে ক্লিক করুন ।
আপনি যদি বর্তমান প্রকল্পে ডেটাস্টোর ব্যবহার না করে থাকেন তবে আপনি "একটি ক্লাউড ফায়ারস্টোর মোড নির্বাচন করুন" স্ক্রীন দেখতে পাবেন। "ডেটাস্টোর মোড" বিকল্পটি নির্বাচন করুন।
এর পরে, আপনি "আপনার ডেটা কোথায় সংরক্ষণ করবেন তা চয়ন করুন" স্ক্রীন দেখতে পাবেন। us-east1 বা অন্য কোনো আঞ্চলিক অবস্থান নির্বাচন করুন এবং "ডেটাবেস তৈরি করুন" এ ক্লিক করুন:
4. একটি নতুন স্প্রিং বুট জাভা অ্যাপ্লিকেশন বুটস্ট্র্যাপ করুন
CloudShell পরিবেশ থেকে, একটি নতুন স্প্রিং বুট অ্যাপ্লিকেশন শুরু এবং বুটস্ট্র্যাপ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
$ curl https://start.spring.io/starter.tgz \ -d packaging=war \ -d dependencies=cloud-gcp \ -d type=maven-project \ -d baseDir=datastore-example \ -d bootVersion=3.0.5 | tar -xzvf -
এটি Maven এর pom.xml
, একটি Maven র্যাপার এবং একটি অ্যাপ্লিকেশন এন্ট্রিপয়েন্ট সহ একটি নতুন Maven প্রকল্প সহ একটি নতুন datastore-example/
ডিরেক্টরি তৈরি করবে।
আমাদের অ্যাপ্লিকেশন ব্যবহারকারীদের কমান্ড লিখতে এবং ফলাফল দেখতে একটি CLI প্রদান করবে। আমরা একটি বইয়ের প্রতিনিধিত্ব করার জন্য একটি ক্লাস তৈরি করব এবং তারপরে ডেটাস্টোর রিপোজিটরি ব্যবহার করে ক্লাউড ডেটাস্টোরে সংরক্ষণ করব।
আমাদের pom.xml
এ আরও একটি প্রয়োজনীয় নির্ভরতা যোগ করতে হবে।
ক্লাউড শেল মেনু থেকে ওপেন এডিটর ক্লিক করে ওয়েব কোড এডিটর খুলুন।
সম্পাদক লোড হওয়ার পরে, Google ক্লাউড ডেটাস্টোর স্টার্টার এবং স্প্রিং শেল স্টার্টার নির্ভরতা যোগ করতে pom.xml
ফাইলটি পরিবর্তন করুন:
pom.xml
<project>
...
<dependencies>
...
<!-- Add GCP Datastore Starter -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-data-datastore</artifactId>
</dependency>
<!-- Add Spring Shell Starter -->
<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
</project>
5. বইয়ের ক্লাস তৈরি করুন
সম্পাদক ব্যবহার করে, নিম্নলিখিত বিষয়বস্তু সহ Book
ক্লাস তৈরি করুন:
datastore-example/src/main/java/com/example/demo/Book.java
package com.example.demo;
import com.google.cloud.spring.data.datastore.core.mapping.Entity;
import org.springframework.data.annotation.Id;
@Entity(name = "books")
public class Book {
@Id
Long id;
String title;
String author;
int year;
public Book(String title, String author, int year) {
this.title = title;
this.author = author;
this.year = year;
}
public long getId() {
return this.id;
}
@Override
public String toString() {
return "Book{" +
"id=" + this.id +
", title='" + this.title + '\'' +
", author='" + this.author + '\'' +
", year=" + this.year +
'}';
}
}
আপনি দেখতে পাচ্ছেন, এটি একটি সাধারণ পোজো। ক্লাসটি @Entity
এর সাথে টীকা করা হয়েছে যাতে বোঝা যায় যে এটি ডেটাস্টোরে সংরক্ষণ করা যেতে পারে এবং ধরনের নাম প্রদান করতে পারে (এসকিউএল ডাটাবেসে একটি সারণী হিসাবে মনে করুন, আরও বিশদ বিবরণের জন্য ডকুমেন্টেশন দেখুন)। সদয় নামটি ঐচ্ছিক - যদি এটি বাদ দেওয়া হয়, তাহলে শ্রেণীর নামের উপর ভিত্তি করে সদয় নাম তৈরি করা হবে।
মনে রাখবেন যে আমরা @Id
এর সাথে id
সম্পত্তি টীকা করেছি। এটি নির্দেশ করে যে আমরা এই ক্ষেত্রটিকে ডেটাস্টোর কী-এর শনাক্তকারী অংশ হিসাবে ব্যবহার করতে চাই। প্রতিটি ডেটাস্টোর সত্তার একটি শনাক্তকারী প্রয়োজন। সমর্থিত প্রকারগুলি হল String
এবং Long
।
বস্তুর স্ট্রিং উপস্থাপনাকে আরও পাঠযোগ্য করার জন্য আমরা toString
পদ্ধতিটি ওভাররাইড করি; আমরা তাদের প্রিন্ট আউট যখন এটি দরকারী হবে.
6. BookRepository ইন্টারফেস তৈরি করুন
নিম্নলিখিত বিষয়বস্তু সহ BookRepository
ক্লাস তৈরি করুন:
datastore-example/src/main/java/com/example/demo/BookRepository.java
package com.example.demo;
import java.util.List;
import com.google.cloud.spring.data.datastore.repository.DatastoreRepository;
public interface BookRepository extends DatastoreRepository<Book, Long> {
List<Book> findByAuthor(String author);
List<Book> findByYearGreaterThan(int year);
List<Book> findByAuthorAndYear(String author, int year);
}
ইন্টারফেসটি DatastoreRepository<Book, Long>
কে প্রসারিত করে যেখানে Book
হল ডোমেন ক্লাস এবং Long
হল Id
প্রকার। আমরা আমাদের সংগ্রহস্থলে তিনটি ক্যোয়ারী পদ্ধতি ঘোষণা করি যার জন্য বাস্তবায়নগুলি পর্দার আড়ালে স্বয়ংক্রিয়ভাবে তৈরি হয়।
প্রথমটি হল findByAuthor
. আপনি অনুমান করতে পারেন, এই পদ্ধতির বাস্তবায়ন একটি ক্যোয়ারী চালাবে যা লেখক ক্ষেত্রের সমতার জন্য শর্ত ফিল্টারে একটি ব্যবহারকারী-প্রদত্ত মান ব্যবহার করবে।
findByYearGreaterThan
পদ্ধতি একটি কোয়েরি চালায় যা ব্যবহারকারীর প্রদত্ত মানের চেয়ে বেশি বছরের ক্ষেত্রে ফিল্টার করে।
findByAuthorAndYear
একটি ক্যোয়ারী চালায় যা এমন সত্তার সন্ধান করে যেখানে লেখক এবং বছরের ক্ষেত্রগুলি ব্যবহারকারীর প্রদত্ত মানগুলির সাথে মেলে।
7. ইন্টারেক্টিভ CLI অ্যাপ্লিকেশন তৈরি করুন
প্রধান অ্যাপ্লিকেশন DemoApplication
ক্লাস খুলুন এবং এটির মত দেখতে এটি পরিবর্তন করুন:
datastore-example/src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;
import java.util.List;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
@ShellComponent
@SpringBootApplication
public class DemoApplication {
@Autowired
BookRepository bookRepository;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@ShellMethod("Saves a book to Cloud Datastore: save-book <title> <author> <year>")
public String saveBook(String title, String author, int year) {
Book savedBook = this.bookRepository.save(new Book(title, author, year));
return savedBook.toString();
}
@ShellMethod("Loads all books")
public String findAllBooks() {
Iterable<Book> books = this.bookRepository.findAll();
return Lists.newArrayList(books).toString();
}
@ShellMethod("Loads books by author: find-by-author <author>")
public String findByAuthor(String author) {
List<Book> books = this.bookRepository.findByAuthor(author);
return books.toString();
}
@ShellMethod("Loads books published after a given year: find-by-year-after <year>")
public String findByYearAfter(int year) {
List<Book> books = this.bookRepository.findByYearGreaterThan(year);
return books.toString();
}
@ShellMethod("Loads books by author and year: find-by-author-year <author> <year>")
public String findByAuthorYear(String author, int year) {
List<Book> books = this.bookRepository.findByAuthorAndYear(author, year);
return books.toString();
}
@ShellMethod("Removes all books")
public void removeAllBooks() {
this.bookRepository.deleteAll();
}
}
নোট করুন কিভাবে আমরা @ShellComponent
দিয়ে ক্লাসটি টীকা করেছি। এটি স্প্রিংকে জানায় যে আমরা এই ক্লাসটি CLI কমান্ডের উত্স হিসাবে ব্যবহার করতে চাই। @ShellMethod
এর সাথে টীকাকৃত পদ্ধতিগুলি আমাদের অ্যাপ্লিকেশনে CLI কমান্ড হিসাবে প্রকাশ করা হবে।
এখানে আমরা BookRepository
ইন্টারফেসে ঘোষিত পদ্ধতিগুলি ব্যবহার করি: findByAuthor
, findByYearGreaterThan
, findByAuthorAndYear
। এছাড়াও আমরা তিনটি বিল্ট-ইন পদ্ধতি ব্যবহার করি: save
, findAll
এবং deleteAll
।
আসুন saveBook
পদ্ধতিটি দেখি। আমরা শিরোনাম, লেখক এবং বছরের জন্য ব্যবহারকারী-প্রদত্ত মান ব্যবহার করে একটি Book
অবজেক্ট তৈরি করি। আপনি দেখতে পাচ্ছেন, আমরা একটি id
মান প্রদান করি না, তাই এটি স্বয়ংক্রিয়ভাবে বরাদ্দ করা হবে এবং সংরক্ষণ করার সময় id
ক্ষেত্রে বরাদ্দ করা হবে। save
পদ্ধতিটি Book
টাইপের একটি বস্তু গ্রহণ করে এবং ক্লাউড ডেটাস্টোরে সংরক্ষণ করে। এটি id
ক্ষেত্র সহ সমস্ত ক্ষেত্র জনবহুল সহ একটি Book
অবজেক্ট প্রদান করে। শেষ পর্যন্ত আমরা এই বস্তুর একটি স্ট্রিং উপস্থাপনা ফেরত.
বাকি পদ্ধতিগুলি একইভাবে কাজ করে: তারা উপযুক্ত সংগ্রহস্থল পদ্ধতিতে প্যারামিটারে পাস করাকে গ্রহণ করে এবং স্ট্রিংকৃত ফলাফল প্রদান করে।
8. অ্যাপ্লিকেশন চালান
অ্যাপ্লিকেশনটি তৈরি এবং শুরু করতে, প্রথমে নিশ্চিত করুন যে JAVA_HOME সঠিক সংস্করণে সেট করা আছে:
$ export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
ক্লাউড শেল-এ এই কমান্ডটি চালান (প্রজেক্ট datastore-example/
যেখানে pom.xml
অবস্থিত এর রুট থেকে):
$ ./mvnw spring-boot:run export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
একটি সফল বিল্ড স্টেজ পরে, বসন্ত লোগো প্রদর্শিত হবে এবং শেল প্রম্পট প্রদর্শিত হবে:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.5) shell:>
এখন আপনি আমরা আগে সংজ্ঞায়িত কমান্ড দিয়ে পরীক্ষা করতে পারেন। কমান্ডের তালিকা দেখতে, সাহায্য কমান্ড ব্যবহার করুন:
shell:> help ... find-all-books: Loads all books find-by-author: Loads books by author: find-by-author <author> find-by-author-year: Loads books by author and year: find-by-author-year <author> <year> find-by-year-after: Loads books published after a given year: find-by-year-after <year> remove-all-books: Removes all books save-book: Saves a book to Cloud Datastore: save-book <title> <author> <year>
নিম্নলিখিত চেষ্টা করুন:
-
save-book
কমান্ড ব্যবহার করে কয়েকটি বই তৈরি করুন -
find-all-books
কমান্ড ব্যবহার করে একটি অনুসন্ধান চালান - নির্দিষ্ট লেখকের বই খুঁজুন:
find-by-author <author>
- নির্দিষ্ট বছরের পরে প্রকাশিত বইগুলি খুঁজুন:
find-by-year-after <year>
- নির্দিষ্ট লেখক এবং বছর দ্বারা বই খুঁজুন:
find-by-author-year <author> <year>
9. ওয়েব ইন্টারফেস ব্যবহার করে ডেটাস্টোরে কী সংরক্ষিত আছে তা দেখুন
ক্লাউড ডেটাস্টোরে সত্তাগুলি কীভাবে সংরক্ষণ করা হয় তা দেখতে, GCP কনসোলে যান। প্রয়োজনে সদয় ক্ষেত্রে "বই" ইনপুট করুন।
10. পরিষ্কার করুন
পরিষ্কার করার জন্য, অ্যাপ্লিকেশন শেল থেকে যথাযথভাবে নামযুক্ত remove-all-books
কমান্ড ব্যবহার করে সমস্ত বই সরিয়ে ফেলুন।
shell:> remove-all-books
অ্যাপ্লিকেশন থেকে প্রস্থান করতে quit কমান্ড ব্যবহার করুন, তারপর Ctrl+C
।
11. অভিনন্দন!
এই কোডল্যাবে, আপনি একটি ইন্টারেক্টিভ CLI অ্যাপ্লিকেশন তৈরি করেছেন যেটি ক্লাউড ডেটাস্টোর থেকে বস্তুগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে পারে!
আরও জানুন
- ক্লাউড ডেটাস্টোর: https://cloud.google.com/datastore/
- স্প্রিং শেল: https://projects.spring.io/spring-shell/
- GCP প্রকল্পে বসন্ত: https://spring.io/projects/spring-cloud-gcp
- GCP GitHub সংগ্রহস্থলে বসন্ত: https://github.com/GoogleCloudPlatform/spring-cloud-gcp
- Google ক্লাউড প্ল্যাটফর্মে জাভা: https://cloud.google.com/java/
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।