есть ли какие-либо преимущества для использования ORDBMS вместо RDBMS за JPA

#postgresql #jpa #orm #rdbms

#postgresql #jpa #orm #rdbms

Вопрос:

Сегодня я просмотрел PostgreSQL wiki и обнаружил, что это ORDBMS (объектно-реляционная система управления базами данных), поэтому я хочу знать, есть ли какие-либо преимущества для использования PostgreSQL (RDBMS) за JPA (hibernate, eclipselink, ….) вместо RDBMS (Mysql, …) для повышения производительностипроблемы или нет?

Как вы знаете, JPA использует ORM и использует JQL (язык запросов Java)

С уважением

Комментарии:

1. См. Также: Несоответствие объектно-реляционного импеданса

Ответ №1:

Объектно-реляционные данные определяются как структурированные данные, которые являются определяемыми пользователем типами в базе данных.

ИЛИ типы данных включают:

  • Структуры — структурированные типы
  • Массивы — типы массивов

Эти типы определяются по-разному в каждой базе данных, в Oracle это типы объектов, типы VARRAY и ВЛОЖЕННЫЕ ТАБЛИЦЫ, а также типы ССЫЛОК.

JDBC стандартизирует доступ к типам данных OR с использованием интерфейсов Struct, Array и Ref.

С типами данных ИЛИ у вас могут быть более сложные схемы базы данных, такие как ТАБЛИЦА Employee_Type, которая имеет набор Phone_Types и ссылку на it manager.

JPA не имеет прямой поддержки сопоставления ИЛИ типов данных, но у некоторых поставщиков есть.

EclipseLink поддерживает отображение ИЛИ типы данных, включая структуры, ссылки и массивы. Для их сопоставления используются пользовательские сопоставления и аннотации, но API JPA во время выполнения остается тем же.

Обычно я бы не рекомендовал использовать типы данных OR, поскольку они менее стандартны, чем традиционные реляционные таблицы, и не дают большой пользы. Некоторые определенные базы данных ИЛИ типы данных, такие как пространственные типы данных, имеют преимущества, поскольку они имеют встроенную поддержку базы данных.

Смотрите, http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Structured_Object-Relational_Data_Types

Ответ №2:

Я бы сказал, нет. JPA ориентирован на RDBMS и не использует дополнительные возможности, предлагаемые ORDBMS.

Теперь PostgreSQL также является очень хорошей RDBMS (вы не вынуждены использовать ее объектно-ориентированные функции, и я предполагаю, что большинство ее пользователей этого не делают), и вы можете использовать его с JPA без проблем.

Ответ №3:

JPA — это переводчик между «мышлением в объектах» (Java) и «мышлением в отношениях» (SQL). Поэтому реализация JPA всегда будет обращаться к БД в терминах отношений. «Объектно-реляционный» материал здесь игнорируется.

Игнорирование JPA и прямое обращение к БД в режиме «ORDBMS» не даст вам преимуществ в производительности в наиболее распространенных случаях, потому что ORDBMS по-прежнему являются СУБД с некоторой логикой клея, чтобы выглядеть немного объектно-стильно. Данные хранятся в отношениях, все пути доступа совпадают с чисто реляционным путем доступа.

Если вы действительно хотите получить преимущества в производительности, переключив не только продукт базы данных, но и технологию базы данных (или философию), вам следует обратить внимание на базы данных реальных объектов или даже NoSQL.

Комментарии:

1. итак, вы говорите, что лучше использовать JPA вместо ORDBMS (postgre) вместо прямого подключения к ORDBMS?

2. Совсем наоборот: ЕСЛИ вы хотите реальных преимуществ RDBMS, вы не можете использовать JPA. Но простота использования JPA по сравнению с прямыми вызовами JDBC превосходит это более чем достаточно. И _O_RDBMS дополнительные преимущества по сравнению с чистыми преимуществами RDBMS в большинстве случаев настолько малы, что переключение не является проблемой.