С выходом новых версий платформы «1С:Предприятие» (начиная с 8.3.24) администраторы и разработчики получили мощный инструмент — сегментацию данных. В этой статье мы подробно разберем, зачем этот механизм был внедрен, какие проблемы он решает и как правильно использовать его для оптимизации высоконагруженных систем.
Рассмотрим стандартную ситуацию в крупной компании: информационная база разрослась до терабайтных размеров. Опытный системный администратор знает, что средствами СУБД (будь то MS SQL Server или PostgreSQL) можно разнести таблицы по разным физическим дискам. Например, критически важные и часто используемые таблицы (регистры остатков) можно положить на быстрые NVMe-накопители, а архивные данные или тяжелые справочники — на медленные HDD.
Однако в мире 1С до недавнего времени существовала серьезная преграда: реструктуризация. Как только разработчик вносил изменения в структуру метаданных (добавлял реквизит, менял тип данных), платформа 1С инициировала пересоздание таблиц в СУБД. В процессе этой операции 1С создавала новую таблицу в стандартном табличном пространстве (Default), переносила туда данные и удаляла старую. В результате все ручные настройки администратора СУБД по распределению файлов «слетали», и базу приходилось перенастраивать заново вручную.
Проанализируем, что изменилось. Теперь настройки размещения данных стали частью метаданных самой платформы. Это означает, что 1С «знает», в каком сегменте (файловой группе) должна лежать конкретная таблица. При проведении реструктуризации сервер приложений 1С дает команду СУБД создать новую таблицу именно в том табличном пространстве, которое указано в настройках сегментации.
Рассмотрим ключевые возможности, которые дает этот механизм:
1С:ERP).ХранилищеЗначения, где обычно лежат файлы и картинки, можно вынести в отдельный сегмент на недорогое хранилище. Это позволяет базе расти, не раздувая требования к дорогостоящим высокоскоростным дискам.Выясним, как сегментация отображается на физический уровень различных систем управления базами данных:
В MS SQL Server механизм опирается на Filegroups (файловые группы). Администратор создает файлы данных в определенных группах, а 1С сопоставляет свои сегменты с этими именами групп.
В PostgreSQL и IBM DB2 используются Tablespaces (табличные пространства). При настройке в консоли кластера 1С указывается имя существующего в СУБД табличного пространства.
Важно понимать, что сама 1С не создает папки на диске напрямую. Платформа лишь указывает СУБД имя логического контейнера, в котором нужно разместить таблицу. Предварительная подготовка этих контейнеров (файловых групп или Tablespaces) — задача системного администратора на стороне СУБД.
Разберем алгоритм действий для внедрения этой технологии:
РегистрНакопления.Запасы). В палитре свойств найдите поле «Сегмент данных». Также можно отдельно указать «Сегмент индексов» и «Сегмент данных неограниченной длины».Часто возникает вопрос: не нарушит ли разнесение данных по разным дискам целостность базы? Рассмотрим сообщение №20 из обсуждения, где высказывались опасения о синхронизации. Важно понимать, что база остается единой логической сущностью для СУБД. Все транзакции фиксируются одновременно во всех файлах данных одной БД. С точки зрения логики SQL, это не «разные базы», а одна база, размазанная по разным файлам.
Что касается выгрузки в .dt: здесь изменений нет. Файл .dt — это логический слепок данных. При выгрузке платформа последовательно читает все таблицы изо всех сегментов и упаковывает их в один архив. При загрузке в другую среду 1С попытается воссоздать сегментацию, если на целевом сервере настроены сегменты с аналогичными именами.
Проанализируем важные нюансы, которые стоит учитывать перед внедрением:
Посмотрим на ситуацию, когда в 1С:Документооборот файлы хранятся в томах на дисках, но по каким-то причинам (безопасность, требования регламента) их нужно перенести внутрь базы данных. Ранее это привело бы к колоссальному росту базы и тормозам из-за огромных LOB-полей.
С помощью сегментации мы можем:
SlowStorage на дешевых HDD.ФайловоеХранилище, привязанный к SlowStorage.Файлы (точнее, для его таблиц с двоичными данными) указать использование этого сегмента.В результате сама база метаданных и индексы останутся на быстрых дисках, обеспечивая мгновенную навигацию, а «тяжелый контент» будет храниться в той же базе, но на бюджетном железе, не мешая работе основной системы.
Таким образом, сегментация данных — это фундаментальный шаг платформы навстречу крупному корпоративному сектору. Она позволяет строить гибкие, отказоустойчивые и производительные системы, эффективно используя аппаратные ресурсы сервера.