![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| AlexKozlov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 16.12.2008 Репутация: 1 Всего: 1 |
Имеются несколько самописных серверов, у каждого есть своя локальная БД. Требуется передавать объекты между серверами и сохранять их в локальной БД сервера, в связи с чем и возникает задача обеспечить уникальность ID объекта не только в локальной БД сервера, но в системе в целом.
Смотрел в сторону UUID, но меня не устраивает размерчик. Хочется идентификатор умещающийся в Long. Возможно ли? В какую сторону рыть? Сначала додумался до отдельного сервера, который будет заниматься раздачей ID, но как-то это... слишком... душа не лежит к такому решению. Еще есть мысль сделать в каждой БД банальный счетчик, и генерировать ID по принципу счетчик*(макс.количество серверов) + номер сервера. Наверно это будет самым правильным? |
|||
|
||||
| carper |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 1 Всего: 8 |
Не верю! Собственно на этом можно бы и закончить, но иногда нужно не просто обеспечить слияние баз, но и знать откуда какая запись, тогда имеет право на существование и ваш способ, с использованием в ID номера базы и вариант составного ID - обычная последовательность + отдельное поле под ID базы. Но проблемы синхронизации записей обычно лежат не в области ID, а гораздо глубже, в области бизнес-правил, поэтому я бы все же думал об отдельном сервере приложений, отвечающем за взаимодействие ваших приложений, а не "за раздачу ID". |
|||
|
||||
| AlexKozlov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 16.12.2008 Репутация: 1 Всего: 1 |
А что ж так? Мне постоянно приходится кидать 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 |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Так сохраняйте UUID в строке. Или боитесь, что в базу все записи не поместятся? На самом деле или это 32 байта, или 4 - разница, в принципе, не такая уж и большая. Можно пренебречь.
Это сообщение отредактировал(а) Stolzen - 30.11.2011, 09:26 |
|||
|
||||
| AlexKozlov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 16.12.2008 Репутация: 1 Всего: 1 |
||||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
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. |
|||
|
||||
| carper |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 1 Всего: 8 |
Ну, и где вы это написали в первом сообщении? Во-вторых, вам уже сказали, что даже в этом случае UUID не проблема. В-третьих, вы бы все же пояснили, что вы пишете, если on-line "игрушку", то вообще какое-то странное решение с локальными базами. А то какой-то очередной сферический конь вышел на сцену - что-то с чем-то обменивается данными, причем насколько часто, для каких целей, через какие каналы, почему что-то надо писать в базы и т.п. В общем, я уже подсказал немного по любому варианту генерации ID, но, я лично, сперва недельку помедитировал над архитектурой системы. |
|||
|
||||
![]()
|
| Правила форума "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. |