Обслуговування великої БД Firebird

Обговорення питань, пов'язаних з функціонуванням програми
Відповісти
Charg
Повідомлень: 59
З нами з: 23 березня 2015, 18:11

Обслуговування великої БД Firebird

Повідомлення Charg » 23 лютого 2024, 19:08

Є медок у мережевому режимі, у якому БД (багато установ, багато бухгалтерів) важить 74.4 Gb. Вона впринципі працює, але бухгалтери скаржаться що повільно. Чи то пов'язано з розміром чи ні я не певен, але база всеж велика тому розглядаю і це як варіант, тож в мене виникло декілька питань стосовно обслуговування цієї бази:


Загальні питання.
  1. Взагалі розмір впливає на продуктивність firebird як такої і зокрема медка як її "клієнта"?
  2. Чи є якісь інструменти як можно дізнатись що саме займає більш усього місця? Може на рівні установ (якийсь топ 3 чи топ 10 самих "товстих" установ), може на рівні таблиць.
  3. Може є ще щось що я можу зробити саме у медку? Наразі налаштування такі:
    скріншот | Показать
    Зображення
Архівування документів.
Нагуглив що це архівування може як пришвидшити роботу з базою так і зменшити її розмір. Як це працює у великих масштабах, технічною мовою? Я спробував на копії віртуалки з медком зайти в Адміністрування - Архівування документів, там обрав папку та період - у папці з'явились *.FDB файли. Потім на випадково обраних документах для тесту натиснув пкм - "відправити в архів" - судячи з розміру файлів в один з них вивантажились ці документи.
Але у назві цих файлів є ЄДРПОУ установи, тобто це архівування робиться по кожній установі (судячи з назв файлів), але ж треба це масштабувати на сотню бухгалтерів і установ виникає декілька питань:
  1. Взагалі розмір бази зменшується чи ні? Я розумію що автоматично - навряд, але може після перенесення значного об'єма документів у архів можна буде зробити бєкап-рестор бази засобами firebird (gbak.exe -b zvit.fdb zvitbackup.fbk && gbak.exe -c zvitbackup.fbk zvit.fdb) і тим самим база зменшиться?
  2. Як автоматизувати відправку всіх старих документів у архів? Наприклад "усе що старіше ніж рік" чи якийсь інший критерій. Просто на словах сказати бухгалтерам "вивантажуйте вручну у архів" звичайно можно, але ж ніхто це робити не буде, тому що нашо їм це.
  3. Якось можна налаштувати (включити, обрати період та папку) це архівування для усіх установ? Чи тільки вручну заходячи у кожну установу?
  4. Я правильно розумію що це архівування документів і "створити архів" у планувальнику завдань - це різні архіви? Бо останнє виглядає як бекап. Я для тесту спробував запустити таке завдання і подивитись що це таке - створився файл bkz на 24 Gb (нагадую що мій zvit.fdb - 74.4 Gb). Просто бентежить що називається однаково тож я не розумію чи є зв'язок.
  5. Архівування це процесс у один бік? Чи можна буде, якщо такий варіант не сподобається, "зібрати усе назад" в одну базу?
Postgres
Також бачив десь рекомендації переходити на постгрес якщо база більш ніж 100 Gb.
  1. Які є рекомендації стосовно цього - як налаштовувати постгрес для медка?
  2. Що краще у моєму випадку для а) зменшення бази і б) для підвищення швидкості роботи - архівування чи перехід на постгрес?

Mykhailo_Taranenko
Повідомлень: 23
З нами з: 03 травня 2023, 11:28

Re: Обслуговування великої БД Firebird

Повідомлення Mykhailo_Taranenko » 26 лютого 2024, 16:00

Добрий день!
1. На СКБД Firebird при великих об'ємах можуть відбуватись затримки в роботі та може фіксуватись зниження відказостійкості.
2. Визначити кількість зайнятого місця в БД у розрізі підприємств немає можливості.
Зазвичай, найбільший розмір має таблиця CARDJOURNALOPER (квитанції до документів).
3. З нашої сторони рекомендується в налаштуваннях утиліти ConnectionSetup.exe на вкладці Firebird — "Додаткові налаштування" використовувати "Рекомендовані" значення.
Користувач має можливість виконувати власні редагування параметрів на власний розсуд.
4. Для зменшення розміру БД з СКБД Firebird рекомендується саме створення архівів документів. Після архівування документів рекомендується створити резервну копію програми та відновити до нововстановленого екземпляра для фактичного зменшення розміру файлу БД.
При відновленні резервної копії до нововстановленого екземпляра пошкодження БД виправляються (в разі їх наявності), відновлюється еталонна структура БД.
5. "Створити архів" у планувальнику завдань - це функціонал для формування архіву програми, в якому зберігаються файли самої програми та файл бази даних в одному файлі для можливості відновлення.
Архівування документів - це функціонал для зберігання окремо документів в архівних файлах для можливості зменшення навантаження на файл БД та об'єму його.
Перелік документів доступних для архівування з таких розділів:
- Реєстр електронних документів.
- Реєстр податкових документів.
- Реєстр звітів "Документи СМКОР".
Для додавання документів до архіву потрібно обрати потрібну кількість документів в тому чи іншому реєстрі, натиснути "Файл" - "Помістити в архів". Після цього перейти до розділу "Адміністрування" - "Архівування документів", встановити бажані параметри та створити архів.
Архіви з документами формуються окремо по кожній організації.
Детальніше за посиланням: https://medoc.ua/faq/shho-take-arhvuvan ... no-potrbne
6. Після архівування документи зберігаються в окремих архівах, для можливості відновити ці документи до іншого файлу БД потрібно в програмі підключити ці архіви та виконати "Експорт" документів з них, для подальшого імпорту в програму.
7. Рекомендовані параметри для СКБД PostgreSQL описано за посиланням:
https://medoc.ua/page/technicalrequirements
8. Зважаючи на майбутній ріст БД та для уникнення незручностей в подальшому, рекомендується виконати перехід на СУБД Oracle або PostgreSQL.
При роботі із СУБД Oracle або PostgreSQL не використовується та не підтримується архівування документів у зв'язку із відсутністю такої необхідності.
Дані СУБД краще справляються із великими розмірами БД.

