🗊Презентация Збереження і видобування даних

Категория: Информатика
Нажмите для полного просмотра!
Збереження і видобування даних, слайд №1Збереження і видобування даних, слайд №2Збереження і видобування даних, слайд №3Збереження і видобування даних, слайд №4Збереження і видобування даних, слайд №5Збереження і видобування даних, слайд №6Збереження і видобування даних, слайд №7Збереження і видобування даних, слайд №8Збереження і видобування даних, слайд №9Збереження і видобування даних, слайд №10Збереження і видобування даних, слайд №11Збереження і видобування даних, слайд №12Збереження і видобування даних, слайд №13Збереження і видобування даних, слайд №14Збереження і видобування даних, слайд №15Збереження і видобування даних, слайд №16Збереження і видобування даних, слайд №17Збереження і видобування даних, слайд №18Збереження і видобування даних, слайд №19Збереження і видобування даних, слайд №20Збереження і видобування даних, слайд №21Збереження і видобування даних, слайд №22Збереження і видобування даних, слайд №23Збереження і видобування даних, слайд №24Збереження і видобування даних, слайд №25Збереження і видобування даних, слайд №26Збереження і видобування даних, слайд №27Збереження і видобування даних, слайд №28Збереження і видобування даних, слайд №29Збереження і видобування даних, слайд №30Збереження і видобування даних, слайд №31Збереження і видобування даних, слайд №32Збереження і видобування даних, слайд №33Збереження і видобування даних, слайд №34Збереження і видобування даних, слайд №35Збереження і видобування даних, слайд №36Збереження і видобування даних, слайд №37Збереження і видобування даних, слайд №38Збереження і видобування даних, слайд №39Збереження і видобування даних, слайд №40Збереження і видобування даних, слайд №41Збереження і видобування даних, слайд №42Збереження і видобування даних, слайд №43Збереження і видобування даних, слайд №44Збереження і видобування даних, слайд №45Збереження і видобування даних, слайд №46Збереження і видобування даних, слайд №47Збереження і видобування даних, слайд №48Збереження і видобування даних, слайд №49Збереження і видобування даних, слайд №50Збереження і видобування даних, слайд №51Збереження і видобування даних, слайд №52

Содержание

Вы можете ознакомиться и скачать презентацию на тему Збереження і видобування даних. Доклад-сообщение содержит 52 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекція 5. Збереження і видобування даних
Глибовець А.М.
Описание слайда:
Лекція 5. Збереження і видобування даних Глибовець А.М.

Слайд 2





Вступ
Сьогодні ми поговоримо про збереження даних
Які способи збереження даних ви знаєте?
Описание слайда:
Вступ Сьогодні ми поговоримо про збереження даних Які способи збереження даних ви знаєте?

Слайд 3





Вступ
В Google App Engine є багато варіантів збереження даних, наприклад:
Cloud SQL
Cloud Storage
Cloud Datastore
Ми розберемося з Datastore
Описание слайда:
Вступ В Google App Engine є багато варіантів збереження даних, наприклад: Cloud SQL Cloud Storage Cloud Datastore Ми розберемося з Datastore

Слайд 4





Datastore
Datastore – це база даних, що працює в Google Cloud
Вона доступна для будь-якого App Engine застосування
Це Big Table
Докладніше про Big Table http://research.google.com/archive/bigtable.html 
Це сховище виду key-value (дуже схоже на HashTable)
Також вона column-oriented (колонки, а не рядки зберігаються разом)
Це не реляційна база даних
Описание слайда:
Datastore Datastore – це база даних, що працює в Google Cloud Вона доступна для будь-якого App Engine застосування Це Big Table Докладніше про Big Table http://research.google.com/archive/bigtable.html Це сховище виду key-value (дуже схоже на HashTable) Також вона column-oriented (колонки, а не рядки зберігаються разом) Це не реляційна база даних

Слайд 5





Datastore
Що ж нам дає Datastore?
можливість будувати масштабовані застосування
можливість працювати з грандіозними масивами даних
реплікацію
Описание слайда:
Datastore Що ж нам дає Datastore? можливість будувати масштабовані застосування можливість працювати з грандіозними масивами даних реплікацію

