Відмінності між версіями «Реплікація»
Bohdan (обговорення • внесок) (→Функції Реплікатора на сервері) |
Bohdan (обговорення • внесок) (→Функції Реплікатора на сервері) |
||
(не показано 6 проміжних версій цього учасника) | |||
Рядок 1: | Рядок 1: | ||
− | ''' Реплікація ''' (англ. ''replication'') — механізм синхронізації вмісту центральної бази даних магазину і | + | ''' Реплікація ''' (англ. ''replication'') — механізм синхронізації вмісту центральної бази даних магазину і бази даних каси, який полягає в копіюванні даних із одного джерела на інше (або декілька інших) і навпаки. |
За даний процес відповідає Реплікатор, який являє собою додаток для freeBSD, написаний на GCC. Він складається з двох модулів, один з яких розміщається на сервері, а інший на касах. | За даний процес відповідає Реплікатор, який являє собою додаток для freeBSD, написаний на GCC. Він складається з двох модулів, один з яких розміщається на сервері, а інший на касах. | ||
==Функції Реплікатора на сервері== | ==Функції Реплікатора на сервері== | ||
− | Модуль реплікатора, що міститься на сервері проводить синхронізацію даних між центральною базою і | + | Модуль реплікатора, що міститься на сервері, проводить синхронізацію даних між центральною базою і базою каси. Для цього Реплікатор звертається до таблиці T_REP_KASSES та зчитує дані полів: |
* CONNECTION_STRINGS - рядок підключення до бази; | * CONNECTION_STRINGS - рядок підключення до бази; | ||
* USER_NAME - логін користувача під яким проводиться синхронізація; | * USER_NAME - логін користувача під яким проводиться синхронізація; | ||
* USER_PASWORD - пароль; | * USER_PASWORD - пароль; | ||
− | * IS_ACTIVE - вказує | + | * IS_ACTIVE - вказує чи готова каса до синхронізації; |
* STOP_RUNNING - чи проводилась ручна зупинка реплікації каси. | * STOP_RUNNING - чи проводилась ручна зупинка реплікації каси. | ||
− | Отримавши необхідну інформацію | + | Отримавши необхідну інформацію, Реплікатор розпочинає коло синхронізації, зв'язуючись по черзі з кожною з кас магазину та проводить обмін даних. Інструкцію про те, між якими таблицями та в якій послідовності здійснювати обмін даними, Реплікатор бере з таблиці T_REP_SCENARIO_STEPS. |
Кроки сценарію реплікації передбачають синхронізацію даних про: | Кроки сценарію реплікації передбачають синхронізацію даних про: | ||
− | * документи; | + | * [[Каса #СПИСОК ДОКУМЕНТІВ|документи]]; |
* користувачів та їх права; | * користувачів та їх права; | ||
− | * товари та їх властивості; | + | * [[Склад #Довідник «Товари». Функціональні можливості|товари та їх властивості]]; |
− | * клієнтів; | + | * [[Склад #Довідник «Клієнти». Функціональні можливості|клієнтів]]; |
− | * дисконтні картки; | + | * [[Склад #Довідник "Бонусні картки". Функціональні можливості|дисконтні картки]]; |
* акції та ін.. | * акції та ін.. | ||
− | + | Виконуючи кожен крок реплікації з T_REP_SCENARIO_STEPS, Реплікатор робить відповідну помітку в таблиці T_REP_LOGS про початок та завершення кроку: | |
* START_TS — початок виконання кроку; | * START_TS — початок виконання кроку; | ||
* FINISH_TS — кінець виконання кроку; | * FINISH_TS — кінець виконання кроку; | ||
Рядок 24: | Рядок 24: | ||
* SCENARIO_ID — Номер сценарію; | * SCENARIO_ID — Номер сценарію; | ||
* STEP_ID — Номер кроку сценарію; | * STEP_ID — Номер кроку сценарію; | ||
− | * STATUS — статус виконання, де 0 - розпочато, | + | * STATUS — статус виконання, де 0 - розпочато, 1 - завершено з помилкою; |
* ERROR_COUNT — кількість помилок даного об'єкта. | * ERROR_COUNT — кількість помилок даного об'єкта. | ||
Інформація про помилки записується в таблиці T_REP_ERRORS: | Інформація про помилки записується в таблиці T_REP_ERRORS: | ||
Рядок 38: | Рядок 38: | ||
* ERROR_LINE — текст помилки; | * ERROR_LINE — текст помилки; | ||
* STATUS — статус помилки, де 0 - виправлена, 1 - нова, n - кількість. | * STATUS — статус помилки, де 0 - виправлена, 1 - нова, n - кількість. | ||
− | + | Така послідовність дій виконується для кожної каси по черзі. | |
− | Провівши реплікацію з усіма касами, коло синхронізації завершується. Після цього Реплікатор робить тайм-аут, тривалість якого задається в налаштуваннях. По завершенню тайм-аута розпочинається нове коло синхронізації. | + | Провівши реплікацію з усіма касами, коло синхронізації завершується. Після цього Реплікатор робить тайм-аут, тривалість якого задається в налаштуваннях (по замовчуванню 3хв.). По завершенню тайм-аута розпочинається нове коло синхронізації. |
==Функції Реплікатора на касі== | ==Функції Реплікатора на касі== | ||
+ | Модуль реплікатора на касі виконує роль монітору і відображає процес реплікації. | ||
+ | [[Файл:Img001.png|thumb|центр|frame|<span style="margin-left:25%">Реплікатор даних на касі</span>]] | ||
+ | <br clear="all"/> | ||
+ | При цьому виконує наступні функції: | ||
+ | * синхронізує час та дату з сервером; | ||
+ | * перевіряє наявність каси в таблиці T_REP_KASSES і у разі її відсутності прописує її; | ||
+ | * проводить звірку чеків за останні 2 дні. Якщо наявні задубльовані чеки, то видаляє їх з бази сервера і надсилає дані про документи повторно. | ||
+ | * Дозволяє зупинити за запустити логування; | ||
+ | * ативувати та деактивувати касу - прописує 1 або 0 в в полі IS_ACTIVE таблиці T_REP_KASSES. | ||
+ | * виконати сервісні функції: | ||
+ | ** активувати та деактивувати всіх користувачів, які прописані в таблиці T_USERS; | ||
+ | ** провести резервне копіювання бази даних каси; | ||
+ | ** виконати відновлення бази з резервної копії. |
Поточна версія на 15:39, 3 червня 2015
Реплікація (англ. replication) — механізм синхронізації вмісту центральної бази даних магазину і бази даних каси, який полягає в копіюванні даних із одного джерела на інше (або декілька інших) і навпаки. За даний процес відповідає Реплікатор, який являє собою додаток для freeBSD, написаний на GCC. Він складається з двох модулів, один з яких розміщається на сервері, а інший на касах.
Функції Реплікатора на сервері
Модуль реплікатора, що міститься на сервері, проводить синхронізацію даних між центральною базою і базою каси. Для цього Реплікатор звертається до таблиці T_REP_KASSES та зчитує дані полів:
- CONNECTION_STRINGS - рядок підключення до бази;
- USER_NAME - логін користувача під яким проводиться синхронізація;
- USER_PASWORD - пароль;
- IS_ACTIVE - вказує чи готова каса до синхронізації;
- STOP_RUNNING - чи проводилась ручна зупинка реплікації каси.
Отримавши необхідну інформацію, Реплікатор розпочинає коло синхронізації, зв'язуючись по черзі з кожною з кас магазину та проводить обмін даних. Інструкцію про те, між якими таблицями та в якій послідовності здійснювати обмін даними, Реплікатор бере з таблиці T_REP_SCENARIO_STEPS.
Кроки сценарію реплікації передбачають синхронізацію даних про:
- документи;
- користувачів та їх права;
- товари та їх властивості;
- клієнтів;
- дисконтні картки;
- акції та ін..
Виконуючи кожен крок реплікації з T_REP_SCENARIO_STEPS, Реплікатор робить відповідну помітку в таблиці T_REP_LOGS про початок та завершення кроку:
- START_TS — початок виконання кроку;
- FINISH_TS — кінець виконання кроку;
- REP_KASA_ID — ідентифікатор каси;
- SCENARIO_ID — Номер сценарію;
- STEP_ID — Номер кроку сценарію;
- STATUS — статус виконання, де 0 - розпочато, 1 - завершено з помилкою;
- ERROR_COUNT — кількість помилок даного об'єкта.
Інформація про помилки записується в таблиці T_REP_ERRORS:
- TS_CREATED — час створення помилки;
- TS — Час останньої зміни помилки;
- CONNECTION_STRINGS — Шлях до бази на якій відбулася помилка;
- USER_NAME — логін користувача, під яким відбуваються зміни;
- SCENARIO_ID — номер сценарію;
- STEP_ID — номер кроку;
- REP_KASSA_ID — номер каси;
- LAST_QUERY — останій запит;
- RUN_PLACE — опис місця виникнення помилки;
- ERROR_LINE — текст помилки;
- STATUS — статус помилки, де 0 - виправлена, 1 - нова, n - кількість.
Така послідовність дій виконується для кожної каси по черзі.
Провівши реплікацію з усіма касами, коло синхронізації завершується. Після цього Реплікатор робить тайм-аут, тривалість якого задається в налаштуваннях (по замовчуванню 3хв.). По завершенню тайм-аута розпочинається нове коло синхронізації.
Функції Реплікатора на касі
Модуль реплікатора на касі виконує роль монітору і відображає процес реплікації.
При цьому виконує наступні функції:
- синхронізує час та дату з сервером;
- перевіряє наявність каси в таблиці T_REP_KASSES і у разі її відсутності прописує її;
- проводить звірку чеків за останні 2 дні. Якщо наявні задубльовані чеки, то видаляє їх з бази сервера і надсилає дані про документи повторно.
- Дозволяє зупинити за запустити логування;
- ативувати та деактивувати касу - прописує 1 або 0 в в полі IS_ACTIVE таблиці T_REP_KASSES.
- виконати сервісні функції:
- активувати та деактивувати всіх користувачів, які прописані в таблиці T_USERS;
- провести резервне копіювання бази даних каси;
- виконати відновлення бази з резервної копії.