Содержание
- 2. Вступ Минулого разу ми познайомилися з основними операціями по роботі з Datastore Нам цього достатньо? Як
- 3. Вступ Transactions Consistence Data relationships
- 4. Data Relationships Ancestor assigned at creation can never be changed в нашому застосуванні будуть конференції і
- 5. Data Relationships HAS-A в нас на конференцію будуть записуватися різні користувачі таким чином в однієї конференції
- 6. Конференції Зараз ми спробуємо розібратися з нашими конференціями нам потрібно навчитися писати запити і використовувати фільтри
- 7. Створення конференції Перше з чого ми почнемо, це з створення конференції Десь так воно має виглядати
- 8. Створення конференції Ми хочемо створити Entity конференція таким чином, що б кожна конференція мала свого Parent
- 9. Створення конференції Давайте подивимося на два нові класи: Conference звернемо увагу на нові анотації та методи
- 10. Анотації Які анотації нові ми побачили? Що значить @Index? Що значить @Parent?
- 11. OfyService Тепер нам необхідно внести зміни в OfyService Ми маємо зареєструвати Conference класс factory().register(Conference.class);
- 12. ConferenceApi Тепер нам необхідно додати певні методи в ConferenceApi Ми додамо методи getProfileFromUser createConference їхні заглушки
- 13. ConferenceApi Допишемо код: Спочатку отримаємо Key користувача Key profileKey = Key.create(Profile.class,userId); Після цього виділимо ключ для
- 14. ConferenceApi Раніше ми вже навчилися зберігати сутності Але в нашому випадку необхідно одразу зберігати дві сутності
- 15. ConferenceApi Тепер ми можемо забрати id для Conference маючи ключ key. getId(); Далі ми заберемо існуючий
- 16. Типи запитів В нашому застосуванні мають бути наступні фільтри: всі конференції це запит типу Query by
- 17. Запити Якщо ми знаємо ключ запит простий Entity entity = ofy().load().key(key).now(); Якщо нам потрібні всі Entity
- 18. ConferenceApi Тепер ми маємо додати в ConferenceApi метод queryConferences код є в додатках давайте подивимося на
- 19. Ancestor Queries Як ви пам’ятаєте в кожної конференції є її батько (людина, що створила дану конференцію)
- 20. Ancestor Queries Ви маєте самостійно додати метод getConferencesCreated() в ConferenceApi даний метод має повертати всі конференції
- 21. Filter by Property Тепер ми розглянемо самий цікавий запит, запит за параметрами
- 22. Filter by Property
- 23. Filter by Property Такі запити мають вигляд: Query query = ofy().load().type(Kind.class).filter("property operator", "value"); Приклад: Query query
- 24. Filter by Property Але ми можемо додавати фільтри до запиту. Ми можемо розбити створення Query Query
- 25. Filter by Property Давайте додамо метод в Api, що буде повертати всі конференції, що створені в
- 26. Datastore Indexes
- 27. Datastore Indexes Індекси в реляційних базах даних пришвидшують запити по полях В Datastore, якщо ви хочете
- 28. Datastore Indexes Коли ви зберігаєте значення, Datastore зберігає відповідний ключ Entity
- 29. Datastore Indexes Коли вам потрібно знайти всі Entity які мають поле City = London Datastore подивиться
- 30. Size of INDEX tables
- 31. Datastore Indexes В великому застосуванні індекси можуть займати більше місця ніж самі дані Тому вам дуже
- 32. Composite Indexes Ми розглянули звичайні індекси, а що ви скажете про наступний запит Retrieve all Conferences
- 33. Composite Indexes Для відповіді на попередній запит нам потрібен індекс який буде містити різні варіанти поєднань
- 34. Composite Indexes Без композитного індексу в вас не будуть працювати запити. Якщо в вас все вірно
- 35. Composite Indexes Якщо раптом в вас не створюється індекс, ви можете його вручну додати в цей
- 36. Query Restrictions Фільтр нерівності можна використовувати лише один раз цей вираз не вірний startdate > 15th
- 37. Query Restrictions Давайте допишемо один фільтр і запустимо. Як ви думаєте, який буде результат? @ApiMethod( name
- 38. Query Restrictions Виправимо @ApiMethod( name = "getConferencesFiltered", path = "getConferencesFiltered", httpMethod = HttpMethod.POST ) public List
- 39. Фільтр Ви пам’ятаєте, що в нашому застосуванні є фільтр. Ми з вами написали метод public List
- 40. Фільтр В нас в додатках є файл ConferenceQueryForm скопіюємо його в відповідний пакет Дуже цікавий клас,
- 41. Фільтр Трохи оптимізації public List queryConferences(ConferenceQueryForm conferenceQueryForm) { Iterable conferenceIterable = conferenceQueryForm.getQuery(); List result = new
- 42. Datastore Commit Process Datastore has two consistency models eventual consistency strong consistency
- 43. Datastore Commit Process Eventual Consistency
- 44. Datastore Commit Process Strong Consistency
- 45. Eventual vs Strong Яка стратегія краще підходить для ? блог АТМ money
- 46. Eventual vs Strong За замовчанням використовується Eventual consistency Але якщо ви робите запит Ancestor relationship Filter
- 47. Транзакції В нашому випадку коли користувач реєструється на конференцію ми зв’язуємо конференцію і користувача
- 48. Транзакції В стандартному випадку наші запити виглядають наступним чином Зазвичай цього достатньо, але бувають випадки …
- 49. Транзакції
- 50. Транзакції
- 51. Транзакції Дана проблема може бути вирішена за допомогою транзакцій
- 52. Транзакції
- 53. Транзакції Давайте впровадимо транзакції в наше застосування В нас поки, що не реалізована функція реєстрації на
- 54. Реєстрація При реєстрації на конференцію ми маємо зробити наступні речі зареєструвати користувача на конференцію зменшити кількість
- 55. Реєстрація Спочатку ми змінимо профайл користувача і додамо поле, що буде відповідати за конференції на які
- 56. Реєстрація Тепер нам необхідно додати методи в ConferenceApi Їх заглушки знаходяться в додатку registerForConference-skeleton-and-other-additions.txt @Named –
- 57. Реєстрація Майже весь код готовий, ви маєте реалізувати лише один метод registerForConference Але що б його
- 58. Реєстрація Запуск транзакції result = ofy().transact(new Work { public run () { // do stuff //
- 59. Transaction rules Snapshot isolation Optimistic concurency
- 60. Snapshot isolation Всі запити на читання мають повертати значення які мало сховище до початку транзакції Updates
- 61. Optimistic concurency Commit може бути тільки успішним (всі дії успішні) Значення, що отримують нове значення не
- 62. Конференції на які ми записані Ми не реалізували ще одну річ Ми не показуємо конференції на
- 63. Відписка Також ми маємо дати можливість користувачу відписатися від конференції Допишіть метод самостійно Заглушка метода присутня
- 64. unregisterFromConference /** * Unregister from the specified Conference. * * @param user An user who invokes
- 66. Скачать презентацию