Слайд 6





Збереження даних
З чим ви працювали і наведіть приклади:
local filesystem
shared filesystem
cloud file storage
relational databases
NoSQL databases
Google App Engine Datastore
Описание слайда:
Збереження даних З чим ви працювали і наведіть приклади: local filesystem shared filesystem cloud file storage relational databases NoSQL databases Google App Engine Datastore

Слайд 7





Datastore
Коли ми працюємо з Google Datastore ми маємо використовувати наступні абстракції:
kind
дуже схоже на концепт клас з ООП
це загальний вид сутностей
entity
конкретний запис в kind
property
властивості якими володіють entity
Описание слайда:
Datastore Коли ми працюємо з Google Datastore ми маємо використовувати наступні абстракції: kind дуже схоже на концепт клас з ООП це загальний вид сутностей entity конкретний запис в kind property властивості якими володіють entity

Слайд 8





Datastore
Описание слайда:
Datastore

Слайд 9





Datastore
Відмінностей дуже багато, але спочатку можете уявляти саме так
Описание слайда:
Datastore Відмінностей дуже багато, але спочатку можете уявляти саме так

Слайд 10





Datastore
Давайте спробуємо розібратися як зберігати об’єкти в Datastore
Для цього ми розберемося з 
Objectify
Entity
unique id
admin console
видобування entity з Datastore
Описание слайда:
Datastore Давайте спробуємо розібратися як зберігати об’єкти в Datastore Для цього ми розберемося з Objectify Entity unique id admin console видобування entity з Datastore

Слайд 11





