এই কোডল্যাব সম্পর্কে
1. ওভারভিউ
Google ক্লাউড ডেটাস্টোর হল একটি NoSQL ডকুমেন্ট ডাটাবেস যা স্বয়ংক্রিয় স্কেলিং, উচ্চ কার্যক্ষমতা এবং অ্যাপ্লিকেশন বিকাশের সহজতার জন্য তৈরি করা হয়েছে।
আপনি কি শিখবেন
- স্প্রিং বুটে জাভা অবজেক্টগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে ক্লাউড ডেটাস্টোর কীভাবে ব্যবহার করবেন
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
আপনি Google ক্লাউড প্ল্যাটফর্ম পরিষেবাগুলি ব্যবহার করার বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য আপনার কয়েক ডলারের বেশি খরচ করা উচিত নয়, তবে আপনি যদি আরও সংস্থান ব্যবহার করার সিদ্ধান্ত নেন বা আপনি সেগুলিকে চলমান রেখে দেন তবে এটি আরও বেশি হতে পারে (এই নথির শেষে "পরিষ্কার" বিভাগটি দেখুন)।
Google ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 বিনামূল্যের ট্রায়ালের জন্য যোগ্য৷
Google ক্লাউড শেল সক্রিয় করুন
GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:
তারপর "স্টার্ট ক্লাউড শেল" ক্লিক করুন:
পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে:
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার অনেক কাজই যদি না হয়, তবে শুধুমাত্র একটি ব্রাউজার বা আপনার Google Chromebook দিয়ে করা যেতে পারে৷
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID- তে সেট করা আছে।
আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
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 baseDir=datastore-example \ -d bootVersion=2.1.1.RELEASE | tar -xzvf -
এটি Maven এর pom.xml
, একটি Maven র্যাপার, সেইসাথে একটি অ্যাপ্লিকেশন এন্ট্রিপয়েন্ট সহ একটি নতুন Maven প্রকল্প সহ একটি নতুন datastore-example/
ডিরেক্টরি তৈরি করবে।
আমাদের অ্যাপ্লিকেশন ব্যবহারকারীদের কমান্ড লিখতে এবং ফলাফল দেখতে একটি CLI প্রদান করবে। আমরা একটি বইকে উপস্থাপন করার জন্য একটি ক্লাস তৈরি করব এবং তারপরে ডেটাস্টোর রিপোজিটরি ব্যবহার করে ক্লাউড ডেটাস্টোরে সংরক্ষণ করব।
এছাড়াও আমাদের pom.xml
এ আরও একটি প্রয়োজনীয় নির্ভরতা যোগ করতে হবে।
ক্লাউড শেল মেনু থেকে লঞ্চ কোড এডিটর ক্লিক করে ওয়েব কোড এডিটর খুলুন।
সম্পাদক লোড হওয়ার পরে, স্প্রিং ডেটা ক্লাউড ডেটাস্টোর স্প্রিং বুট স্টার্টার নির্ভরতা যোগ করতে pom.xml
ফাইলটি পরিবর্তন করুন:
pom.xml
<project>
...
<dependencies>
...
<!-- Add GCP Datastore Starter -->
<dependency>
<groupId>org.springframework.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>2.0.0.RELEASE</version>
</dependency>
</dependencies>
</project>
5. বইয়ের ক্লাস তৈরি করুন
সম্পাদক ব্যবহার করে, নিম্নলিখিত বিষয়বস্তু সহ Book
ক্লাস তৈরি করুন:
datastore-example/src/main/java/com/example/demo/Book.java
package com.example.demo;
import org.springframework.cloud.gcp.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 org.springframework.cloud.gcp.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
মান প্রদান করি না, তাই এটি স্বয়ংক্রিয়ভাবে বরাদ্দ করা হবে এবং সংরক্ষণ করার সময় আইডি ক্ষেত্রে বরাদ্দ করা হবে। save
পদ্ধতিটি Book
টাইপের একটি বস্তু গ্রহণ করে এবং ক্লাউড ডেটাস্টোরে সংরক্ষণ করে। এটি id
ক্ষেত্র সহ সমস্ত ক্ষেত্র জনবহুল সহ একটি Book
অবজেক্ট প্রদান করে। শেষ পর্যন্ত আমরা এই বস্তুর একটি স্ট্রিং উপস্থাপনা ফেরত.
বাকি পদ্ধতিগুলি একইভাবে কাজ করে: তারা উপযুক্ত সংগ্রহস্থল পদ্ধতিতে প্যারামিটারে পাস করাকে গ্রহণ করে এবং স্ট্রিংকৃত ফলাফল প্রদান করে।
8. অ্যাপ্লিকেশন চালান
অ্যাপ্লিকেশনটি তৈরি এবং শুরু করতে, ক্লাউড শেল-এ এই কমান্ডটি চালান (প্রজেক্ট datastore-example/
যেখানে pom.xml
অবস্থিত এর রুট থেকে):
$ mvn spring-boot:run
একটি সফল বিল্ড স্টেজ পরে, বসন্ত লোগো প্রদর্শিত হবে এবং শেল প্রম্পট প্রদর্শিত হবে:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.1.RELEASE) 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 প্রকল্পে বসন্ত: http://cloud.spring.io/spring-cloud-gcp/
- GCP GitHub সংগ্রহস্থলে বসন্ত: https://github.com/spring-cloud/spring-cloud-gcp
- Google ক্লাউড প্ল্যাটফর্মে জাভা: https://cloud.google.com/java/
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।