![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Grelloo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 18.3.2006 Где: г. Екатеринбург Репутация: нет Всего: нет |
Если функция генерирующая uuid в java?
|
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
||||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Начиная с JDK 1.5, есть java.util.UUID. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Могу еще предложить такой классец:
|
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
-------------------- |
|||
|
||||
| pvo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
commons-id еще есть
|
|||
|
||||
| Grelloo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 18.3.2006 Где: г. Екатеринбург Репутация: нет Всего: нет |
Ок, UUID замутить не так уж и сложно оказалось. Теперь у меня вот какая мысль появилась. Что если я сделаю java-приложение и буду записывать данные через сеть на несколько компьютеров и в несколько баз данных. Представим, что можно подключить к этому делу Hibernate, который будет создавать сам UUID. Но что если мы затем захотим кроме hibernate еще какой-нибудь инструмент подключить, который тоже будет генерить свои UUID.
Я думаю вот как можно это решить: 1. Сделать супер-класс, в котором будет метод, генерирующий UUID 2. Все классы расширяющие данный супер-класс будут использовать этот метод Обеспечу ли я таким образом уникальность UUID для всех баз данных? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Ну дык это зависит от того гарантирует ли тебе алгоритм создания UUID эту самую уникальность и больше ни от чего. К чему вообще такие сложности? Вызывай генератор из Hibernate, будешь получать точно такие идентификаторы, какие он сам назначает.
|
|||
|
||||
| Grelloo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 18.3.2006 Где: г. Екатеринбург Репутация: нет Всего: нет |
Хорошо, но UUID не самый идеальный вариант для генерирования ID. Рассмотрим другой вариант. Пусть мы будем иметь для каждой базы данных определенный интервал id:
база 1 - от 1 до 1000 база 2 - 1000 до 2000 и т. д. Будем тогда просто генерить id в данном интервале от начального значения, используя автоинкремент. Если будет добавляться новая база данных, то для нее будет выделен новый интервал Как это лучше реализовать функциями java? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
А чем UUID не устраивает? Пишем класс, который хранит регистр серверов (или баз данных или еще чего-то), соответствующие интервалы идентификаторов и значения последних выданных идентификаторов. Поскольку объект такого класса у нас должен быть один на весь пул серверов, то размещаем его в JNDI под определенным именем, по которому все серверы и будут получать объект (как вариант написать удаленный используя RMI, веб-сервисы или что-то еще). Но это решение действительно не самое оптимальное по следующим причинам:
Это я описал только часть проблем, которые нужно решить. Так чем такое решение лучше чем UUID, где алгоритм не связан с БД и генерирует вполне уникальные идентификаторы? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Если количество баз данных фиксировано, то можно использовать генерацию не последовательную, а с определенным шагом. Тогда не надо будет постоянно запрашивать новые и новые диапазоны. А вообще, в данной ситуации лучше всего UUID. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |