Можно ли добавить дополнительные условия в SQL-запросы с помощью встроенных инструментов EclipseLink?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Можно ли добавить дополнительные условия в SQL-запросы с помощью встроенных инструментов EclipseLink?

Сообщение Anonymous »

В нашем проекте используется база данных PostgreSQL, управляемая через EclipseLink.
Горизонтальное масштабирование планируется путем перехода на сегментированный Postgres Pro Shardman.
В настоящее время первичным ключом каждой таблицы является поле уникального идентификатора. При переходе к распределенной системе возникает необходимость добавления дополнительного поля seg, обозначающего уникальный номер конкретного узла базы данных.
Например, есть 3 сервера:
  • Все записи в таблицах на первом сервере будут содержать только значение 0 в поле seg.
  • На втором сервере значение 1
  • На третьем значение 2 и так далее.
Это делается для того, чтобы запрос на чтение, например:

Код: Выделить всё

SELECT * FROM table WHERE id = 1000;
Можно было бы сразу указать сегмент, где хранится запись:

Код: Выделить всё

SELECT * FROM table WHERE seg = 0 AND id = 1000;
В этом случае серверу координатора запросов не придется обходить все узлы, чтобы найти значение, но он сразу поймет, что поиск следует выполнять на первом узле, где значение сегмента равно 0. Это исключает ненужное сетевое взаимодействие и сокращает время выполнения запроса.
Поскольку текущая база данных представляет собой простой PostgreSQL, все запросы в проекте, включающие предложения WHERE и JOIN, используют только поле id.
Добавление дополнительных предложений вручную с помощью поля seg — очень трудоемкая задача и подвержено множеству неожиданных ошибок.
Вместо этого решение заключалось в хранении значения поля seg непосредственно в первых 8 битах поля id.
Предположим, начальные значения полей:

Код: Выделить всё

seg = 3
id = 1000
Поле id преобразуется следующим образом:

Код: Выделить всё

id = id 

Подробнее здесь: [url]https://stackoverflow.com/questions/79877127/is-it-possible-to-add-additional-conditions-to-sql-queries-using-eclipselinks-b[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»