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

Bloomfield

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

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

cnupum

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

Bloomfield

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

Test

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

GenCloud

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

Gaikotsu

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

    Psycho

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

Bloomfield

Свой человек
Местный
Сообщения
494
Розыгрыши
0
Репутация
1 332
Реакции
178
Баллы
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
Репутация
43
Реакции
10
Баллы
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

Свой человек
Местный
Сообщения
494
Розыгрыши
0
Репутация
1 332
Реакции
178
Баллы
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

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

Gaikotsu

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

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