Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Добрый день.
Нужно мнение знатоков. Задача следующая: есть таблица со столбцами TagID, Time bigint, Ms int, Value float, Status int (Time - время в секундах с 01.01.1970 00:00:00 - это так к сведению). Таблица сторонней разработки (Siemens) и стороннее ПО (все того же Siemens) в нее пишет данные, считываемые периодически с контроллера (через OPC-сервер). В этой же таблице лежат расчетные данные, отличаются они другими ИД тегов (так задумал сторонний разработчик и лезть сюда нельзя).
Моя задача - сделать фиксацию периодов, т.е. чтобы после того, как пользователь зафиксировал период данные не подвергались изменению ни при каких обстоятельствах (вариант рукоблудства сисадмина не рассматривать).
Так вот, первое, что пришло в голову - задать определенный статус у этих значений, но тут наткнулся на непонимание Siemens. Как они написали в официальном ответе на мой запрос, у них в системе не предусмотрен статус значений, который переводил бы их в разряд ReadOnly, поэтому они не могут гарантировать сохранность этих данных (возможно есть сервисы, которые что-то делают с данными).
Тогда задумался насчет идеи сделать свою таблицу, близкую по структуре, в которую перемещать рассчитанные данные из закрытых периодов.
Подскажите пожалуйста, стоит ли партицировать свою таблицу по дате, если да, то какой диапазон дат помещать в одну партицию? В месяц в таблицу будет падать около 111600 записей (по 24*31 для каждого из 150 тегов). Как в таком случае лучше построить индекс?
Пользователям достаточно критично быстродействие. Запросы строятся по разному набору тегов и по разным периодам.
Заранее благодарен за советы.

P.S. СУБД - MS SQL Server 2005 SP4
22 ноя 11, 11:17    [11636252]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Так какая задача ?
- запретить изменение данных, старше определенной даты
- или оптимизация запросов за счет партицирования
22 ноя 11, 11:23    [11636294]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Glory,
И та и другая.
22 ноя 11, 11:25    [11636304]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Glory,
А если точнее, то сделать запрет на изменение данных, старше определенной даты с наименьшим временем выполнения запросов.
22 ноя 11, 11:28    [11636328]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гришков Максим
Glory,
А если точнее, то сделать запрет на изменение данных, старше определенной даты с наименьшим временем выполнения запросов.

Триггер ?
22 ноя 11, 11:31    [11636344]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Glory,
Зачем триггер. Я зафиксированные данные перенесу в отдельную таблицу. Пользователю дам права только на чтение. Сам процесс переноса буду делать JOB'ом, чтобы не заставлять пользователя ждать лишний раз.
22 ноя 11, 11:41    [11636410]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
Гришков Максим
Зачем триггер.
Затем, что это оптимальное решение вашей задачи.

Но конечно можно придумать ещё много вариантов.
22 ноя 11, 11:42    [11636419]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Гришков Максим
Glory,
Зачем триггер. Я зафиксированные данные перенесу в отдельную таблицу. Пользователю дам права только на чтение. Сам процесс переноса буду делать JOB'ом, чтобы не заставлять пользователя ждать лишний раз.
Триггеры-то проще сделать. Нет?
INSTEAD OF, к примеру
22 ноя 11, 11:43    [11636426]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гришков Максим
Зачем триггер.

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

Гришков Максим
Я зафиксированные данные перенесу в отдельную таблицу. Пользователю дам права только на чтение. Сам процесс переноса буду делать JOB'ом, чтобы не заставлять пользователя ждать лишний раз.

Мммм, а где тут партицирование ?
22 ноя 11, 11:44    [11636432]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Glory,
Партицирование планирую делать на той, куда буду переносить фиксированные данные. Стоит или нет?
22 ноя 11, 11:56    [11636517]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
iap,
Можно и триггер - это уже вопрос реализации. Я же хотел спросить будет ли толк от партицирования этой таблицы, если да, то какими диапазонами дат дробить партиции, ну и как лучше будет сделать индекс.
22 ноя 11, 12:02    [11636581]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гришков Максим
Я же хотел спросить будет ли толк от партицирования этой таблицы,

