इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. खास जानकारी
Google Cloud Datastore एक NoSQL दस्तावेज़ डेटाबेस है, जिसे अपने-आप होने वाले स्केलिंग, बेहतर परफ़ॉर्मेंस, और ऐप्लिकेशन डेवलपमेंट में आसानी के लिए बनाया गया है.
आप क्या #39;जानेंगे
- स्प्रिंग बूट में Java ऑब्जेक्ट को सेव करने और वापस पाने के लिए, Cloud Datastore का इस्तेमाल कैसे करें
आपको इनकी ज़रूरत होगी
आप इस ट्यूटोरियल का इस्तेमाल कैसे करेंगे?
Google Cloud Platform सेवाओं के इस्तेमाल से जुड़े अपने अनुभव को आप कितनी रेटिंग देंगे?
2. सेट अप और ज़रूरी शर्तें
अपनी सुविधा के हिसाब से एनवायरमेंट सेट अप करना
अगर आपके पास पहले से कोई Google खाता (Gmail या Google Apps) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console (console.cloud.google.com) में साइन इन करें और एक नया प्रोजेक्ट बनाएं:
प्रोजेक्ट आईडी याद रखें, सभी Google क्लाउड प्रोजेक्ट में दिया गया नाम (ऊपर दिया गया नाम पहले ही लिया जा चुका है और यह आपके लिए काम नहीं करेगा!). इसे बाद में इस कोडलैब (कोड बनाना सीखना) में PROJECT_ID
के तौर पर बताया जाएगा.
इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग को चालू करना होगा.
इस कोडलैब के जवाब में कुछ डॉलर से ज़्यादा खर्च नहीं करना चाहिए. हालांकि, अगर आप संसाधनों का इस्तेमाल करना जारी रखते हैं या उन्हें चलाना बंद कर देते हैं, तो यह ज़्यादा भी हो सकता है.
Google Cloud Platform के नए उपयोगकर्ता, 300 डॉलर का मुफ़्त ट्रायल पा सकते हैं.
Google Cloud Shell चालू करें
GCP Console पर सबसे ऊपर दाईं ओर मौजूद टूलबार में, Cloud Shell आइकॉन पर क्लिक करें:
इसके बाद, &Cont &Cloud Shell शुरू करें &कोटेशन पर क्लिक करें;:
प्रावधान करने और पर्यावरण से जुड़ने में सिर्फ़ कुछ समय लगना चाहिए:
इस वर्चुअल मशीन में डेवलपमेंट से जुड़े सभी टूल हैं#39. इसमें लगातार 5 जीबी की होम डायरेक्ट्री मिलती है. यह Google Cloud पर चलती है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती जाती है. इस लैब में, हो सकता है कि किसी ब्राउज़र या Chromebook से आपका काम न हो.
Cloud Shell से कनेक्ट होने के बाद, आपको यह दिख जाएगा कि इसकी पुष्टि पहले से ही हो चुकी है और प्रोजेक्ट पहले से ही आपके PROJECT_ID पर सेट है.
पुष्टि करने के लिए, Cloud Shell में यह निर्देश चलाएं:
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 कंसोल में, मेन्यू -> डेटास्टोर (स्टोरेज सेक्शन में) पर जाएं.
अगर आपने मौजूदा प्रोजेक्ट में कभी भी 'डेटा स्टोर' का इस्तेमाल नहीं किया है, तो आपको &quat;'क्लाउड Firestore मोड चुनें' स्क्रीन दिखेगी. &kot;Datastore मोड" विकल्प चुनें.
इसके बाद, आपको "चुनें कि अपना डेटा कहां सेव करना है? स्क्रीन पर दिखेगा. us-east1 या कोई दूसरी क्षेत्रीय जगह चुनें और &कोटेशन क्लिक करें;डेटा बेस बनाएं>:
4. Spring बूट Java के नए ऐप्लिकेशन को बूटस्ट्रैप करें
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 प्रोजेक्ट के साथ एक नई datastore-example/
डायरेक्ट्री बनेगी. इसमें Maven's के pom.xml
वाले मेवन रैपर के साथ-साथ एक ऐप्लिकेशन एंट्रीपॉइंट भी शामिल होगा.
हमारा आवेदन, उपयोगकर्ताओं को निर्देश देने और नतीजे देखने के लिए एक सीएलआई उपलब्ध कराएगा. हम किसी किताब के प्रतिनिधित्व के लिए एक क्लास बनाएंगे और फिर उसे डेटा स्टोर करने की जगह का इस्तेमाल करके, Cloud Datastore में सेव करेंगे.
हमें pom.xml
में एक और ज़रूरी डिपेंडेंसी जोड़नी होगी.
Cloud Shell मेन्यू में जाकर, कोड एडिटर लॉन्च करें पर क्लिक करके, वेब कोड एडिटर खोलें.
एडिटर लोड होने के बाद, 'स्प्रिंग डेटा क्लाउड' डेटा स्टोर स्प्रिंग बूट स्टार्टर डिपेंडेंसी जोड़ने के लिए, 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
के साथ एनोटेट किया जाता है, ताकि यह बताया जा सके कि इसे Datastore में स्टोर किया जा सकता है और टाइप का नाम दें (एसक्यू डेटाबेस में टेबल के तौर पर देखें, ज़्यादा जानकारी के लिए दस्तावेज़ देखें). टाइप का नाम ज़रूरी नहीं है - अगर इसे अलग किया जाता है, तो क्लास का नाम इसके आधार पर जनरेट होता है.
ध्यान दें कि हमने id
प्रॉपर्टी को @Id
के साथ एनोटेट किया है. इससे पता चलता है कि हम इस फ़ील्ड का इस्तेमाल Datastore Key के पहचानकर्ता हिस्से के रूप में करना चाहते हैं. हर Datastore इकाई को एक पहचानकर्ता की ज़रूरत होती है. 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. इंटरैक्टिव सीएलआई ऐप्लिकेशन बनाएं
मुख्य ऐप्लिकेशन 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
को क्लास के साथ कैसे एनोटेशन किया है. इससे स्प्रिंग को पता चलता है कि हम सीएलआई कमांड के लिए सोर्स के तौर पर इस क्लास का इस्तेमाल करना चाहते हैं. @ShellMethod
में बताए गए तरीके, हमारे ऐप्लिकेशन में सीएलआई कमांड के तौर पर दिखाए जाएंगे.
हम उन तरीकों का इस्तेमाल करते हैं जिनके बारे में हमने BookRepository इंटरफ़ेस में बताया है: findByAuthor
, findByYearGreaterThan
, findByAuthorAndYear
. इसके अलावा, हम पहले से मौजूद तीन तरीकों का भी इस्तेमाल करते हैं: save
, findAll
, और deleteAll
.
saveBook
का तरीका देखें. हम शीर्षक, लेखक, और साल के लिए उपयोगकर्ता से मिली वैल्यू का इस्तेमाल करके, Book
ऑब्जेक्ट बनाते हैं. जैसा कि आप देख सकते हैं, हम id
की कोई वैल्यू नहीं देते हैं. इसलिए, इसे सेव करने पर, आईडी फ़ील्ड में अपने-आप बांट दिया जाता है. save
तरीके से Book
टाइप का एक ऑब्जेक्ट स्वीकार किया जाता है और उसे Cloud Datastore में सेव कर लिया जाता है. यह id
फ़ील्ड के साथ-साथ सभी फ़ील्ड भरने के साथ-साथ Book
ऑब्जेक्ट दिखाता है. आखिर में, हम इस ऑब्जेक्ट को स्ट्रिंग दिखाते हैं.
बाकी तरीके इसी तरह काम करते हैं: वे पैरामीटर को, डेटा स्टोर करने के सही तरीकों के साथ पास करते हैं और स्ट्रिंग के मुताबिक नतीजे देते हैं.
8. ऐप्लिकेशन चलाएं
ऐप्लिकेशन बनाने और शुरू करने के लिए, इस निर्देश को Cloud Shell (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. देखें कि वेब इंटरफ़ेस का इस्तेमाल करके, Datastore में क्या सेव किया जाता है
यह देखने के लिए कि क्लाउड डेटास्टोर में इकाइयां कैसे संग्रहित की जाती हैं, GCP कंसोल पर जाएं और मेन्यू -> डेटास्टोर (स्टोरेज सेक्शन में) -> इकाइयां{0/} (चुनें और कोटेशन; डिफ़ॉल्ट]
10. साफ़ करें
सफ़ाई करने के लिए, ऐप्लिकेशन शेल से remove-all-books
निर्देश का इस्तेमाल करके सभी किताबों को हटा दें.
shell:> remove-all-books
ऐप्लिकेशन से बाहर निकलने के लिए बाहर निकलने के निर्देश का इस्तेमाल करें. इसके बाद, Ctrl+C दबाएं.
11. बधाई हो!
इस कोडलैब में आपने' इंटरैक्टिव सीएलआई ऐप्लिकेशन बनाया है, जो Cloud Datastore से ऑब्जेक्ट को स्टोर और वापस ला सकता है!
ज़्यादा जानें
- क्लाउड डेटास्टोर: 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 Cloud Platform पर Java: https://cloud.google.com/java/
लाइसेंस
यह काम, क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत मिला है.