Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Офис и два удаленных магазина / 17 сообщений из 17, страница 1 из 1
28.09.2011, 00:33
    #37458194
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
Есть одинаковые по структуре базы: База1 (офис), База2 (магазин 1), База3 (магазин 2).
В База3 и База2 забиваются приходы расходы, а в База1 Приходы-Расходы и Платежи по всем базам.
Тоесть создают Платеж на основании документов полученых из База2-3, и потом синхронизируются.

MySQL, INNODB

Необходимо организовать двухсторонний обмен между базами.
В голову ничего не лезет кроме как использование уникального идентификатора.

tbl_doc
`doc_id` INT AUTO_INCREMENT NOT NULL, -- локальный ключ
`doc_uuid` BINARY(16) -- глобальный ключ
`doc_type` INT NOT NULL COMMENT 'тип документа',
`doc_date` DATETIME NOT NULL,
`doc_number` INT
........
PRIMARY KEY (`doc_id`),
UNIQUE INDEX doc_uuid (doc_uuid)

tdl_docrow
`docr_id` INT AUTO_INCREMENT NOT NULL, -- локальный ключ
`docr_uuid` BINARY(16) -- ключ записи спецификации документа
`docr_docuuid` BINARY(16) -- ссылка-ключ на документ
`docr_produuid` BINARY(16) -- ссылка на товар
........
PRIMARY KEY (`docr_id`)

Локальный ключ используется для работы непосредственно в локальном приложении
Глобальный- для связи сущностей и при передаче из одной базы в другую.

Верном ли направлении двигаюсь?
Как можно еще обеспечить двухсторонний обмен?
...
Рейтинг: 0 / 0
28.09.2011, 00:52
    #37458201
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevЛокальный ключ используется для работы непосредственно в локальном приложении
Глобальный- для связи сущностей и при передаче из одной базы в другую.

А что мешает использовать в локальном приложении глобальный ключ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.09.2011, 01:41
    #37458222
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevНеобходимо организовать двухсторонний обмен между базами
почитайте про репликацию.
RulonOboevВ голову ничего не лезет кроме как использование уникального идентификатора.
Репликация это не только и не столько идентификаторы, но и протокол и правила разрешения конфликтов.

Проще всего (в первую очередь для людей ибо запрограммировать можно все что угодно), будет разделить зоны ответственности, то бишь организовать однонаправленную репликацию.
...
Рейтинг: 0 / 0
28.09.2011, 09:38
    #37458384
koJIo6ok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
как насчет VPN и одну базу пользовать? дешево и практично
...
Рейтинг: 0 / 0
28.09.2011, 11:35
    #37458657
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
Dimitry Sibiryakov :
1) текущее приложение в качестве идентификатора использует INT. И исходников приложения нет. Поэтому как выход из приложения передаем INT а уже sql через функции линкует его с BINARY(16).
2) вы предлагаете совсем отказаться от INT как идентификатора? Как это отразиться на производительности и индексами в базе?

koJIo6ok:
В магазинах нет интернета. Рассматриваем вариант 3G, но это тоже не выход.

SERG1257:
Про репликацию понятно, почитаю. Но все же, вышеприведенный вариант с UUID рабочий?
Базы должны содержать все изменения других баз.
Какие есть проверенный схемы (кроме репликации) для двустороннего обмена?
...
Рейтинг: 0 / 0
28.09.2011, 12:48
    #37458838
koJIo6ok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboev,
я и не говорил про интернет, если есть гор телефоны, и к линии нет вопросов, магазины\точки стационарные то vpn неплохой вариант
...
Рейтинг: 0 / 0
28.09.2011, 18:48
    #37459801
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
SERG1257: Репликация отпадает - не вижу как она поможет в нашем случает. Суть в том что все базы являются "мастером", просто на База2 и База3 есть ограничения по управлению некоторыми документами. И ессно Василий из магазина 2 не может просто так удалить документы Петрова с магазина 1.
...
Рейтинг: 0 / 0
28.09.2011, 19:55
    #37459867
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevСуть в том что все базы являются "мастером"
И что? Ты никогда не слышал о multimaster-репликации?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.09.2011, 21:02
    #37459908
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
Dimitry Sibiryakov: нет :)

Быстрым поиском нашел на Хабре http://habrahabr.ru/blogs/personal/87394/ о мултимастерах.

