Объединение двух серверов

Bloomfield

Свой человек
Местный
Сообщения
489
Розыгрыши
0
Реакции
174
Репутация
1 332
Баллы
559
Интересует такой вопрос как объединение двух баз данных в одну, с сохранением предметом, хотелось бы услышать как это происходит на практике, как бороться с дубликатами в базе, и прочие моменты которые могут возникнуть во время объединения

Сборка ява, бд mysql
 

cnupum

Знающий
Местный
Сообщения
667
Розыгрыши
0
Реакции
180
Репутация
194
Баллы
482
добавляется префикс и всё
 

Bloomfield

Свой человек
Местный
Сообщения
489
Розыгрыши
0
Реакции
174
Репутация
1 332
Баллы
559
добавляется префикс и всё
префикс к никам? меня интересует замена Obj_id, может можно просто вычесть определенную сумму и накатать на существующую базу?
и еще вопрос, есть ли ограничение на obj_id у чаров\шмоток
 

Test

Знающий
Проверенный
Сообщения
223
Розыгрыши
0
Реакции
219
Репутация
993
Баллы
419
Нужно пилить мержер. Получать все objid и если есть повтор выдавать новый и заменять во всех зависимых таблицах. Да лимит на objid есть посмотреть его можно в IdFactory как правило он равен 2147483647.
 

GenCloud

Последний из атеистов
Open Source
Contributor
Сообщения
431
Розыгрыши
0
Реакции
516
Репутация
2 128
Баллы
837
префикс к никам? меня интересует замена Obj_id, может можно просто вычесть определенную сумму и накатать на существующую базу?
и еще вопрос, есть ли ограничение на obj_id у чаров\шмоток
Зависит от сорцов - а так по стандарту Integer.MAX_VALUE
 

Gaikotsu

яжпрограммист
Легенда
Сообщения
755
Розыгрыши
0
Реакции
1 459
Репутация
4 393
Баллы
1 058
Сам уже не раз делал слияние данных двух серверов - не так уж это и сложно.
Пишется скрипт на объединение и все. Скрипт при переносе генерит новые objId, именам добавляет префикс если надо и т.д.
Чисто для примера - один из старых вариантов скрипта на перенос конкретно персов и всех их данных в овероподобной сборке.
Для просмотра скрытого содержимого необходимо Войти или Зарегистрироваться.
 
Последнее редактирование модератором:

    cnupum

    Баллы: 21
    За эпический ответ

    Psycho

    Баллы: 38
    Гайка тащит как всегда!

Bloomfield

Свой человек
Местный
Сообщения
489
Розыгрыши
0
Реакции
174
Репутация
1 332
Баллы
559
Нужно пилить мержер. Получать все objid и если есть повтор выдавать новый и заменять во всех зависимых таблицах. Да лимит на objid есть посмотреть его можно в IdFactory как правило он равен 2147483647.
а что нибудь подобное есть в шаре уже?

не обновил сначала, выше нашел, спасибо

Код:
    public static final int FIRST_OID = 0x10000000;
    public static final int LAST_OID = 0x7FFFFFFF;
поставил FIRST_OID = 0x10000000;
все равно он не генерит с 1, хотя если вручную в базе оставляешь id = 1, то все нормально, чар играет

и можно к скрипту еще config.php?
 

Kirito

Пляшущий с бубном
Участник
Сообщения
25
Розыгрыши
0
Реакции
10
Репутация
43
Баллы
207
а что нибудь подобное есть в шаре уже?

не обновил сначала, выше нашел, спасибо


поставил FIRST_OID = 0x10000000;
все равно он не генерит с 1, хотя если вручную в базе оставляешь id = 1, то все нормально, чар играет

и можно к скрипту еще config.php?
Если в нормальных понятных для вас числах то:
public static final int FIRST_OID = 0x10000000; == 268435456 //первый id
public static final int LAST_OID = 0x7FFFFFFF; == 2147483647 //последний id
 

Bloomfield

Свой человек
Местный
Сообщения
489
Розыгрыши
0
Реакции
174
Репутация
1 332
Баллы
559
Если в нормальных понятных для вас числах то:
public static final int FIRST_OID = 0x10000000; == 268435456 //первый id
public static final int LAST_OID = 0x7FFFFFFF; == 2147483647 //последний id
я ставлю FIRST_OID = 0x00000001; и все равно отсчет не начинается именно с него, переводить с 16 в 10 я и без вас умею)
 

Gaikotsu

яжпрограммист
Легенда
Сообщения
755
Розыгрыши
0
Реакции
1 459
Репутация
4 393
Баллы
1 058
и можно к скрипту еще config.php?
тебе это не особо поможет, т.к. там еще куча всего юзается
скрипт чисто как пример взять можно того, в каком направлении писать
Для просмотра скрытого содержимого необходимо Войти или Зарегистрироваться.
 
Последнее редактирование модератором:

Gaikotsu

яжпрограммист
Легенда
Сообщения
755
Розыгрыши
0
Реакции
1 459
Репутация
4 393
Баллы
1 058
я ставлю FIRST_OID = 0x00000001; и все равно отсчет не начинается именно с него, переводить с 16 в 10 я и без вас умею)
зачем тебе с 1 начинать?
извлекаешь из нужных таблиц максимальный существующий UID и отсчет для перенесенного ведешь уже от этого значения.

смотри код выше, функцию getLastUid.
 
Сверху Снизу