AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2025, 18:49   #1  
Lankey is offline
Lankey
Участник
 
195 / 30 (2) +++
Регистрация: 19.05.2020
Архивация данных в AX2009. Подходы
AX2009
Есть очень большая база(несколько терратабайтов). Судя по всему, она на треть еще вырастет к тому времени, когда компания перейдет на новую ERP
Соответственно, бэкапы уже длятся по часа 4-5. Будет еще хуже. Прерформанс системы тоже будет только ухудшаться.
Надо архивировать старые данные(старше х лет)
Какие есть опции помимо IDXF ?
Я пообщалась с иск интеллектом и мы решили (ну, или мне кажется, из обсужденного), что можно для самых больших тебалиц попробовать скинуть старые данные в отдельный partition (например, все ledgerTrans по TransDate < today - x лет) и этот partition заархивировать в отдельную базу.
Поэтому, получится объем текущей базы меньще, но можно быстро, при надобности этот кусок таблицы восстановить их архива и прикрепить к текущей базе
Если, допатим, в базе 15 лет данных, а хранить надо 7, а отрежем все, что старше 10, то, по идее, должно быть быстро и просто и на отчетность не повлиять(, что макс за 7 лет) и data intergrity

Каждый год можно переносить допоснительный год в архив после закрытия года, т.о постепенно уменьшая объем базы

Какие есть за и против?
Старый 06.12.2025, 23:42   #2  
axm2017 is offline
axm2017
Участник
 
2,071 / 297 (14) ++++++
Регистрация: 15.05.2017
За - вроде понятны.
Против - проще спросить бизнес но по факту, подозреваю, что количество обращений к 10 летним данным - 0
Старый 07.12.2025, 07:25   #3  
Pandasama is offline
Pandasama
Участник
 
478 / 141 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Отрезать все данные старше N лет, загрузив вместо кучи проводок начальное сальдо?
Старый 07.12.2025, 20:08   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,732 / 1220 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Практика показывает, что общего решения по архивированию не существует. Хотя можно сделать частичное архивирование наиболее проблемных (больших) таблиц

Проблема здесь в том, что невозможно получить ясный и однозначный критерий "архива". Т.е. какие именно записи в каких таблицах можно перенести в архив, а какие - нельзя.

Ну, допустим, с LedgerTrans - все понятно. Но, как правило, в таких старых решениях сделано много своего кода. Со своей спецификой. И вот в этом-то "своем" коде все не так однозначно. Хорошо, если там дата вообще есть. Хотя бы в виде системных дат создания/изменения.

Это надо долго и мучительно разбирать с бизнесом. Хотя бы на уровне документов. По каким критериям можно определить, что вот этот документ уже не актуален и его можно переместить в архив

Потом повторить все то же самое с системой отчетности. Особенно, если есть кубы. Подозреваю, что именно там будут основные проблемы. Не с самими документами, а с отчетами. Наверняка есть какой-нибудь показатель, который собирает данные "с начала времен"

Ну, а в самом общем виде, решение уже описали

1. Расчет и запись баланса на дату архива
2. Перенос всех документов с датой меньше расчетной, в отдельную (архивную) базу

В стандартном функционале есть тип проводки "Входящее сальдо". Если функционал не стандартный, то создавать соответствующие таблицы, поля, элементы Enum (тут надо смотреть по функционалу) и внести нужные изменения в функционал

PS: Решение с partition хорошо только тем, что есть стандартные инструменты в MS SQL по ее использованию. Но по сути, чем это отличается от прямого копирования в отдельную (архивную) базу выделенных записей?

PPS: Если планируется переход на новую ERP в ближайшие год-два, то поиск "общего" решения по архивированию не имеет особого смысла. Просто "отрежьте" самые большие таблицы по дате и перенесите это все в архив. Думаю, если нет показателей, рассчитывающих что-то по этим таблицам "с начала времен", то никто ничего не заметит
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 08.12.2025, 11:02   #5  
Lankey is offline
Lankey
Участник
 