Итого:
Вариант 1: на UUID (описанный выше);
Вариант 2: Multi-Master репликация
- полностью отказаться от UUID
- в таблицах каждой базы определить auto_increment поля согласно схеме:
* Установим auto_increment_increment в N на каждом мастере.
* На каждом из N мастеров ставим разные значения auto_increment_offset, используя 1, 2,…, N.

Еще есть варианты?
...
Рейтинг: 0 / 0
28.09.2011, 21:45
    #37459961
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevЕще есть варианты?
Коллекцию собираешь? Третьим вариантом обычно идёт составной первичный ключ, включающий
номер филиала, породившей запись.

Но раз у тебя есть прога без исходников, работающая только с ключом из одного целого поля,
то вариант 2 - единственное твоё решение. Всё остальное не подойдёт.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.09.2011, 23:35
    #37460055
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevКакие есть проверенный схемы (кроме репликации) для двустороннего обмена? Двусторонний обмен это репликация и есть. Оно может быть (частично) реализовано на уровне СУБД или полностью вручную. Когда я говорил почитать про репликацию я имел ввиду просмотреть схемы репликации (репликация слиянием, логом) просмотреть возможные конфликты репликации (а они будут) и способы их разрешения.
Способ генерации неизменного ID это только первый этап. Следующий - определение хозяина данных, спроецировать это на таблицы и записи. Дальше определить бизнес операции соответствующие своим данным и определение административные запретов, дальше что делать, если несмотря на административный запрет, данные все же появились - к каким это может привести последствиям. Чем проще, ограниченней, тупее будет схема тем меньше неприятностей в процессе эксплуатации.
В любом случае это постоянный источник головной боли, во время сникернета я эту чашу до дна испил.
...
Рейтинг: 0 / 0
29.09.2011, 15:35
    #37461367
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
Dimitry Sibiryakov: SERG1257 : выбрать такой, чтобы в дальнейшем существенно не менять схему.

Под репликацией я подразумеваю "репликацию средствами СУБД", напрямую сервер-сервер.

Вариант 2 на автоинкерментах имеет один ньюанс: максимальное количество серверов - 10 (0-9). Это не критично, но все же надо иметь ввиду. Разбивка ИДов на интервалы для каждого сервера не приемлема. Локальный ID хоть и назван локальным, но в амках одной базы он уникальный (сквозной по таблицам).
С UUID (GUID) такого нет.
...
Рейтинг: 0 / 0
29.09.2011, 15:36
    #37461374
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
С UUID (GUID) такого нет - нет предела по количеству серверов.
...
Рейтинг: 0 / 0
29.09.2011, 16:50
    #37461558
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevРазбивка ИДов на интервалы для каждого сервера не приемлема.

По мотивам политическим или религиозным? Интервал signed 32 bits integer составляет свыше
двух миллиардов. Даже при разбиении на тысячу серверов, на каждый придётся по два миллиона
идентификаторов. Ваши пользователи столько набьют за время жизни софта?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.09.2011, 18:32
    #37461798
RulonOboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
по стратегическим. сама идея выделять диапазон интервалов неприемлема т.к. это полумера, которая дает временное решение.
...
Рейтинг: 0 / 0
29.09.2011, 18:36
    #37461802
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevПод репликацией я подразумеваю "репликацию средствами СУБД", напрямую сервер-сервер. http://ru.wikipedia.org/wiki/Репликация_(вычислительная_техника)
RulonOboevВариант 2 на автоинкерментах имеет один ньюанс: максимальное количество серверов - 10 (0-9)Почему? N не может быть больше 10? Некрасиво? Установите 100 или 1000. Уж больше тысячи магазинов у вас не будет.

Походу, у меня сложилось мнение, что вам надо вложится в хорошие каналы. Это точно будет надежнее, проще и возможно не настолько дорого.
...
Рейтинг: 0 / 0
29.09.2011, 18:54
    #37461832
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Офис и два удаленных магазина
RulonOboevсама идея выделять диапазон интервалов неприемлема т.к. это полумера, которая дает
временное решение.

А любое другое решение приведёт к ошибкам в работе приложения, исходников которого у вас
нет. Так что можете стратегировать сколько хотите, но выбора у вас нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Офис и два удаленных магазина / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]