ক্লাউড ডেটাস্টোরের সাথে স্প্রিং বুট অ্যাপ্লিকেশন

Google ক্লাউড ডেটাস্টোর হল একটি NoSQL ডকুমেন্ট ডাটাবেস যা স্বয়ংক্রিয় স্কেলিং, উচ্চ কার্যক্ষমতা এবং অ্যাপ্লিকেশন বিকাশের সহজতার জন্য তৈরি করা হয়েছে।

আপনি কি শিখবেন

  • স্প্রিং বুটে জাভা অবজেক্টগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে ক্লাউড ডেটাস্টোর কীভাবে ব্যবহার করবেন

আপনি কি প্রয়োজন হবে

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

আপনি Google ক্লাউড প্ল্যাটফর্ম পরিষেবাগুলি ব্যবহার করার বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:

2016-02-10 12:45:26.png এর স্ক্রিনশট

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত 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].

GCP কনসোলে, মেনুতে নেভিগেট করুন -> ডেটাস্টোর (স্টোরেজ বিভাগে)

আপনি যদি বর্তমান প্রকল্পে ডেটাস্টোর ব্যবহার না করে থাকেন তবে আপনি "একটি ক্লাউড ফায়ারস্টোর মোড নির্বাচন করুন" স্ক্রীন দেখতে পাবেন৷ "ডেটাস্টোর মোড" বিকল্পটি নির্বাচন করুন।

এর পরে, আপনি "আপনার ডেটা কোথায় সংরক্ষণ করবেন তা চয়ন করুন" স্ক্রীন দেখতে পাবেন। us-east1 বা অন্য কোনো আঞ্চলিক অবস্থান নির্বাচন করুন এবং "ডেটাবেস তৈরি করুন" এ ক্লিক করুন:

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>

সম্পাদক ব্যবহার করে, নিম্নলিখিত বিষয়বস্তু সহ 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 ওভাররাইড করি বস্তুর স্ট্রিং উপস্থাপনা আরও পাঠযোগ্য করার পদ্ধতি; আমরা তাদের প্রিন্ট আউট যখন এটি দরকারী হবে.

ফাইল সংরক্ষণ করতে ভুলবেন না!

নিম্নলিখিত বিষয়বস্তু সহ 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 একটি ক্যোয়ারী চালায় যা এমন সত্তার সন্ধান করে যেখানে লেখক এবং বছরের ক্ষেত্র ব্যবহারকারীর প্রদত্ত মানগুলির সাথে মেলে।

প্রধান অ্যাপ্লিকেশন 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 অবজেক্ট প্রদান করে। শেষ পর্যন্ত আমরা এই বস্তুর একটি স্ট্রিং উপস্থাপনা ফেরত.

বাকি পদ্ধতিগুলি একইভাবে কাজ করে: তারা উপযুক্ত সংগ্রহস্থল পদ্ধতিতে প্যারামিটারে পাস করাকে গ্রহণ করে এবং স্ট্রিংকৃত ফলাফল প্রদান করে।

অ্যাপ্লিকেশনটি তৈরি এবং শুরু করতে, ক্লাউড শেল-এ এই কমান্ডটি চালান (প্রজেক্ট 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>

নিম্নলিখিত চেষ্টা করুন:

  1. save-book ব্যবহার করে কয়েকটি বই তৈরি করুন আদেশ
  2. ফাইন্ড find-all-books ব্যবহার করে একটি অনুসন্ধান চালান আদেশ
  3. নির্দিষ্ট লেখকের বই খুঁজুন ( লেখক দ্বারা খুঁজুন find-by-author <author> )
  4. নির্দিষ্ট বছরের পর প্রকাশিত বই খুঁজুন ( find-by-year-after <year> খুঁজুন)
  5. নির্দিষ্ট লেখক এবং বছর দ্বারা বই খুঁজুন ( find-by-author-year <author> <year> খুঁজুন)

ক্লাউড ডেটাস্টোরে সত্তাগুলি কীভাবে সংরক্ষণ করা হয় তা দেখতে, GCP কনসোলে যান এবং মেনুতে যান -> ডেটাস্টোর (স্টোরেজ বিভাগে) -> সংস্থাগুলি (প্রয়োজনে "[ডিফল্ট]" নামস্থান এবং "বই" ধরনের নির্বাচন করুন)।

পরিষ্কার করার জন্য, অ্যাপ্লিকেশন শেল থেকে যথাযথভাবে নামযুক্ত remove-all-books কমান্ড ব্যবহার করে সমস্ত বই সরিয়ে ফেলুন।

shell:> remove-all-books

অ্যাপ্লিকেশন থেকে প্রস্থান করতে quit কমান্ড ব্যবহার করুন, তারপর Ctrl+C।

এই কোডল্যাবে, আপনি একটি ইন্টারেক্টিভ CLI অ্যাপ্লিকেশন তৈরি করেছেন যা ক্লাউড ডেটাস্টোর থেকে বস্তু সংরক্ষণ এবং পুনরুদ্ধার করতে পারে!

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।