Пул соединений с базой данных Java для нескольких баз данных (осколков)

Мне было интересно, как лучше всего реализовать пул соединений БД для веб-приложения, использующего осколки. Из того, что я могу сказать, большинство (все?) реализации с открытым исходным кодом поддерживают только одну базу данных. По крайней мере, я не нашел такой, который поддерживает осколки.

Кроме того, хотя я использую осколки, не вся база данных будет иметь ту же схему, что и другие базы данных. Я не уверен, что это важно упоминать.

Единственное решение, которое я пока могу придумать, — это написать слой, который находится поверх нескольких отдельных пулов. Каждый отдельный пул может быть любой из доступных реализаций одиночной базы данных.

Есть ли уже решения для этого? Какая техника была бы лучшей в противном случае?

Заранее спасибо,

Стивен.


person Steve    schedule 22.09.2009    source источник


Ответы (3)


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

Если вы обеспокоены тем, что не все базы данных имеют одинаковые схемы, вы можете поместить дополнительную конфигурацию отслеживания схемы в свой класс менеджера, чтобы он знал, какие осколки могут обслуживать схему. То есть вам нужно отслеживать схему для информации о шарде в дополнение к пулу БД. На самом деле это не так уж много дополнительной работы, так как вам все равно нужна конфигурация сегмента, чтобы определить, как вытащить правильный сегмент из пула (например, мод идентификатора пользователя 10 = 1 должен извлекать из сегмента 1)

Удачи

person Oscar Chan    schedule 22.09.2009
comment
Примерно так я себе это и представлял. Когда я упомянул, что не все базы данных будут иметь одинаковую схему, я имел в виду, что у меня будут и другие базы данных без сегментирования. Но я думаю, что основная концепция, изложенная выше, верна. Спасибо. - person Steve; 22.09.2009
comment
Должно быть, я пропустил Hibernate Shard. Если вы уже используете спящий режим для своей базы данных сегментов, это выглядит как хороший вариант. Учитывая, что это бета-версия, вы можете сначала подождать, пока она не пойдет в производство. - person Oscar Chan; 26.09.2009

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

Дополнительную информацию об этом можно найти здесь. Кроме того, ранее упомянутый подкаст можно найти здесь.

В подкасте объясняются некоторые проблемы с шардингом в целом, некоторые проблемы, о которых позаботился плагин Hibernate, а затем объясняется их предполагаемый путь развития. Надеюсь, это немного поможет!

person jnt30    schedule 22.09.2009
comment
Спасибо. Я хорошенько посмотрю на Hibernate Shards. На первый взгляд выглядит многообещающе. - person Steve; 22.09.2009

Вы можете взглянуть на проект hibernate shards.

person daveb    schedule 22.09.2009