195 / 30 (2) +++
Регистрация: 19.05.2020
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение

Ну, а в самом общем виде, решение уже описали

1. Расчет и запись баланса на дату архива)
Спасибо
Поясните по входящему сальдо, пожалуйста.
Я так понимаю, что при закрытии финансового года они все равно формируются. То есть, если "отрезать" после закрытия, то все будет ок и не надо доп проводок делать? Я не права?
Что произойдет с остатками по складам при отрезании?

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
PS: Решение с partition хорошо только тем, что есть стандартные инструменты в MS SQL по ее использованию. Но по сути, чем это отличается от прямого копирования в отдельную (архивную) базу выделенных записей?
Из того, что прочитала, если
  • сравнивать с ручным отрезанием, то это должно быть быстро и надежно (подключить-отключить), что уже немало . Особенно для ситуаций аудита.
  • А по сравнению с IDXF намного меньше мороки

Последний раз редактировалось Lankey; 08.12.2025 в 11:13.
Старый 08.12.2025, 16:03   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,732 / 1220 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Да. Для бух.проводок это есть. Здесь речь идет о том функционале, где нет проводок по закрытию периода. Например, складские проводки. А "входящее сальдо" - это просто пояснение, о чем речь, на наглядном примере

Идея с проводкой по входящему сальдо заключается в том, чтобы иметь инструмент "ремонта" текущего остатка, если вдруг, что случиться. Ведь текущий остаток - это сумма всех без исключения проводок. Но если отрезать архив, то часть данных "пропадет"

То же самое касается "расчета на дату", если вдруг кто-то захочет посчитать остаток на дату, раньше архива. При наличии входящего сальдо он получит остаток 0. А если входящего сальдо нет, то получит некий не нулевой остаток, что будет вводить в заблуждение

PS: Про partition не в курсе, как он себя поведет при добавлении полей/индексов? Автоматически добавит или запрет на такие операции?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 08.12.2025, 23:33   #7  
Lankey is offline
Lankey
Участник
 
195 / 30 (2) +++
Регистрация: 19.05.2020
Спасибо, Владимир. Есть какие-то штатные механизмы(как-то применить стд классы, например) для коррекции входящего сальдо по состоянию на X лет назад? По кр мере, складских проводок?
Старый 10.12.2025, 12:03   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,732 / 1220 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не знаю. Специально не искал. Подозреваю, что таких инструментов нет из-за очень уж специфической проблемы и способа решения. Если кривой баланс, то обычно ищут те проводки, которые породили ошибку. А баланс исправляют добавлением новых проводок или удалением/правкой проблемных
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 10.12.2025, 20:26   #9  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
345 / 933 (32) +++++++
Регистрация: 23.10.2012
Цитата:
Сообщение от Lankey Посмотреть сообщение
AX2009
Я пообщалась с иск интеллектом и мы решили (ну, или мне кажется, из обсужденного), что можно для самых больших тебалиц попробовать скинуть старые данные в отдельный partition
Обсудать с "искусственным интеллектом" Аксапту - себе дороже, очень сладко врёт. Например: поддержка партиции появились только в 2012 версии Аксапты.

Дайте больше деталей.
Тип резервного копирования дифференциальный или полный столько времени занимает?
Какие топ 10 таблиц входят в TSQL-отчёт "disk usage by top tables"? Скорее всего, первые 5 таблиц занимают 80% дискового пространства и содержат:
- blob поля;
- денормализованные данные (которым место в SSAS);
- бесконтрольно "пухнущие" (SysDataBaseLog, AIF*, Batch*..) данные.

Источник проблемы не в количестве данных - это борьба со следствием. Никто не запрещает составить план действий по урезанию данных, но решение находится в области архитектуры решений. Повысьте требования к нормализации таблиц и жизненному циклу записей находящихся в них на уровне решений, а не регламентных процедур.

