Как сократить базу данных MS DAX?

Как сократить базу данных MS DAX?

ПРАКТИЧЕСКОЕ ТЕХНИЧЕСКОЕ ПОСОБИЕ

  1. ДОБАВЛЯЕМ В БАЗУ ПАРАМЕТР
  2. ОТКРЫТЫЕ ДАННЫЕ
  3. УДАЛЕНИЕ ЧАСТИ ЗАПИСЕЙ
  4. УДАЛЕНИЕ СПРАВОЧНИКОВ
  5. УДАЛЕНИЕ ПРОВОДОК, ДОКУМЕНТОВ И СТРОК
  6. УСЕЧЕНИЕ ПО КОМПАНИЯМ
  7. ЖУРНАЛИЗАЦИЯ УСЕЧЕНИЯ
  8. ФОРМИРОВАНИЕ АРХИВНОЙ БАЗЫ
  9. ВОПРОСЫ ПЕРЕД СОЗДАНИЕМ ФУНКЦИОНАЛЬНОСТИ УСЕЧЕНИЯ БАЗЫ ДАННЫХ
  10. ОСОБОЕ МНЕНИЕ ОБ АРХИВНОЙ БАЗЕ
  11. ПРОИЗВОДИТЕЛЬ ПЕРЕХОДА
  12. КОНТРОЛЬ СЦЕНАРИЕВ
Понятия:
Сокращение базы данных – это удаление части записей базы данных с их переносом в архивную базу.
Активный период – это период, в котором выполняются операции и хранятся актуальные данные системы.

Обращаем внимание читателей, что пособие написано с технической точки зрения. Оно не охватывает процедуры согласования усечения базы на предприятиях, процедуры хранения информации для целей бухгалтерского учета и налогообложения.

И так, идем по шагам:

1.   ДОБАВЛЯЕМ В БАЗУ ПАРАМЕТР – дату, по которую период закрыт. После усечения базы выставляется в нужное значение, и добавляем код, жестко запрещающий разноску датой менее этого значения. То есть для системы не существует периода до активного.

2.   ОТКРЫТЫЕ ДАННЫЕ – это данные, по которым могут выполняться операции разноски документов, сопоставления (проводки, как в активном, так и в закрытом периоде), отмена сопоставлений (проводки только в активном периоде) и т.д. Закрытые данные используются исключительно для аналитических запросов и могут быть получены в архивной базе. То есть делим базу на две части – быструю меньших размеров и большую, медленную с минимально выделенными для работы ресурсами.

3.   УДАЛЕНИЕ ЧАСТИ ЗАПИСЕЙ базы данных, которые стали неактуальными.

  • Критерии неактуальности:
    • Неактивные и неиспользуемые данные. Например, записи, помеченные как неактивные, удаленные и при этом на них нет ссылок из записей, используемых в бизнес-процессах. Количество таких записей очень мало.
    • Редко используемые данные. Сюда относятся закрытые проводки и завершенные документы закрытых периодов. Данные используются исключительно для получения аналитических отчетов. При этом обращаю внимание, что в закрытых периодах существуют открытые проводки и документы, которые нельзя удалять – они нужны для последующих сопоставлений при получении закрывающих документов.
    • Частично неактуальные – это записи, имеющие ссылки на удаленные в результате усечения данные. Например - это проводки, имеющие ссылки на удаленные документы или справочники – при получении отчета можно недополучить часть информации: например, до усечения выводился комментарий документа, а после – не может быть выведен. Суть данного критерия – при усечении, например, проводок ГК целесообразно удалять и модульные проводки и соответствующие им документы. А всю усеченную информацию получать в архивной базе.

4.   УДАЛЕНИЕ СПРАВОЧНИКОВ. Если в текущий активный период не используется часть записей справочников, потому что они заблокированы или неактивны, признаны неактуальными, то теоретически можно их удалить. Но есть одна проблема – многие отчеты строятся не на основании проводок, а наоборот – запрос идет по справочникам с отношением с проводками. Вывод: Усекать справочники совместно с проводками.

