SlideShare a Scribd company logo
JPA for NoSQL
SERGEY CHERNOLYAS
MAY 27, 2017
• 15+ лет в разработке на
Java;
• 6 сертификатов (4 – по
Java технологиям и 2 –
SOA);
• Участие в нескольких
крупных проектах.
• Участие в OpenSource
проектах в 2016 года
SERGEI CHERNOLYAS
Lead Software Engineer
3
• JPA for NoSQL: как и зачем?;
• Презентация проекта Hibernate OGM;
• Презентация СУБД «OrientDB»
• Прентация модуля Hibernate OGM for OrientDB
• Заключение.
Agenda
4
• Стандартный путь описания доменной модели
• Общий способ для работы с сущностями
• Единый способ для работы с несколькими хранилищами
JPA for NoSQL: Как и зачем?
5
Презентация проекта «Hibernate OGM»
6
Презентация проекта
• Цели проекта
• Достижения проекта
7
Поддержаные типы хранилищ
8
Поддержаные типы хранилищ
• Граф-ориентированные
• Документ-ориентированные
• Колонко-ориентированные
• Key-value
• Мульти-модельные (появится в версии 5.2)
9
Поддержаные хранилища
• Neo4j
• MongoDB, CouchDB(Experimental)
• Cassandra(experimental)
• Infispinian, Ehcache, Redis(Experimental), Apache Ignite (включено в релиз
5.2)
• OrientDB (включено в релиз 5.2)
10
Поддержаные функции
Хранилище Характеристики
Ассоциа-
ции
Запросы Транзакции Режим работы
Mongodb + Native, JPQL Emulation Remote
CouchDB + Native Emulation Remote
Infispinian + JPQL JTA Remote/Embedded
Ehcache + - - Remote
Redis + JPQL Emulation Remote
Neo4j + Native, JPQL Emulation Remote/Embedded
Cassandra + Native, JPQL Emulation Remote
11
Архитектура проекта
Hibernate OGM Module for Concrete Storage
Hibernate ORM Core
em.getTransaction().begin();
em.persist(new Person("name1"));
em.getTransaction().commit();
Hibernate OGM Core
DatastorageProviderGridDialect
1.begin()4.commit() 2.createTuple()3.insertTuple()
12
Презентация СУБД «OrientDB»
presentation
13
Преимущества OrientDB
• Разработана на Java
• Мульти-модельная (граф- и документ- ориентированная)
• SQL-подобный язык запросов
• Поддерждка хранимых процедур на разных языках (JSR-223)
• Репликация «мастер-мастер»
• Возможность делать запросы к частям таблицы (индекс, кластер, RID)
• Хорошая производительность ( 10x быстрее чем Neo4j )
• Join-less подгрузка зависимостей
• API для нескольких языков
• Поддерка транзакций (собственная реализация)
14
Недостатки OrientDB
• Маленькая команда и community
• Реализация еще «зеленая» (текущая разрабатываемая версия 3.0.0-
SNAPSHOT)
15
Презентация интеграционного модуля Hibernate OGM for OrientDB
16
Реализованно в первом релизе
• Работа со встроенной и удаленной СУБД
• Поддержка документо-ориентированной модели
• Поддержка всех типов ассоциаций (one-to-one, one-to-many, many-to-many,
embedded)
17
Планы на следующие релизы
• Использование RID в качестве первичного ключа
• Поддержка графовой модели связей
18

More Related Content

What's hot

Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ontico
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
Alex Chistyakov
 
Стажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. GitСтажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. Git7bits
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
Константин Никифоров
 
Организация хранения данных сейсморазведки и промысловой геофизики
Организация хранения данных сейсморазведки и промысловой геофизикиОрганизация хранения данных сейсморазведки и промысловой геофизики
Организация хранения данных сейсморазведки и промысловой геофизики
Vsevolod Shabad
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализацииrit2010
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networkingguest57eb8a
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
Anton Turetsky
 