Для переходу на Oracle або PostgreSQL потребується встановити новий екземпляр програми, обравши відповідну СУБД під час встановлення.
Перенести дані можливо або за допомогою резервної копії, або "з наявної БД Firebird" за допомогою відповідного функціоналу у вікні створення підприємства.
Налаштування та обслуговування СУБД виконуються з боку ДБА клієнта.

Charg
Повідомлень: 59
З нами з: 23 березня 2015, 18:11

Re: Обслуговування великої БД Firebird

Повідомлення Charg » 26 лютого 2024, 18:28

Дякую за розгорнуту відповідь. Декілька уточнюючих питань:
Mykhailo_Taranenko писав:
26 лютого 2024, 16:00
Для додавання документів до архіву потрібно обрати потрібну кількість документів в тому чи іншому реєстрі, натиснути "Файл" - "Помістити в архів". Після цього перейти до розділу "Адміністрування" - "Архівування документів", встановити бажані параметри та створити архів.
Архіви з документами формуються окремо по кожній організації.
А автоматично перекидувати у архів все старе поки ніяк? Може у вас наразі нема рішення але щось плануєте стосовно цього?
Mykhailo_Taranenko писав:
26 лютого 2024, 16:00
6. Після архівування документи зберігаються в окремих архівах, для можливості відновити ці документи до іншого файлу БД потрібно в програмі підключити ці архіви та виконати "Експорт" документів з них, для подальшого імпорту в програму.
Я правильно зрозумів що якщо нам не сподобається мати справу з цими архівами (навіть незважаючи на те що це проміжний рекомендований варіант до переходу на оракл\постгрес) - ми зможемо експортувати ці документи із архіву а потім імпортувати їх назад у базу - і потім вже однією цілою БД переїхати у оракл\постгрес? Чи разом з архівом можна буде?
Бо раніше я думав що це архівування - шлях в один кінець і воно прив'язує нас до firebird.
Charg писав:
23 лютого 2024, 19:08
Якось можна налаштувати (включити, обрати період та папку) це архівування для усіх установ? Чи тільки вручну заходячи у кожну установу?
Ось на це ще нема відповіді.

Mykhailo_Taranenko
Повідомлень: 23
З нами з: 03 травня 2023, 11:28

Re: Обслуговування великої БД Firebird

Повідомлення Mykhailo_Taranenko » 27 лютого 2024, 12:15

1. Для можливості перенесення великої кількості документів одночасно потрібно:
- Вибрати період в реєстрі.
- Виконати "Файл" - "Помістити все в Архів", відповідно всі документи за вибраний період будуть переміщено в архів.
2. При роботі із СУБД Oracle або PostgreSQL не використовується та не підтримується архівування документів у зв'язку із відсутністю такої необхідності.
Переглядати або експортувати документи, що знаходяться в архівах, можливо виключно в програмі із СУБД Firebird.
Імпортувати документи можливо до програми з будь-якою СУБД.
При переході на Oracle/PostgreSQL рекомендується перенести документи за допомогою експорту та подальшого імпорту або ж залишити екземпляр із СУБД Firebird у вигляді архівного.
3. Архівування встановлюється окремо на кожну організацію та налаштування виконується вручну.

Charg
Повідомлень: 59
З нами з: 23 березня 2015, 18:11

Re: Обслуговування великої БД Firebird

Повідомлення Charg » 14 травня 2024, 14:56

Врешті, вирішив переходити на postgresql.

Підкажіть чи є сенс робити бекап-рестор засобами firebird перед переходом? У моєму випадку це зменшує zvit.fdb з 97Gb до 92Gb, але обидві ці операції займають 70 хвилин (порівну, десь ~35 хвилин кожна)
Тобто може це прискорює процесс створення повного бєкапу (ZBF) та потім його рестору у postgresql? Можливо там індекси корректно перестворюються чи ще щось таке. Або це марно витрачений час?

Також тестував перехід на копії VM, залишаю статистику може комусь знадобиться потім:
  • база firebird 97Gb (після бекап-рестору 92Gb)
  • бекап засобами firebird 35 хвилин
  • рестор засобами firebird 35 хвилин
  • ZBF з firebird'у робився ~85 хвилин (важить 27Gb)
  • ZBF у postgresql ресторився ~3.5 годин
  • база postgresql після всього 47Gb

Mykhailo_Taranenko
Повідомлень: 23
З нами з: 03 травня 2023, 11:28

Re: Обслуговування великої БД Firebird

Повідомлення Mykhailo_Taranenko » 14 травня 2024, 17:15

Добрий день.
"робити бекап-рестор засобами firebird перед переходом?"- ця операція не є обов'язковою.
Якщо в Базі даних містяться незначні пошкодження, вони будуть виправлені під час створення та відновлення резервної копії.
На новій базі індекси буду перераховані.

sashkets
Повідомлень: 73
З нами з: 03 лютого 2022, 16:44
Контактна інформація:

Re: Обслуговування великої БД Firebird

Повідомлення sashkets » 14 травня 2024, 19:33

Charg писав:
14 травня 2024, 14:56
Врешті, вирішив переходити на postgresql.
Вже 2 роки як перейшов на PG про що не шкодую
Мій досвід переходу із статистикою

Відповісти

Повернутись до “Помилки у роботі програми”