Entity
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
@Entity
public class Student{
@Id Long studentId;
String name;
Integer course
//getters and setters
}
Більш докладно про Entity
https://cloud.google.com/appengine/docs/java/datastore/entities 
Більш докладно про Objectify
https://code.google.com/p/objectify-appengine/wiki/Concepts
Описание слайда:
Entity import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; @Entity public class Student{ @Id Long studentId; String name; Integer course //getters and setters } Більш докладно про Entity https://cloud.google.com/appengine/docs/java/datastore/entities Більш докладно про Objectify https://code.google.com/p/objectify-appengine/wiki/Concepts

Слайд 12





Property types
Як ви думаєте, що відбувається з вашим об’єктом на етапі збереження його в Datastore?
Що відбувається з його полями?
Описание слайда:
Property types Як ви думаєте, що відбувається з вашим об’єктом на етапі збереження його в Datastore? Що відбувається з його полями?

Слайд 13





Property types
Основні типи, що підтримуються:
integers
floating-point numbers
strings
dates
binary data
Але типів набагато більше
https://cloud.google.com/appengine/docs/java/datastore/entities#Java_Properties_and_value_types
Описание слайда:
Property types Основні типи, що підтримуються: integers floating-point numbers strings dates binary data Але типів набагато більше https://cloud.google.com/appengine/docs/java/datastore/entities#Java_Properties_and_value_types

Слайд 14





Збереження
Давайте повернемося до нашого проекту з конференціями
В нас був профайл користувача, тепер ми хочемо зберігати його в datastore
Що ми маємо зробити спочатку?
Описание слайда:
Збереження Давайте повернемося до нашого проекту з конференціями В нас був профайл користувача, тепер ми хочемо зберігати його в datastore Що ми маємо зробити спочатку?

Слайд 15





Збереження
@Entity
public class Profile {
String displayName;
String mainEmail;
TeeShirtSize teeShirtSize;
@Id String userId;
…
}
Описание слайда:
Збереження @Entity public class Profile { String displayName; String mainEmail; TeeShirtSize teeShirtSize; @Id String userId; … }

Слайд 16





Datastore Keys
Коли ви зберігаєте Entity в datastore, вона отримує у відповідність ключ
Ключ генерується datastore
Цей ключ унікально ідентифікує Entity
Існує два способи отримати ключ від datastore
Описание слайда:
Datastore Keys Коли ви зберігаєте Entity в datastore, вона отримує у відповідність ключ Ключ генерується datastore Цей ключ унікально ідентифікує Entity Існує два способи отримати ключ від datastore

Слайд 17





Datastore Keys
Перший:
В нас є проста Entity 
Student
name
course
коли ми будемо зберігати дану сутність, datastore поверне нам ключ
Описание слайда:
Datastore Keys Перший: В нас є проста Entity Student name course коли ми будемо зберігати дану сутність, datastore поверне нам ключ

Слайд 18





Datastore Keys
Другий
В нас є Entity в якої визначене унікальне поле
Student
id
name
course
коли ми будемо зберігати дану сутність, datastore поверне нам ключ, що буде згенерований на основі даного унікального поля
Перевага даного підходу полягає в тому, що ви можете забрати сутність з бази за цим полем id, а в першому випадку в вас немає такого поля і потрібно використовувати додаткові механізми
primary key
Описание слайда:
Datastore Keys Другий В нас є Entity в якої визначене унікальне поле Student id name course коли ми будемо зберігати дану сутність, datastore поверне нам ключ, що буде згенерований на основі даного унікального поля Перевага даного підходу полягає в тому, що ви можете забрати сутність з бази за цим полем id, а в першому випадку в вас немає такого поля і потрібно використовувати додаткові механізми primary key

Слайд 19





Збереження
Розберемося з збереженням даних використовуючи бібліотеку Objectify на прикладі 
https://code.google.com/p/objectify-appengine/wiki/BasicOperations#Saving
Описание слайда:
Збереження Розберемося з збереженням даних використовуючи бібліотеку Objectify на прикладі https://code.google.com/p/objectify-appengine/wiki/BasicOperations#Saving

Слайд 20





Збереження
Для збереження Entity
ObjectifyService.ofy().save().entity(entity).now();
Гарна практика визначити статичний метод ofy що буде повертати нам даний сервіс
подивимося OfyService клас нашого проекту
Таким чином, збереження нашого профайлу буде виглядати наступним чином:
ofy().save().entity(profile).now();
Описание слайда:
Збереження Для збереження Entity ObjectifyService.ofy().save().entity(entity).now(); Гарна практика визначити статичний метод ofy що буде повертати нам даний сервіс подивимося OfyService клас нашого проекту Таким чином, збереження нашого профайлу буде виглядати наступним чином: ofy().save().entity(profile).now();

Слайд 21





Збереження
Внесемо необхідні зміни в проект і запустимо його
Запустимо консоль управління
http://apis-explorer.appspot.com/apis-explorer/?base=http://localhost:8080/_ah/api 
Спробуємо тепер наш метод saveProfile
Описание слайда:
Збереження Внесемо необхідні зміни в проект і запустимо його Запустимо консоль управління http://apis-explorer.appspot.com/apis-explorer/?base=http://localhost:8080/_ah/api Спробуємо тепер наш метод saveProfile

Слайд 22


Збереження і видобування даних, слайд №22
Описание слайда:

Слайд 23





Збереження
Тепер підемо в панель управління в datastore
Описание слайда:
Збереження Тепер підемо в панель управління в datastore

Слайд 24





Збереження
Тут ви можете:
переглядати свої сутності
змінювати їх
робити запити до них
Описание слайда:
Збереження Тут ви можете: переглядати свої сутності змінювати їх робити запити до них

Слайд 25





Key conflicts
Ми говорили, що є два способи отримати ключ:
автоматичний
 в даному випадку, Google відповідає за унікальність ключів
на основі нашого id
якщо в ваших Entity співпадуть ID, datastore згенерує  однаковий ключ
Описание слайда:
Key conflicts Ми говорили, що є два способи отримати ключ: автоматичний в даному випадку, Google відповідає за унікальність ключів на основі нашого id якщо в ваших Entity співпадуть ID, datastore згенерує однаковий ключ

Слайд 26





Видобування даних
Видобування даних таке ж просте як і збереження:
Key key = Key.create(Entity.class, id); 
Entity entity = ofy().load().key(key).now();
Описание слайда:
Видобування даних Видобування даних таке ж просте як і збереження: Key key = Key.create(Entity.class, id); Entity entity = ofy().load().key(key).now();

Слайд 27





Видобування даних
Подивимося на практиці
В нас в API є метод getProfile
Що необхідно зробити?
@ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET)
    public Profile getProfile(final User user) throws UnauthorizedException {
        if (user == null) {
            throw new UnauthorizedException("Authorization required");
        }
        // TODO
        // load the Profile Entity
        String userId = ""; // TODO
        Key key = null; // TODO
        Profile profile = null; // TODO load the Profile entity
        return profile;
    }
Описание слайда:
Видобування даних Подивимося на практиці В нас в API є метод getProfile Що необхідно зробити? @ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET) public Profile getProfile(final User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Authorization required"); } // TODO // load the Profile Entity String userId = ""; // TODO Key key = null; // TODO Profile profile = null; // TODO load the Profile entity return profile; }

Слайд 28





Видобування даних
@ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET)
public Profile getProfile(final User user) throws UnauthorizedException {
if (user == null) {
throw new UnauthorizedException("Authorization required");
}
String userId = user.getUserId();
Key key = Key.create(Profile.class,userId);
Profile profile = (Profile)ofy().load().key(key).now();
return profile;
}
Описание слайда:
Видобування даних @ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET) public Profile getProfile(final User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Authorization required"); } String userId = user.getUserId(); Key key = Key.create(Profile.class,userId); Profile profile = (Profile)ofy().load().key(key).now(); return profile; }

Слайд 29





Видобування даних
Або так
@ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET)
public Profile getProfile(final User user) throws UnauthorizedException {
if (user == null) {
throw new UnauthorizedException("Authorization required");
}
String userId = user.getUserId();
Key<Profile> key = Key.create(Profile.class,userId);
Profile profile = ofy().load().key(key).now();
return profile;
}
Описание слайда:
Видобування даних Або так @ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET) public Profile getProfile(final User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Authorization required"); } String userId = user.getUserId(); Key<Profile> key = Key.create(Profile.class,userId); Profile profile = ofy().load().key(key).now(); return profile; }

Слайд 30





Видобування даних
Зробимо зміни та запустимо проект
Протестуємо наш API
Збережіть профайл
потім спробуйте getProfile
Описание слайда:
Видобування даних Зробимо зміни та запустимо проект Протестуємо наш API Збережіть профайл потім спробуйте getProfile

Слайд 31





Видобування даних
Описание слайда:
Видобування даних

Слайд 32





Оновлення Entity
Якщо ви звернете увагу на метод saveProfile
Ми кожний раз створюємо новий Profile
Чому ми це робимо?
Яка проблема з ключами?
Описание слайда:
Оновлення Entity Якщо ви звернете увагу на метод saveProfile Ми кожний раз створюємо новий Profile Чому ми це робимо? Яка проблема з ключами?

Слайд 33





Оновлення Entity
Ми кожен раз створюємо новий об’єкт і затираємо старий
Інакше ми б отримали конфлікт ключів
Інколи нам хочеться просто оновити дані існуючої сутності
Як це зробити?
Описание слайда:
Оновлення Entity Ми кожен раз створюємо новий об’єкт і затираємо старий Інакше ми б отримали конфлікт ключів Інколи нам хочеться просто оновити дані існуючої сутності Як це зробити?

Слайд 34





Оновлення Entity
Мені потрібно лише трохи змінити метод saveProfile
Profile profile = getProfile(user);
if (profile == null)
profile = new Profile(userId, displayName, mainEmail, teeShirtSize);
else
profile.update(displayName,teeShirtSize);
та дописати метод update в Profile клас
Описание слайда:
Оновлення Entity Мені потрібно лише трохи змінити метод saveProfile Profile profile = getProfile(user); if (profile == null) profile = new Profile(userId, displayName, mainEmail, teeShirtSize); else profile.update(displayName,teeShirtSize); та дописати метод update в Profile клас

Слайд 35





До змін
Описание слайда:
До змін

Слайд 36





До змін
Я змінив лише одне поле
Що відбулося?
Описание слайда:
До змін Я змінив лише одне поле Що відбулося?

Слайд 37





Після змін
Описание слайда:
Після змін

Слайд 38





Після змін
Описание слайда:
Після змін

Слайд 39





Conference Central
Ми з вами зробили два методи з API
В проекті який ми імпортували наявний повний Web UI
Таким чином як тільки ми зробили API по роботі з профайлом користувача, він почав працювати в Веб інтерфейсі
Давайте подивимося в controllers.js на save and get profile
Описание слайда:
Conference Central Ми з вами зробили два методи з API В проекті який ми імпортували наявний повний Web UI Таким чином як тільки ми зробили API по роботі з профайлом користувача, він почав працювати в Веб інтерфейсі Давайте подивимося в controllers.js на save and get profile

Слайд 40





Web UI and Backend API
Описание слайда:
Web UI and Backend API

Слайд 41





Web UI and Backend API
Якщо ви зробили все про що ми говорили і запустили застосування, то ви мали б отримати помилку
Це тому, що нам потрібно авторизувати Web UI в Backend API
Описание слайда:
Web UI and Backend API Якщо ви зробили все про що ми говорили і запустили застосування, то ви мали б отримати помилку Це тому, що нам потрібно авторизувати Web UI в Backend API

Слайд 42





Web UI and Backend API
В нашому випадку обидві ці частини знаходяться в одному проекті, але це не обов’язково!!!
Описание слайда:
Web UI and Backend API В нашому випадку обидві ці частини знаходяться в одному проекті, але це не обов’язково!!!

Слайд 43





Web UI and Backend API
В будь-якому випадку (один проект, окремі проекти) ви маєте авторизувати ваше застосування для використання API
Описание слайда:
Web UI and Backend API В будь-якому випадку (один проект, окремі проекти) ви маєте авторизувати ваше застосування для використання API

Слайд 44





Web UI and Backend API
Подивимося на ConferenceApi
@Api(name = "conference", 
version = "v1", 
scopes = { Constants.EMAIL_SCOPE }, 
clientIds = {
Constants.WEB_CLIENT_ID, 
Constants.API_EXPLORER_CLIENT_ID }, 
description = "API for the Conference Central Backend application.")
public class ConferenceApi {
Описание слайда:
Web UI and Backend API Подивимося на ConferenceApi @Api(name = "conference", version = "v1", scopes = { Constants.EMAIL_SCOPE }, clientIds = { Constants.WEB_CLIENT_ID, Constants.API_EXPLORER_CLIENT_ID }, description = "API for the Conference Central Backend application.") public class ConferenceApi {

Слайд 45





Web UI and Backend API
Подивимося в Constants
public static final String WEB_CLIENT_ID = "replace this with your Web cliend ID";
Ми маємо замінити цю стрічку нашим ID
Ви можете знайти його в вашій девелоперській консолі на App Engine
Описание слайда:
Web UI and Backend API Подивимося в Constants public static final String WEB_CLIENT_ID = "replace this with your Web cliend ID"; Ми маємо замінити цю стрічку нашим ID Ви можете знайти його в вашій девелоперській консолі на App Engine

Слайд 46





Web UI and Backend API
Описание слайда:
Web UI and Backend API

Слайд 47





Web UI and Backend API
Описание слайда:
Web UI and Backend API

Слайд 48





Web UI and Backend API
Описание слайда:
Web UI and Backend API

Слайд 49





Web UI and Backend API
Описание слайда:
Web UI and Backend API

Слайд 50





Web UI and Backend API
Тепер в нас є client ID 
Вставимо його в наші константи
public static final String WEB_CLIENT_ID = "508913531626-2bi19p760ej2h5fjc1g3c6himhkjbpcu.apps.googleusercontent.com";
Описание слайда:
Web UI and Backend API Тепер в нас є client ID Вставимо його в наші константи public static final String WEB_CLIENT_ID = "508913531626-2bi19p760ej2h5fjc1g3c6himhkjbpcu.apps.googleusercontent.com";

Слайд 51





Web UI and Backend API
Також нам треба, що б наше застосування вірно авторизувалося
Для цього в нас є файл app.js
в ньому треба знайти CLIENT_ID
і також вставити наш код
Описание слайда:
Web UI and Backend API Також нам треба, що б наше застосування вірно авторизувалося Для цього в нас є файл app.js в ньому треба знайти CLIENT_ID і також вставити наш код

Слайд 52






Дякую за увагу
Описание слайда:
Дякую за увагу



Похожие презентации
Mypresentation.ru
Загрузить презентацию