IOS        06.01.2024   

Разделение данных на текущую и архивную части. Разделение данных и параллельная sql-обработка Применение утилиты SQD

Механизм разделения данных позволяет хранить данные нескольких независимых организаций в одной информационной базе.

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

Допустим в конфигурации существует общий реквизит "Организация". Это значит (упрощённо), что у каждого справочника, документа или другого объекта конфигурации также будет существовать реквизит "Организация".

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

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

Тогда (упрощённо) в информационной базе будет создано несколько независимых областей данных, в каждой из которых будут храниться данные только для одной конкретной организации:

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

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

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

Механизм разделения данных довольно гибок и универсален:

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

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

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

Примечания:

В этой статье

Обзор

При разделении базы данных она реорганизуется в два файла: серверную базу данных, которая содержит таблицы данных, и клиентскую базу данных, в которой содержатся все остальные объекты базы данных (например, запросы, формы, отчеты). Каждый пользователь взаимодействует с данными с помощью локальной копии внешней базы данных.

Чтобы разделить базу данных, используйте мастер разделения баз данных. После разделения базы данных вы должны распространить ее пользователей на клиентскую базу данных.

Внимание:

Преимущества разделенной базы данных

Ниже перечислены преимущества разделенной базы данных.

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

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

    Улучшенная безопасность. при хранении серверной базы данных на компьютере, использующем файловую систему NTFS, вы можете использовать функции безопасности NTFS для защиты данных. Поскольку пользователи обращаются к серверной базе данных с помощью связанных таблиц, скорее вероятность, что злоумышленники могут получить несанкционированный доступ к данным с помощью кражи клиентской базы данных или от авторизованного пользователя. Если вы не знаете, какую файловую систему использует файловый сервер, обратитесь к системному администратору. Если у вас есть права администратора на файловом сервере, вы можете выполнить команду msinfo32 для самостоятельного определения файловой системы.

    Как использовать параметр msinfo32 для проверки файловой системы?

    1. Нажмите кнопку Пуск и выберите команду выполнить .

      В диалоговом окне " выполнить " введите msinfo32 и нажмите кнопку ОК .

      В разделе Сводка системы щелкните значок "плюс" рядом с компонентом компоненты .

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

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

    Гибкая среда разработки Поскольку каждый пользователь работает с локальной копией клиентской базы данных, каждый пользователь может независимо разрабатывать запросы, формы, отчеты и другие объекты базы данных, не влияя на других пользователей. Аналогичным образом можно разработать и распространить новую версию клиентской базы данных, не нарушая доступ к данным, хранящимся в серверной базе данных.

Подготовка

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

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

    Разделение базы данных может занять много времени. Вы должны уведомить пользователей о том, чтобы они не использовали базу данных при ее разделении. Если пользователь изменяет данные при разделении базы данных, изменения не будут отражены в серверной базе данных.

    Совет: Если пользователь изменяет данные при разделении базы данных, вы можете импортировать новые данные в серверную базу данных по завершении работы.

    Несмотря на то, что разделение базы данных - это один из способов предоставления общего доступа к данным, каждый, кто использует базу данных, должен иметь версию Microsoft Office Access, совместимую с форматом серверной базы данных. Например, если файл базы данных имеет формат ACCDB, пользователи не смогут получить доступ к своим данным с помощью Access 2003.

    Вы можете использовать более ранний формат файла Access для серверной базы данных, если вы используете возможности, которые больше не поддерживаются. Например, при использовании страниц доступа к данным (Дапс); Вы можете продолжать использовать их, если серверная база данных находится в более раннем формате файла, поддерживающем Дапс. Затем вы можете использовать новый формат файла с интерфейсной базой данных, чтобы пользователи могли получать доступ к преимуществам нового формата. Обратите внимание, что вы не можете изменить данные на странице доступа к данным, используя Access 2010 или более позднюю версию.

Разделение базы данных

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

    Откройте копию базы данных, которая находится на локальном жестком диске.

    На вкладке Работа с базами данных в группе Перемещение данных нажмите кнопку база данных Access . Запустится мастер разделения баз данных.

    Нажмите кнопку разделить базу данных .

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

    Примечания:

    • Возможно, следует использовать имя, предложенное Access. Он сохраняет исходное имя файла и указывает на то, что база данных является серверной базой данных путем вставки _бе в имя непосредственно перед расширением имени файла.

      Не изменяйте тип файла, если только некоторые пользователи не будут использовать более раннюю версию Access для доступа к данным.

      Вы можете ввести путь к сетевому ресурсу в поле имя файла перед именем файла. Например, если сетевое расположение для серверной базы данных - \\server1\share1\ , а имя файла для серверной базы данных - мидб_бе. accdb , вы можете ввести \\server1\share1\MyDB_be.accdb в поле имя файла .

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

    После завершения работы мастера отображается сообщение с подтверждением.

