28.08.2012, 14:43 | #1 |
Участник
|
Доброго времени суток!
Подскажите кто знает где можно посмотреть документацию по тому как устроен Data Director. Меня интересует какие таблицы использует. Есть задача выполнить репликацию вручную через SQL, но я никак не могу найти таблицы хранилища и как оно устроено. Т.е. я понимаю, что надо куда-то записать идентификатор записи, что бы потом служба ее грамотно поняла и отправила, но вот куда и в каком формате - вопрос. |
|
28.08.2012, 16:40 | #2 |
Участник
|
Цитата:
выполнить репликацию вручную через SQL
Если второе, то хранилища, насколько я помню, нет. Взаимодействие с DD (в том числе и передача идентификаторов записей для репликации) осуществляется через COM компонент. |
|
28.08.2012, 17:21 | #3 |
Участник
|
Цитата:
Сообщение от Alterant
Цитата:
выполнить репликацию вручную через SQL
Если второе, то хранилища, насколько я помню, нет. Взаимодействие с DD (в том числе и передача идентификаторов записей для репликации) осуществляется через COM компонент. Я создаю запись (чего-то там не важно) посредством SQL-скрипта. Создание прошло - все отлично, а как теперь дернуть запись, что бы она положилась в репликацию. Классические репликаторы как правило делаю следующее: есть журнал. В него записываются идентификаторы и сущности. А служба по этим данным сама вытягивает строку и передает ее. У DD есть что-то похожее? |
|
29.08.2012, 01:06 | #4 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
Смотрите, примерно следующий процесс. Часть функционала НАВ надо перенести в SQL.
Я создаю запись (чего-то там не важно) посредством SQL-скрипта. Создание прошло - все отлично, а как теперь дернуть запись, что бы она положилась в репликацию. Классические репликаторы как правило делаю следующее: есть журнал. В него записываются идентификаторы и сущности. А служба по этим данным сама вытягивает строку и передает ее. У DD есть что-то похожее? |
|
29.08.2012, 10:05 | #5 |
Участник
|
Мне нужно уйти от нав и перенести некоторую функциональность в SQL. Есть центральная база и есть несколько магазинов. Мне надо средствами SQL положить запись в таблицы и средствами SQL положить запись в репликацию. Примерно так.
|
|
29.08.2012, 10:22 | #6 |
Участник
|
DataDirector тогда тут вообще ни причем, у SQL свои инструменты переноса данных. Вы не в той теме пишите, а вам отвечают с учетом специфики данной темы.
|
|
29.08.2012, 10:34 | #7 |
Участник
|
Я в курсе, но этот вариант пока не рассматривается. Т.е. на системе уже стоит DD и он настроен и работает. Задача стоит что бы новые разработки пустить вы обход НАВ
|
|
29.08.2012, 12:00 | #8 |
Участник
|
Нашел немного инфы. Может кто подтвердит или опровергнет.
Если таблица «Предв.Действие». Она вроде как выступает хранилищем данных для отправки. Кто что может сказать по этому поводу? |
|
29.08.2012, 12:23 | #9 |
Участник
|
Цитата:
Если по действиям, то Вам уже написали про таблицы "Предв.Действие" и Действие. Если же по счетчику, то не нужно никуда вставлять записи, а нужно ставить значение счетчика в создаваемой/модифицируемой записи. |
|
29.08.2012, 12:34 | #10 |
Участник
|
Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо |
|
29.08.2012, 14:00 | #11 |
Участник
|
Думаю (я бы даже сказал, уверен ), что удаленные базы - нативные, и средствами SQL туда перенести данные не получится.
|
|
29.08.2012, 14:00 | #12 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые пишут в таблицу предварительных действий что мы сделали (вставка,изменение,удаление), с какой записью (первичный ключ), когда и кто сделал. 3. Данные переносятся в таблицу Действий отдельным заданием в планировщике (постоянно крутится соответствующее задание и запускается с неким как правило небольшим интервалом) 4. Далее другое задание (уже непосредственно репликации) читает данные из этой таблицы, выбирает записи и отправляет получателю. Что туда писать проще посмотреть на уже имеющиеся у Вас данные в этой таблице. Не вижу смысла перечислять все поля. Тем более они могут быть несколько кастомизированы. Основные это номер операции, номер таблицы, тип действия, ключ, дата. Если ключ составной, то его составные части перечисляются через ; Как работает репликация по счетчикам: 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые обновляют специальное поле в этой же модифицируемой таблице. Тут возможны нюансы. Может туда ставится "имеющееся в этой таблице максимальное значение" +1, а может 0. Это тоже зависит есть ли кастомизация. 3. Далее задание репликации читает данные из этой таблицы, отправляет получателю и запоминает максимальное значение счетчика, чтобы в следующий раз читать только записи с большим значением счетчика. В этом случае все просто для обработки SQL. Правильный update счетчика и готово. Опять же из самих технологий понятно, что репликация по действиям может удалять записи у получателя, а по счетчикам - нет. Очень бы рекомендовал прежде чем писать при помощи SQL записи в предействия посмотреть на код заполнения этой таблицы в Нав. Т.е. берете процедуру CreateAction искомой таблицы и по цепочке смотрите где что и как. P.S. Еще дополню, что при репликации по действиям также запоминается последний отправленный номер счетчика. Боюсь ошибиться, но по-моему идентификатором счетчика служит номер записи из таблицы Action. Т.е. если сегодня была отреплицирована запись с номером 10, а завтра вы вставите запись с номером 1, то она не уйдет без сброса счетчика. |
|
29.08.2012, 14:07 | #13 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. |
|
29.08.2012, 14:26 | #14 |
Участник
|
Цитата:
Сообщение от advisor
Цитата:
Сообщение от litvinenko_anton
Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые пишут в таблицу предварительных действий что мы сделали (вставка,изменение,удаление), с какой записью (первичный ключ), когда и кто сделал. 3. Данные переносятся в таблицу Действий отдельным заданием в планировщике (постоянно крутится соответствующее задание и запускается с неким как правило небольшим интервалом) 4. Далее другое задание (уже непосредственно репликации) читает данные из этой таблицы, выбирает записи и отправляет получателю. Что туда писать проще посмотреть на уже имеющиеся у Вас данные в этой таблице. Не вижу смысла перечислять все поля. Тем более они могут быть несколько кастомизированы. Основные это номер операции, номер таблицы, тип действия, ключ, дата. Если ключ составной, то его составные части перечисляются через ; Как работает репликация по счетчикам: 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые обновляют специальное поле в этой же модифицируемой таблице. Тут возможны нюансы. Может туда ставится "имеющееся в этой таблице максимальное значение" +1, а может 0. Это тоже зависит есть ли кастомизация. 3. Далее задание репликации читает данные из этой таблицы, отправляет получателю и запоминает максимальное значение счетчика, чтобы в следующий раз читать только записи с большим значением счетчика. В этом случае все просто для обработки SQL. Правильный update счетчика и готово. Опять же из самих технологий понятно, что репликация по действиям может удалять записи у получателя, а по счетчикам - нет. Очень бы рекомендовал прежде чем писать при помощи SQL записи в предействия посмотреть на код заполнения этой таблицы в Нав. Т.е. берете процедуру CreateAction искомой таблицы и по цепочке смотрите где что и как. P.S. Еще дополню, что при репликации по действиям также запоминается последний отправленный номер счетчика. Боюсь ошибиться, но по-моему идентификатором счетчика служит номер записи из таблицы Action. Т.е. если сегодня была отреплицирована запись с номером 10, а завтра вы вставите запись с номером 1, то она не уйдет без сброса счетчика. |
|
29.08.2012, 14:27 | #15 |
Участник
|
Цитата:
Сообщение от Alterant
Цитата:
Сообщение от litvinenko_anton
Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. |
|
29.08.2012, 14:42 | #16 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
Цитата:
Сообщение от Alterant
Я бы рекомендовал вам сначала разобраться чего вы хотите.
Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. Если вы хотите и этот шаг делать делать вне NAV, то смысла разбираться с таблицей "Пред.Действие"- нет. Изучайте COM интерфейс DD. Если хотите эмулировать работу NAV по созданию действий (записей в "Пред.Действие"), а репликацию все же оставить на NAV, то это другое дело. |
|
29.08.2012, 14:47 | #17 |
Участник
|
Цитата:
Сообщение от Alterant
Цитата:
Сообщение от litvinenko_anton
Цитата:
Сообщение от Alterant
Я бы рекомендовал вам сначала разобраться чего вы хотите.
Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. Если вы хотите и этот шаг делать делать вне NAV, то смысла разбираться с таблицей "Пред.Действие"- нет. Изучайте COM интерфейс DD. Если хотите эмулировать работу NAV по созданию действий (записей в "Пред.Действие"), а репликацию все же оставить на NAV, то это другое дело. |
|