Объединение баз данных SQL и NOSQL с использованием Hibernate ORM и OGM

У меня есть приложение, использующее SQL Server. Я хотел использовать хранилище NOSQL и решил, что это будет граф, поскольку мои данные сильно связаны. Neo4j как вариант.

Я хочу оптимально иметь возможность переключать базы данных, не касаясь прикладного уровня, скажем, просто изменяя некоторые файлы конфигурации xml. Я просмотрел несколько примеров, опубликованных в Интернете, и увидел, что ORM и OGM настраивают приложения по-разному, файл конфигурации каждого из них имеет собственное имя и, что более важно, собственную структуру. Глядя на код каждого из них, выяснилось, что они также различаются по способу инициализации сеанса, что не очень хорошо для того, о чем я думаю.

Мой вопрос таков: «Возможно ли или осуществимо без больших накладных расходов переключаться между двумя базами данных, не касаясь существующего кода приложения? Я могу добавлять что-то, но не трогать то, что уже существует». Было бы неплохо установить чисто полиглотную персистентность между базами данных SQL и NOSQL, например, с помощью Hibernate.

Я хочу услышать от вас, ребята, прежде чем копать глубже. У нас есть один из людей Hibernate с нами здесь, в SO?


person Avise    schedule 30.07.2014    source источник


Ответы (1)


Цель Hibernate OGM — предложить единую абстракцию для различных хранилищ данных NoSQL. Пока мы говорим, что проект еще молод, поэтому я не уверен, что вы сможете принять его прямо из коробки.

Существует также проблема транзакций. Если ваше приложение было разработано для использования транзакций SQL, то все радикально изменится, когда вы перейдете на решение NOSQL.

Использование уровня абстракции хорошо для переносимости, но не предлагает всех возможностей собственных запросов. Та же проблема с JP-QL, который охватывает только SQL-92, без поддержки оконных функций или CTE.

Постоянство полиглота — отличная функция, но попробуйте использовать отдельные репозитории, например Spring Data. Я нахожу это гораздо более гибким с архитектурной точки зрения.

person Vlad Mihalcea    schedule 10.09.2014
comment
Итак, по вашему мнению, переключение между реляционным хранилищем JPA и документно-ориентированной базой данных из единой кодовой базы нецелесообразно? - person HDave; 16.09.2014
comment
Я бы не рекомендовал это. Я думаю, что лучше разделить их, возможно, за четкими служебными фасадами. - person Vlad Mihalcea; 16.09.2014