Артем Титаренко
Артем ТитаренкоАртем Титаренко
Артем Титаренко
CodeFest
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015Alex Chistyakov
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
Alex Chistyakov
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Ontico
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Ontico
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Ontico
 

What's hot (19)

Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
 
Стажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. GitСтажировка-2013, разработчики, занятие 10. Git
Стажировка-2013, разработчики, занятие 10. Git
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
Организация хранения данных сейсморазведки и промысловой геофизики
Организация хранения данных сейсморазведки и промысловой геофизикиОрганизация хранения данных сейсморазведки и промысловой геофизики
Организация хранения данных сейсморазведки и промысловой геофизики
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализации
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Артем Титаренко
Артем ТитаренкоАртем Титаренко
Артем Титаренко
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 

Similar to #ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"

Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Andrew Sovtsov
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
CleverDATA
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
Alexander Gornik
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Vyacheslav Nikulin
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Ontico
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
Alexander Granin
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Yandex
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?
GetITAbroad
 
ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs Hibernate
Alexey Zinoviev
 
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
UNETA
 
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru GroupЭволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Grouptfmailru
 
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014Anna Tarasenko
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 

Similar to #ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL" (20)

Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Sivko
SivkoSivko
Sivko
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Databases on Client Side
Databases on Client SideDatabases on Client Side
Databases on Client Side
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?
 
ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs Hibernate
 
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
 
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru GroupЭволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
 
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 

More from epamspb

Mobile Open Day: React Native: Crossplatform fast dive
Mobile Open Day: React Native: Crossplatform fast diveMobile Open Day: React Native: Crossplatform fast dive
Mobile Open Day: React Native: Crossplatform fast dive
epamspb
 
Mobile Open Day: Things I wish I'd known about Core Data before getting married
Mobile Open Day: Things I wish I'd known about Core Data before getting marriedMobile Open Day: Things I wish I'd known about Core Data before getting married
Mobile Open Day: Things I wish I'd known about Core Data before getting married
epamspb
 
#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...
#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...
#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...
epamspb
 
#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...
#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...
#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...
epamspb
 
#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...
#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...
#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...
epamspb
 
ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...
ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...
ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...
epamspb
 
#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"
#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"
#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"
epamspb
 
#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...
#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...
#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...
epamspb
 
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
epamspb
 
#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"
#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"
#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"
epamspb
 
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
epamspb
 
#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...
#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...
#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...
epamspb
 
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
epamspb
 

More from epamspb (13)

Mobile Open Day: React Native: Crossplatform fast dive
Mobile Open Day: React Native: Crossplatform fast diveMobile Open Day: React Native: Crossplatform fast dive
Mobile Open Day: React Native: Crossplatform fast dive
 
Mobile Open Day: Things I wish I'd known about Core Data before getting married
Mobile Open Day: Things I wish I'd known about Core Data before getting marriedMobile Open Day: Things I wish I'd known about Core Data before getting married
Mobile Open Day: Things I wish I'd known about Core Data before getting married
 
#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...
#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...
#ITsubbotnik Spring 2017: Sergey Chibirev/Andrei Ortyashov "Умный дом своими ...
 
#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...
#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...
#ITsubbotnik Spring 2017: Stepan Rakitin "Создаем отказоустойчивые распределе...
 
#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...
#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...
#ITsubbotnik Spring 2017: Rustam Kadyrov "Как приструнить зоопарк из микросер...
 
ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...
ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...
ITsubbotnik Spring 2017: Dmitriy Yatsyuk "Готовое комплексное инфраструктурно...
 
#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"
#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"
#ITsubbotnik Spring 2017: Roman Iovlev "Java edge in test automation"
 
#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...
#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...
#ITsubbotnik Spring 2017: Dmitrii Nikitko "Deep learning for understanding of...
 
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
 
#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"
#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"
#ITsubbotnik Spring 2017: Mikhail Khludnev "Search like %SQL%"
 
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
 
