Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация уникальных ID 
:(
    Опции темы
AlexKozlov
Дата 30.11.2011, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.12.2008

Репутация: 1
Всего: 1



Имеются несколько самописных серверов, у каждого есть своя локальная БД. Требуется передавать объекты между серверами и сохранять их в локальной БД сервера, в связи с чем и возникает задача обеспечить уникальность ID объекта не только в локальной БД сервера, но в системе в целом.

Смотрел в сторону UUID, но меня не устраивает размерчик. Хочется идентификатор умещающийся в Long.

Возможно ли? В какую сторону рыть? Сначала додумался до отдельного сервера, который будет заниматься раздачей ID, но как-то это... слишком... душа не лежит к такому решению. 

Еще есть мысль сделать в каждой БД банальный счетчик, и генерировать ID по принципу счетчик*(макс.количество серверов) + номер сервера. Наверно это будет самым правильным?
PM MAIL   Вверх
carper
Дата 30.11.2011, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 1
Всего: 8



Цитата(AlexKozlov @  30.11.2011,  08:03 Найти цитируемый пост)
Смотрел в сторону UUID, но меня не устраивает размерчик. 


Не верю! smile
Собственно на этом можно бы и закончить, но иногда нужно не просто обеспечить слияние баз, но
и знать откуда какая запись, тогда имеет право на существование и ваш способ, с использованием в
ID номера базы и вариант составного ID - обычная последовательность + отдельное поле под ID базы.

Но проблемы синхронизации записей обычно лежат не в области ID, а гораздо глубже, в
области бизнес-правил, поэтому я бы все же думал об отдельном сервере приложений, отвечающем
за взаимодействие ваших приложений, а не "за раздачу ID".

PM MAIL   Вверх
AlexKozlov
Дата 30.11.2011, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.12.2008

Репутация: 1
Всего: 1



Цитата(carper @  30.11.2011,  08:27 Найти цитируемый пост)
Не верю! 


А что ж так? Мне постоянно приходится кидать ID объектов между сервером и клиентами, При этом нет желания вводить лишние сущности и преобразования и ID как хранятся в БД так и сериализуются. UUID в БД хранится в виде UTF-16 строки. Вот посмотрел что там хранится: "341aceff-450d-4163-94a8-73b01882cd9c"

36 символов сразу умножаем на 2 = 72 байта.  в результате банальное сообщение типа игрок Х прицелился в игрока Y занимает 4(код события)+(4(длина строки)+72(сама строка))*2  = 156 байт (!) при том что на это за глаза хватит 4+4+4 = 12


Это сообщение отредактировал(а) AlexKozlov - 30.11.2011, 09:26
PM MAIL   Вверх
Stolzen
Дата 30.11.2011, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Так сохраняйте UUID в строке. Или боитесь, что в базу все записи не поместятся? На самом деле или это 32 байта, или 4 - разница, в принципе, не такая уж и большая. Можно пренебречь. 

Это сообщение отредактировал(а) Stolzen - 30.11.2011, 09:26


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
AlexKozlov
Дата 30.11.2011, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.12.2008

Репутация: 1
Всего: 1



Цитата(Stolzen @  30.11.2011,  09:23 Найти цитируемый пост)
Так сохраняйте UUID в строке. Или боитесь, что в базу все записи не поместятся? 

Меня абсолютно не волнует вопрос размеров БД. А вот объем сетевого траффика между сервером и клиентами очень даже.
PM MAIL   Вверх
LSD
Дата 30.11.2011, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(AlexKozlov @  30.11.2011,  10:29 Найти цитируемый пост)
Меня абсолютно не волнует вопрос размеров БД. А вот объем сетевого траффика между сервером и клиентами очень даже. 

8 байт не могут сильно повлиять на трафик.


--------------------
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.
PM MAIL WWW   Вверх
carper
Дата 30.11.2011, 12:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 1
Всего: 8



Цитата(AlexKozlov @  30.11.2011,  09:29 Найти цитируемый пост)
Меня абсолютно не волнует вопрос размеров БД. А вот объем сетевого траффика между сервером и клиентами очень даже. 


Ну, и где вы это написали в первом сообщении? smile

Во-вторых, вам уже сказали, что даже в этом случае UUID не проблема.

В-третьих, вы бы все же пояснили, что вы пишете, если on-line "игрушку", то вообще какое-то
странное решение с локальными базами. 
А то какой-то очередной сферический конь вышел на сцену - что-то с чем-то обменивается данными,
причем насколько часто, для каких целей, через какие каналы, почему что-то надо писать в базы и т.п.

В общем, я уже подсказал немного по любому варианту генерации ID, но, я лично, 
сперва недельку помедитировал над архитектурой системы.



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.