Теперь база данных разделена. Клиентская база данных - это файл, с которым вы начали (копию исходной общей базы данных), а серверная база данных находится в сетевом расположении, которое вы указали в действии 5 этой процедуры.

Ограничение изменения структуры серверной базы данных

Чтобы ограничить изменения, вносимые в клиентскую базу данных, которую вы распространяете, рекомендуется сохранить ее в виде скомпилированного двоичного файла (файл. ACCDE). Скомпилированный двоичный файл - это файл приложения базы данных, сохраненный вместе со всеми скомпилированными кодом Visual Basic Access (VBA). В компилированном двоичном файле Access отсутствует исходный код VBA. Пользователи не могут изменять структуру объектов в файле. ACCDE.

    Откройте файл базы данных переднего плана (ACCDB), который вы хотите сохранить как скомпилированный двоичный файл (ACCDE).

Распространение серверной базы данных

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

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

Выполните одно из указанных ниже действий.

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

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

    Распространение файла базы данных переднего плана с помощью съемных носителей, например, компакт-диска или USB-накопителя. Если вы установили файл самостоятельно, его можно протестировать, чтобы убедиться, что он работает. Если пользователи должны установить файл, необходимо включить в него документ, поясняющий, какие действия необходимо выполнить, чтобы установить файл, и узнать, кто из них сталкивается с проблемами.

Изменение используемой серверной базы данных

Вы можете переместить серверную базу данных или использовать другую серверную базу данных с помощью диспетчера связанных таблиц.

Если вы хотите переместить серверную базу данных, сначала создайте ее копию в новом расположении, а затем выполните указанные ниже действия.

    На вкладке Внешние данные в группе Импорт _амп_ ссылки нажмите кнопку Диспетчер связанных таблиц .

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

    Совет: Если вы не связали ни с одной из баз данных, нажмите кнопку выделить все .

    Установите флажок всегда проверять новое расположение и нажмите кнопку ОК .

    Найдите и выберите новую серверную базу данных.

Относительно новая функциональная особенность 1С, отнесенная к облачным технологиям. После появления функционала компанией 1С была доработана БСП. Эти же доработки вошли в состав основанных на БСП типовые конфигурации, например, УНФ и УТ11.

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

К статье приложена обработка, выносящая скрытый функционал операций с областями данных на отдельную форму.

В БСП предусмотрены два разделителя учета: ОбластьДанныхОсновныеДанные и ОбластьДанныхВспомогательныеДанные. Загадкой осталось, почему эти 2 разделителя ссылаются на одни и те же параметры сеанса: ОбластьДанныхЗначение, ОбластьДанныхИспользование.

Включение механизма

Если ваша самописная конфигурация основана на БСП, то, скорее всего, перед включением необходимо внедрить загадочную библиотеку "1С:Библиотека технологии сервиса". Странно, что даже Гугл не знает о таком продукте 1С. А в типовых конфигурациях процедуры ПроверитьВозможностьИспользованияКонфигурацииВМоделиСервиса в модуле РаботаВМоделиСервиса не существует. Скорее всего, найти недостающие части из этой библиотеки можно в типовых конфигурациях, выполненных на основе БСП. В частности, одна из подсистем называется СтандартныеПодсистемы > РаботаВМоделиСервиса > ВыгрузкаЗагрузкаДанных.

Механизм разделения данных включается через установку константы ИспользоватьРазделениеПоОбластямДанных. Можно установить через пункт меню Все функции.

Создание пользователей области данных

Этот пункт не обязателен, если используется вход в область данных через форму. В режиме конфигуратора создаются пользователи. Один пользователь с административными правами должен иметь во вкладке Разделение данных все неустановленные разделители данных. Для других пользователей во вкладке Разделение данных должен быть установлен разделитель Область данных основные данные. Этот разделитель должен быть явно указан в командной строке при запуске 1С.

Запуск 1С с параметром командной строки

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

1С можно запустить сразу в режиме разделения данных. Предусмотрен параметр командной строки /Z. Например, параметр «/Z-,+1» указывает, что 1С запускается со значением Области данных основные данные равным 1, разделитель Область данных вспомогательные данные не установлен.

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

Далее при запуске возникают несколько ошибок среди них: «Разделенным пользователям не может быть назначена роль Администратор системы», «Разделенным пользователям не может быть назначена роль Запуск толстого клиента».

Пользователь не найден в справочнике Пользователи - проблему победить не удалось. В традиционном сценарии Пользователь регистрируется при первом входе. Подозреваю, что при разделении данных Пользователи создаются через другое приложение 1C Fresh.

Заполнить регистр сведений Области данных

Для каждой области нужно заполнить запись в регистре сведений Области Данных, присвоив областям номера и статус «Используется». Обработки могут проверять наличие записей в этом регистре перед началом выполнения.

