Відмінності між версіями «Реплікація»

Матеріал з Wiki Script Solutions
Перейти до: навігація, пошук
(Функції Реплікатора на сервері)
 
(не показано 11 проміжних версій цього учасника)
Рядок 1: Рядок 1:
''' Реплікація ''' (англ. ''replication'') — механізм синхронізації вмісту центральної бази даних магазину і БД кас, який полягає в копіюванні даних із одного джерела на інше (або декілька інших) і навпаки.  
+
''' Реплікація ''' (англ. ''replication'') — механізм синхронізації вмісту центральної бази даних магазину і бази даних каси, який полягає в копіюванні даних із одного джерела на інше (або декілька інших) і навпаки.  
 
За даний процес відповідає Реплікатор, який являє собою додаток для freeBSD, написаний на GCC. Він складається з двох модулів, один з яких розміщається на сервері, а інший на касах.  
 
За даний процес відповідає Реплікатор, який являє собою додаток для freeBSD, написаний на GCC. Він складається з двох модулів, один з яких розміщається на сервері, а інший на касах.  
 
==Функції Реплікатора на сервері==
 
==Функції Реплікатора на сервері==
Модуль реплікатора, що міститься на сервері проводить синхронізацію даних між центральною базою і базами кас. Для цього Реплікатор звертається до таблиці T_REP_KASSES та зчитує дані полів:
+
Модуль реплікатора, що міститься на сервері, проводить синхронізацію даних між центральною базою і базою каси. Для цього Реплікатор звертається до таблиці 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_SCENARIO_STEPS, Реплікатор робить відповідну помітку в таблиці T_REP_LOGS про вдале завершення процесу, та до T_REP_ERRORS, якщо реплікація завершилась з помилками. Після цього Реплікатор підключається до наступної каси і повторює сценарій.  
+
Виконуючи кожен крок реплікації з 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хв.). По завершенню тайм-аута розпочинається нове коло синхронізації.
  
Провівши реплікацію з усіма касами, коло реплікації завершується. Після цього Реплікатор робить тайм-аут, тривалість якого задається в ... . По завершенню тайм-аута розпочинається нове коло синхронізації.
 
 
==Функції Реплікатора на касі==
 
==Функції Реплікатора на касі==
 +
Модуль реплікатора на касі виконує роль монітору і відображає процес реплікації.
 +
[[Файл: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;
    • провести резервне копіювання бази даних каси;
    • виконати відновлення бази з резервної копії.