5.   УДАЛЕНИЕ ПРОВОДОК, ДОКУМЕНТОВ И СТРОК. Усечение отдельно проводок ГК без модульных проводок нецелесообразно в связи с тем, что большинство Оборотно – сальдовых ведомостей задействуют проводки ГК. Вывод: Усекать весь «кортеж» проводок, а именно проводок ГК совместно с модульными проводками.

  • Аналитика проводок – будем понимать счет, финансовые аналитики и также дату и номера документов, то есть все, что информирует о данных по проводке. Оборотно-сальдовые ведомости имеют входящее сальдо, получаемое на основе проводок предыдущих периодов. Если после усечения не создать некую сальдовую проводку в усекаемом периоде, то получим некорректное входящее сальдо. При этом стоит понимать, что сальдовая проводка будет иметь меньшую информацию, например, меньшую аналитику или ее отсутствие вообще. Очень важна статистика повторяемости аналитики. Ее можно получить, если разделить количество проводок на количество сальдовых проводок со всей аналитикой, но без группировки по датам и ваучерам. Если она мала, то стоит отказаться от большей ее части – например, не показывать во входящем сальдо даты, ваучеры, номера документов и финансовые аналитики. Что касается счета (ГК, поставщик, клиент, ОС и т.д.), то данная аналитика является опорной с точки зрения всех Оборотно-сальдовых ведомостей и отказываться от нее вообще не корректно. После анализа статистики принимается решение о базовых аналитиках и получаем эффективность усечения как отношение проводок до и после усечения с созданием сальдовых проводок.
  • Особо необходимо обратить внимание на открытые проводки и документы. По ним будут операции сопоставления и их нельзя удалять. Можно конечно применить правило – не усекать период, если есть хоть одна открытая проводка, но на практике такое бывает редко. Вывод: Не удалять открытые для будущих операций данные, при этом учитывать эти данные при создании сальдовых проводок, чтобы получилось корректное входящее сальдо в активном периоде.
  • Важный момент – документ или проводка были на момент усечения закрытыми, а потом выяснилось, что ошибочно и подлежат открытию. Теоретически это возможно, но на практике чаще решения об изменениях данных в давно (год и более назад) закрытом периоде не принимается. В таких случаях делают сторно в текущем периоде. Факт вроде очевиден, но думаю, стоит его проговорить на этапе формирования регламента усечения базы, чтобы не было разного толкования о невозможности восстановить данные для дальнейшего использования открытых данных.
  • Удаление проводок в валюте. Важно, что курсовая разница, например, для банковских операций начисляется с учетом финансовой аналитики. Это значит, что усечение таких операций должно проходить до счета и аналитик (или до минимального набора аналитик, если есть кастомизированное решение в этой части). Вывод: Проводки ГК, порожденные валютными операциями, усекаются по общему правилу. Модульные валютные проводки по банку и кассе усекаются с созданием сальдовой проводки со счетом и необходимой для расчета курсовой разницы финансовой аналитикой. Сохраняемые по общему принципу открытые проводки по поставщику, клиенту и подотчетным лицам полностью обеспечивают расчет курсовой разницы в этой части базы данных. Важно – пересчет курсовых разниц в закрытом периоде необходимо запретить. В целом – согласно параметру даты закрытого периода.

6.   УСЕЧЕНИЕ ПО КОМПАНИЯМ.

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

7.   ЖУРНАЛИЗАЦИЯ УСЕЧЕНИЯ

  • После усечения необходимо в базе данных иметь информацию о выполненном процессе: дата, автор, комментарий, период усечения.
  • Важно добавить запрет на открытие финансового периода, периода склада, если становится открытым период, который совпадает с периодом усечения. Запрет необходим, чтобы в усеченном периоде не создавались данные.

8.   ФОРМИРОВАНИЕ АРХИВНОЙ БАЗЫ

  • Архивные базы по периодам. Например, по годам. Перед усечением данных за выбранный период делается копия базы, возможно, очистка данных за следующий период и далее – усечение. При следующем усечении – еще одна, уже вторая копия базы и снова усечение. В результате создается столько архивных баз, сколько было усечений. Необходимую информацию получаем отдельными запросами к каждой базе.
  • Одна архивная база. Перед усечением необходимо выполнить перенос усекаемых данных из рабочей базы в архивную базу. Технически необходимо иметь для этого специальные сценарии или скрипты.

9.   ВОПРОСЫ ПЕРЕД СОЗДАНИЕМ ФУНКЦИОНАЛЬНОСТИ УСЕЧЕНИЯ БАЗЫ ДАННЫХ

  • Одна или несколько архивных баз?
    • Если база одна, то решить вариант сценария переноса данных, которые будут переноситься – отдельный скрипт SQL, хранимая процедура, вызываемая из рабочей базы (предпочтительнее) или иное. 
    • Если несколько, то скрипты возможно нужны только для удаления данных активного периода, или вообще не делать такое удаление – просто копировать перед усечением базу.
  • Перечень усекаемых таблиц со списком оставляемой аналитики, если необходимо?
    • Оптимальным считаю удалять все закрытые проводки в усекаемом периоде с созданием сальдовых проводок с аналитикой счет. Сальдовые проводки будут иметь одно значение ваучера и дату, равную конечной дате усекаемого периода. Что касается аналитики, то оставить счет.
    • По удаляемым проводкам удалить все связанные документы.

10.   ОСОБОЕ МНЕНИЕ ОБ АРХИВНОЙ БАЗЕ

  • Архивную базу предпочтительнее делать одну. Она должна иметь возможность расположения на большом и непроизводительном дисковом массиве. При таком подходе можно получать аналитические запросы в одном месте на всем архивном периоде.
  • С точки зрения получения полной аналитической картины желательно иметь в архивной базе также проводки актуального периода. Данный пункт подразумевает некоторую периодическую операцию по переносу данных из актуальной базы в архивную. В итоге архивная база становится абсолютно полной с задержкой на период запуска этой операции. Для аналитиков – это оптимально. И еще – если запускать операцию как можно чаще, то затраты времени на перенос уменьшаются практически до нуля и перед усечением достаточно проверить, что все усекаемые данные перенесены – либо еще раз запустить операцию.
  • Законодательство требует хранения данных до трех лет. С этой точки зрения сама архивная база становится актуальной второго уровня. К ней можно применить те же операции усечения, но уже без переноса данных в еще одну архивную базу. Достаточно сделать резервную копию, если не хочется терять статистику. В итоге при таком подходе архивная база будет доступна не только аналитикам компании, но и аудиторским процедурам без дополнительных усилий на разворачивание.

11.   ПРОИЗВОДИТЕЛЬ ПЕРЕХОДА

  • При очень больших базах рекомендуется делить сценарии по блокам. Например, отдельно можно рассчитать сальдо по модульным проводкам разных модулей и проводок ГК.
  • Можно переходить частями –делать один сценарий за один шаг. Например, за ночь запускать один блок. С точки зрения бизнеса – ничего не изменится.

12.   КОНТРОЛЬ СЦЕНАРИЕВ

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

Автор статьи Титов В.А.

© Любое копирование материалов с сайта unison-team.ru разрешено только с согласия владельцев.

coub 1c