Вход в область данных

Администрирование - Сервис - Вход в область данных (ОбщаяФорма.ВходВОбластьДанных)

Позволяет пользователю сменить текущую область данных. Вход в область возможен от имени пользователя, запущенного без указания разделителей. При смене области данных проверяет ее статус в регистре сведений Области данных.

Выгрузка данных из области

Текущая область выгружается через ОбщаяФорма. ВыгрузкаДанных. До ее использования нужно выполнить вход в нужную область данных. Форма не выведена в интерфейс пользователя в раздел Администрирование.

Данные сериализуются конфигурацией в XML-формат и запаковываются в ZIP. То есть архивирование происходит не средствами 1С-конфигуратора, как традиционная выгрузка.

Загрузить данные в область

ОбщаяКоманда.ЗагрузитьДанныеВОбласть

Для появления в Администрирование-Сервис нужно через Конфигуратор в составе подсистемы НастройкаИАдминистрирование установить видимость.

Данные загружаются в выбранную область. До этого они должны быть выгружены в XML-формат.

Выводы

Не удалось запустить систему через задание разделителей в командной строке. Система отказалась работать из-за незарегистрированного пользователя в справочнике Пользователи. Добраться до справочника не получилось по той причине, что система не пускает пользователей с административными правами. Думаю, что этот сценарий предусматривает обязательную связь с 1CFresh.

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

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

Интересно было бы узнать о хитрой задумке авторов БСП относительно общих параметров сеансов для двух разделителей, если вызов будет с параметрами: «/Z-,+1», «/Z+1,+1» и «/Z+1,-».

Описание

Некоторые файлы базы данных могут быть разделены на два файла операционной системы (без учета индексных файлов). Такое разделение обычно применяется к файлам, содержащим быстро накапливающуюся информацию: расчетные листы , табель , путевые листы и т.п. Иными словами к первичным документам и накопителям.

  • Текущая часть. Содержит данные за последний, относительно небольшой период времени. Большинство пользователей Системы имеет право доступа только к текущей части. Файл операционной системы имеет расширение ASB KEY).
  • Архивная часть. Дополнение к текущей части. Вместе, архивная и текущая части, составляют полную базу данных. Доступ к архивной части регулируется назначением специальных прав . Файл операционной системы имеет расширение DAP (индексный файл – расширение KAP).

Преимущества регулярного проведения разделения файлов данных

  • Небольшой объем текущего резервирования данных .
  • Быстрое восстановление индексных файлов текущей части.

Недостатки размещения базы данных в двух частях

Стратегия разделения

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

  1. Выполнить первоначальное разделение файлов данных.
  2. Теперь текущие файлы (ASB) содержат информацию только за активный период.
  3. Выполнить сжатие файлов ASB с помощью утилиты SQD.
  4. Создать полную резервную копию базы данных .
  5. По прошествии активного периода, выполнить очередное разделение файлов данных.
  6. Перейти к пункту 2.

Для выполнения программ разделения файлов требуется:

  • Убедиться в наличии свободного места на диске.
  • Зарегистрироваться пользователем, входящим в группу AP_Admin или Eng.
  • Зайти в Систему.
    • Установить требуемый период.
    • Выполнить ДП разделения файлов (либо из меню "Сервис" – "Администратор" - "Перенос данных за период" - "В архивные половины", либо из списка ДП). Выполнение разделения производится без конфликтов и не мешает обычной работе пользователей. В настоящее время реализовано разделение файлов для следующих подсистем:
      • FrRWS Путевая документация . Рекомендуемый активный период – 3 месяца.
      • FrSal Зарплата . Рекомендуемый активный период – 1 год.
      • FrMDc Товарные документы . Рекомендуемый активный период – 3 года.

Применение утилиты SQD

  • Утилита SQD применяется для сжатия основного файла данных путем удаления записей, переброшенных в дополнительный файл или удаленных обычным способом. По умолчанию сжимаются файлы, в которых количество таких записей составляет 10 и более процентов.
  • Запускается из командной строки в корне директории (или диска), в которой размещается Система:
v32 -sqd <Имя_проекта>

Запуск АвтоПарк с доступом к архивным половинам

Запуск АвтоПарк с доступом к архивным половинам возможен только для администраторов и программистов проекта. Для входа в АвтоПарк с возможностью доступа к архивным половинам, необходимо запустить АвтоПарк из командной строки с ключом /A , либо с помощью ярлыка "АвтоПарк-Средства администратора-АвтоПарк с доступом к архивам".

Права пользователей на доступ к записям архивной половины

Права пользователей на чтение записей архивной половины

Права на чтение записей архивной половины устанавливаются такими же, как права на чтение записей текущей половины

Права пользователей на модификацию записей архивной половины

Права на модификацию записей архивной половины есть только у администраторов и программистов проекта