PS рекомендую ознакомиться с паттерном Event Sourcing, он может помочь в разработке решения по "архивации" проводок.
PS2 проблема быстродействия и проблема объёма данных должны рассматриваться раздельно.

Последний раз редактировалось Товарищ ♂uatr; 10.12.2025 в 21:15.
За это сообщение автора поблагодарили: Lankey (1).
Старый 04.01.2026, 13:14   #10  
Lankey is offline
Lankey
Участник
 
195 / 30 (2) +++
Регистрация: 19.05.2020
Спасибо. LedgerTrans(800GB), CustinvoiceTrans(600GB), InventTrans(180GB), SalesLine (150GB), custinvoiceTrans(150GB), TaxTrans(60GB) - самые большие
Я уже нашла неиспользуемые распухщие кастомные индесы на них , но не смотрела есть ли кастомные поля, что съедают много места. Хотя если есть, менять структуру вряд ли будет возможно. SysDataBaseLog, AIF*, Batch*.. это все уже обрезается и по максимому и минимизирован трэкинг .
Надо продлить жизнь этого дела лет на 5. Хотят резать данные.
Я хочу понять, есть ли у кого-то опыт подрезания.
В частности:
а) Можно ли подрезать только фин часть (LedgerTrans и связанные таблицвы), но не трогать складские.
б) Если трогать складские, то как корректно воссоздать остатки по складам после обрезания?

Последний раз редактировалось Lankey; 04.01.2026 в 13:47.
Старый 05.01.2026, 08:35   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,348 / 3564 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Вообще, если уж говорить с т.з. денег - то дешевле купить побольше дисков и не мучаться с местом. "Несколько терабайтов" - это не несколько "десятков терабайтов".
У обрезания много проблем. То пользователи захотят видеть старые данные, то где-нибудь логика "стрельнет" по старым данным и т.д. Т.е. обрезание БД - это будет целый проект, в результате которого от старой БД никто не откажется )))). Сначала сделаете интеграцию между базами... а потом она так и останется на постоянке )))).
Если проблема в скорости - то она решается оптимизацией индексов и программного кода. Если проблема в месте на дисках - то докупкой дисков. Какие бы ни были дорогие диски - это будет дешевле интеллектуального труда разработчика

Сделать можно всё, но с нюансами. Вот, к примеру, Вы подрежете LedgerTrans. А потом не сойдется оборотка по складу и ГК. Или люди от разнесенной складской проводки не увидят проводки ГК. Ну.. это первое, что приходит в голову.
Просто тут оцените эффект. Подрезали, допустим, LedgerTrans. Потратили на это 100500 часов разработки (корректно воссоздав остатки; решив кучу сопутствующих проблем и т.д.). И тут люди захотели увидеть старые данные.

Смотрим на итог - что получилось ? А в итоге всё равно пришлось докупить диски, но теперь зато у нас имеются 2 базы, 2 приложения и необходимость условной синхронизации между ними (в части меняющегося программного кода).

Т.е. можно без всего этого - просто докупить диски; таблицы раскидать по разным файлам БД, а их раскидать на разные диски. И ... всё
__________________
Возможно сделать все. Вопрос времени
Старый 05.01.2026, 10:26   #12  
Lankey is offline
Lankey
Участник
 
195 / 30 (2) +++
Регистрация: 19.05.2020
Спасибо, но мой вопрос был про конкретный опыт подрезания / архивации.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Архивация данных в AX2009 . Отзывы о IDMF ? Lankey DAX: Программирование 2 06.12.2025 11:42
AX2009: класс сбора данных из формы при экспорте в Excel (Ctrl+E) oleggy DAX: Программирование 1 05.05.2022 06:51
ax2009 Оптимизация производительности на больших объемах данных jeky DAX: Программирование 2 20.01.2019 11:42
Перенос данных из AX2009 в AX2012 trud DAX: Администрирование 3 21.02.2012 12:35
Скрипт для переноса данных Ax3.0 (Oracle) - Ax2009 (MSSQL) someOne DAX: Программирование 2 14.06.2011 14:53

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:53.