#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...
#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...
#ITsubbotnik Spring 2017: Anton Shapin, Denis Klykov "Visualization, storage ...
 
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
 

#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"

Editor's Notes

  1. One of first implementations of ORM (Object-Relation-Mapping) was Entity Beans from EJB2 (specification 1.1 from 1999). So, You can see that idea of ORM for relational databases is old enough. But … What is reasons of it? Everyone knows that relational databases has standard language (SQL) and standard interface for database driver (JDBC). However, ORM tools as middle level have been progressing. Why? I think that main reasons are : Firstly, ORM provides a general way for describe domain model. And secondly, ORM takes care of working with database. JPA as the inheritor of ORM ideas is the most used standard since 2006 (JPA 1.0) . The current version of the specification is 2.1. Now, JPA has several implementations such as Hibernate ORM, EclipseLink and Apache OpenJPA, these implementations have had production status for many years. So, everything is okey in world of relational databases. But what about the world of NoSQL storages? Can we use the same ways with NoSQL storages? Can we use the same application with MongoDB and Apache Casandra?
  2. The project “Hibernate OGM” started in 2011. Its main goal is to provide one standard access for all NoSQL storages. Its target specification is JPA 2.1 Now, achievements of the project are : supporting the most of used types of storages supporting the eight most popular storages implementing the most of requirements of JPA 2.1 specification
  3. You see the image from project documentation. It demonstrates that the world of NoSQL has many kinds of storing.
  4. You see the image from project documentation. It demonstrates that the world of NoSQL has many kinds of storing.
  5. This slide contains the enumeration of supported storages. The storages selected by italic is included to release 5.2 plan. A part of storages has status “experimental”.
  6. This slide contains aggregated information about features for each storage. Look at the column Assiations. All integration modules supports all types of associations in JPA 2.1 It “One-To-One”, “Many-To-Many” and so on. Look at the column Queries. A part of storages supports JPQL. The feature is implemented by Hibernate Search product. Look at the column Transactions. The most of storages support transactions by emulation. A part of them has its own transaction system. And Hibernate OGM integrates transaction system of storage with the standard transaction system (JTA). Other part of storages has not any transactions. In this case, Hibernate OGM emulates the transaction by side tools. Look at the column Remote / Embedded. A part of integration modules supports embedded mode. For example, Neo4j.
  7. It’s time to talk about architecture. Project Hibernate OGM (Object-Grid Mapping) is based on famous Hibernate ORM (Object-Relational Mapping). What happens when we execute the simple code? The core of Hibernate ORM defines type of request and redirects the request to core of Hibernate OGM. Then, the core of Hibernate OGM loads concrete provider and sends it a sequence of commands of a lower level. These commands are: To create a new transaction To create an empty tuple for future entity To set data of new entity and to insert to storage To commit the transaction. Then concrete data storage provider and grid dialect do low-level actions with the storage. The demonstrated sequence is right for OrientDB integration module. Integration modules for other storages can have another sequence.
  8. OrientDB is a multi-model database. It combines document-oriented and graph storages. In this way, you can create a document as graph node (vertex) and you can make link (edge) to other graph node. The first release of OrientDB was in 2010 by Luca Garulli. OrientDB has advantages
  9. OrientDB is a multi-model database. It combines document-oriented and graph storages. In this way, you can create a document as graph node (vertex) and you can make link (edge) to other graph node. The first release of OrientDB was in 2010 by Luca Garulli. OrientDB has advantages
  10. OrientDB is a multi-model database. It combines document-oriented and graph storages. In this way, you can create a document as graph node (vertex) and you can make link (edge) to other graph node. The first release of OrientDB was in 2010 by Luca Garulli. OrientDB has advantages
  11. OrientDB is a multi-model database. It combines document-oriented and graph storages. In this way, you can create a document as graph node (vertex) and you can make link (edge) to other graph node. The first release of OrientDB was in 2010 by Luca Garulli. OrientDB has advantages