А ваши запросы будут использовать условие, на основании которого будет сделано партицирование ?
22 ноя 11, 12:07    [11636626]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Glory,
Патриции будут делиться по датам, запросы строятся по дате и тегу. Я бы сделал партиции по кварталу и индекс внутри партиции по тегу и дате. Правильно? Или стоит размер партиции сделать поменьше?
22 ноя 11, 12:11    [11636680]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
mike909
Member

Откуда:
Сообщений: 662
Гришков Максим
Glory,
Патриции будут делиться по датам, запросы строятся по дате и тегу.

Запросы строго по дате (с точностью до секунды) или всетаки интервал ?
Гришков Максим
Я бы сделал партиции по кварталу и индекс внутри партиции по тегу и дате. Правильно? Или стоит размер партиции сделать поменьше?

Если интервал, то какой обычно ? Квартал ? или может быть месяц, день ?
22 ноя 11, 12:18    [11636736]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
mike909
Запросы строго по дате (с точностью до секунды) или всетаки интервал ?
Интервал.

mike909
Если интервал, то какой обычно ? Квартал ? или может быть месяц, день ?
Интервал от часа до года: час, смена (8 часов), день, неделя, месяц, квартал, год. Пользователь сам задает с какой даты и по какую он хочет посмотреть. В 80% его интересует месяц назад, считая от текущей даты.
22 ноя 11, 12:22    [11636769]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гришков Максим
В 80% его интересует месяц назад, считая от текущей даты.

Так это не партицирование, если текущая дата-30 дней
Партицирование - это когда строго январь или март, например
22 ноя 11, 12:25    [11636793]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Glory
Так это не партицирование, если текущая дата-30 дней
Партицирование - это когда строго январь или март, например
Это я указал, как в 80% случаев будут строиться запросы. Как уже говорил, партиции предполагал делить по кварталам. Т.е. в случае запроса за месяц, будет производиться выборка либо из 1ой, либо из 2х партиций. За день, неделю и т.п. - из одной. За год - из четырех. Я правильно понимаю?
22 ноя 11, 12:29    [11636814]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
mike909
Member

Откуда:
Сообщений: 662
Гришков Максим
Пользователь сам задает с какой даты и по какую он хочет посмотреть.

С этим никакое секционирование не поможет
22 ноя 11, 12:29    [11636819]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
mike909
Member

Откуда:
Сообщений: 662
Гришков Максим
Glory
Так это не партицирование, если текущая дата-30 дней
Партицирование - это когда строго январь или март, например
Это я указал, как в 80% случаев будут строиться запросы. Как уже говорил, партиции предполагал делить по кварталам. Т.е. в случае запроса за месяц, будет производиться выборка либо из 1ой, либо из 2х партиций. За день, неделю и т.п. - из одной. За год - из четырех. Я правильно понимаю?

Правильно ...
И на счет индекса (TagID, Time ) тоже, при таком разбросе интервалов в запросах ...
22 ноя 11, 12:34    [11636858]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
mike909
И на счет индекса (TagID, Time ) тоже, при таком разбросе интервалов в запросах ...
Ок, спасибо.
Ну и еще раз задам свой вопрос: разбиение партиций по кварталам в данном случае будет оправдано или лучше делить помесячно?
22 ноя 11, 12:44    [11636958]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
mike909
Member

Откуда:
Сообщений: 662
Гришков Максим
mike909
И на счет индекса (TagID, Time ) тоже, при таком разбросе интервалов в запросах ...
Ок, спасибо.
Ну и еще раз задам свой вопрос: разбиение партиций по кварталам в данном случае будет оправдано или лучше делить помесячно?

И еще раз отвечу - при таком разбросе временных интервалов, особого смысла ориентироваться на деление по времени - нет.
Наверное имеет смысл делить из расчета на кол-во записей в секции.
Гришков Максим
В месяц в таблицу будет падать около 111600 записей (по 24*31 для каждого из 150 тегов)

У Вас не такой и большой объем в месяц ...
22 ноя 11, 12:53    [11637028]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация периоов  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
mike909,

OK. Спасибо большое, понял.
22 ноя 11, 12:56    [11637054]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить