Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: БД для объектов с разным количеством параметров  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Vladimir A.K.
SERG1257
ЕЕ

Как расшифролвывается ЕЕ?
Энтерпрайз эдишен - топовая комплектация оракла.
Покупать пока действительно ничего не надо, большую часть можно делать на бесплатном XE (будут ограничения: 1 процессор, сколько-то гигов памяти и размер БД 11 гигов).
Разработку (до ввода в эксплуатацию) можно вести (вроде бы) на любой версии, а лицензию можно купить потом, при вводе в промышленную эксплуатацию. Но тут я в деталях не знаю, уточните лучше на оракловом форуме.
31 янв 14, 11:08    [15498948]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Vladimir A.K.
Вы таки считаете, что это должны быть две раздельные БД?
Это, как сейчас модно говорить, "best practice".
Причем, скорее всего, это даже будут два раздельных физических сервера.
31 янв 14, 11:14    [15498987]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
rockclimber
Энтерпрайз эдишен - топовая комплектация оракла.
Покупать пока действительно ничего не надо, большую часть можно делать на бесплатном XE (будут ограничения: 1 процессор, сколько-то гигов памяти и размер БД 11 гигов).

Спасибо.
Железка только какая под этот бесплатный ХЕ потребуется?
rockclimber
Причем, скорее всего, это даже будут два раздельных физических сервера.

Не пугайте меня сразу так сильно :)
31 янв 14, 11:58    [15499404]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Vladimir A.K.
rockclimber
Энтерпрайз эдишен - топовая комплектация оракла.
Покупать пока действительно ничего не надо, большую часть можно делать на бесплатном XE (будут ограничения: 1 процессор, сколько-то гигов памяти и размер БД 11 гигов).

Спасибо.
Железка только какая под этот бесплатный ХЕ потребуется?
Любая, оракл просто не будет использовать лишнее сверх этих ограничений.

Vladimir A.K.
Не пугайте меня сразу так сильно :)
Так от нагрузки же зависит. Моя первая "промышленная" БД, написанная мной на одном из первых мест работы, после года эксплуатации имела размер 64 мегабайта, что в 2010-м году, сами понимаете, было копейками. Сервер был на обычной офисной машине с 512 МБ оперативки, и мне ни разу не удалось написать осмысленный запрос, который бы работал дольше секунды. А на теперешнем месте у меня база несколько терабайт. Логично предположить, что в первом случае можно делать промышленную среду, тестовую, хранилише и кучу чего еще на одной железке, а на второй - не стоит. Ваш случай к какому ближе?
31 янв 14, 12:28    [15499679]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
йцуке
Member

Откуда:
Сообщений: 102
Vladimir A.K.
Для информации под аналитику одна таблица, в которой:
250 полей типа float - аналоговые входы.
250 полей типа smallint - дискретные входы\выходы.
И еще несколько служебных полей: время измерения, время записи в БД, идентификаторы типа АСУ (символьный), идентификатор объекта, на котором стоит АСУ (символьный) и т.п.

Для информации, хранящейся постоянно, другая таблица:
50 полей типа float, плюс служебная информация.

У каждого типа АСУ есть своя конфигурация, в которой описаны все входы-выходы. Причем конфигурация хранится в другом файле БД.

У одного АСУ м.б. 200 аналоговых каналов и 200 дискретных, у другого 100 и 100 соответственно, т.д.
У одного АСУ во вторую таблицу пишется 10 параметров, у второго 20.

В связи с этим таблицах с данными измерений (и в первой и второй) огромная избыточность. Большинство полей после вставки - NULL
И по факту имеется куча отдельных файлов БД, в которые заносится информация за месяц и делается кое-какая, на данный момент элементарная, обработка. Следующий месяц - следующий файл. И т.д.

1) В архиве нет смысла хранить все, что приходит из "поля". Разумно сохранять все значения 1 раз в час, к примеру, а в остальное время в базу писать только те значения, что изменились.
2) Для аналоговых каналов нет необходимости хранить все значения. Они обычно "дребезжат", и можно ввести зону нечувствительности, изменениями в рамках которой можно пренебречь. К примеру, для значений тока 32,521 А и 32,522 А вполне возможно отбросить последний разряд.
3)
Vladimir A.K.
250 полей типа smallint - дискретные входы\выходы.
В этих полях значения находятся в каждом бите числа, или это всего 250 бит (250 входов/выходов)? Если второе, то их можно упаковать.

Поищите описания работы СУБД, используемых для хранения тегов в АСУ ТП. К примеру, Wonderware Historian.
Кстати, требования в железу и СУБД, при использовании подходов, принятых в специализированных СУБД, средние. Тот же Wonderware еще 10 лет назад, если не ошибаюсь, гарантировал запись 100 000 тегов в сек. на своей базе, построенной на основе MS SQL 2000.
31 янв 14, 13:06    [15500012]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
йцуке
1) В архиве нет смысла хранить все, что приходит из "поля". Разумно сохранять все значения 1 раз в час, к примеру, а в остальное время в базу писать только те значения, что изменились.

Не получится. Тепловоз :) Подавляющее большинство измеряемых параметров постоянно изменяются.
Но дело не в этом. И то, что дискретные входы-выходы надо паковать в битовые поля и многое-многое другое я знаю.
Я описал, что есть сейчас: эдакий образчик "проектантского нигилизма" :)
А мне надо найти оптимальную структуру.
йцуке
Поищите описания работы СУБД, используемых для хранения тегов в АСУ ТП.

Хорошо. О чем речь представляю. Где-то дома даже сертификатик одной из СКАДА валяется. Она именно такими темпами пишет.
Но в структуру не вдавался.
31 янв 14, 13:33    [15500201]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
йцуке
Member

Откуда:
Сообщений: 102
Vladimir A.K.
йцуке
1) В архиве нет смысла хранить все, что приходит из "поля". Разумно сохранять все значения 1 раз в час, к примеру, а в остальное время в базу писать только те значения, что изменились.

Не получится. Тепловоз :) Подавляющее большинство измеряемых параметров постоянно изменяются.

В АСУ тоже подавляющее большинство параметров постоянно меняются. Подход с загрублением аналоговых параметров и сохранением только изменений позволяет хорошо сэкономить на объеме записываемых данных.
31 янв 14, 13:43    [15500292]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
йцуке
Member

Откуда:
Сообщений: 102
[quot Vladimir A.K.]
йцуке
Я описал, что есть сейчас: эдакий образчик "проектантского нигилизма" :)
А мне надо найти оптимальную структуру.

Спроектируйте нормализованную базу, проведите тесты, по результатам, при необходимости, денормализуйте.
31 янв 14, 13:48    [15500322]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
[quot йцуке]
Vladimir A.K.
В АСУ тоже подавляющее большинство параметров постоянно меняются. Подход с загрублением аналоговых параметров и сохранением только изменений позволяет хорошо сэкономить на объеме записываемых данных.

Уточню: значительно меняются :) В разы, порой на порядки.
йцуке
Спроектируйте нормализованную базу ...

Полез в гугль )))
31 янв 14, 14:19    [15500562]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Vladimir A.K.
йцуке
Спроектируйте нормализованную базу ...

Полез в гугль )))
Ох ты ж ё
Нормальная форма
На intuit.ru посмотрите лекции по основам реляционных БД
31 янв 14, 14:26    [15500612]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
rockclimber
Полез в гугль )))
Ох ты ж ё [/quot]
Не-не.
Не все так плохо :)
Оказалось, что все знакомо.
А вот с терминами, видать, слабоват на память :(
31 янв 14, 14:33    [15500671]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3525
Vladimir A.K.,

Все замечательно. Только непонятна цель все этой суеты. Ну допустим будете вы писать в БД данные из файлов. Это вроде как не проблема. Что дальше? Кто и какими данными будет пользоваться? Для чего весь этот движ создается?
На этапе разработки берите обычный десктоп с памятью 8+ Гиг. Для разработки вам за глаза хватит. Да, будет потеря в скорости. Но это не так критично. По крайней мере сможете понять какие объемы, узкие места и пр. Потом уже исходя из наработок купите железку под сервак.
31 янв 14, 14:43    [15500764]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
Злой Бобр
Все замечательно. Только непонятна цель все этой суеты. Ну допустим будете вы писать в БД данные из файлов. Это вроде как не проблема. Что дальше? Кто и какими данными будет пользоваться? Для чего весь этот движ создается?

Два момента:
То "хранилище" (название условно) в котором будет храниться ограниченный объем данных, но на постоянной основе - для статистики, отчетности, анализа каких-то эксплуатационных параметров.
Та, что временная - задумана для диагностики. Анализ, прогон через разные алгоритмы и выдача некоторого заключения по состоянию узлов и агрегатов. Точнее, по отклонениям от нормального состояния.
Кое-какие наработки уже, насколько знаю, есть. Вплоть до обучения нейронных сетей и прогону через них.
Злой Бобр
На этапе разработки берите обычный десктоп с памятью 8+ Гиг. Для разработки вам за глаза хватит. Да, будет потеря в скорости. Но это не так критично. По крайней мере сможете понять какие объемы, узкие места и пр. Потом уже исходя из наработок купите железку под сервак.

Да, спасибо. Cегодня ХЕ качать не стал. Но, что пойду по этому пути, уже определился.
31 янв 14, 14:52    [15500838]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3525
Vladimir A.K.,

Ну тогда я думаю будет достаточно отдельных таблиц в одной БД. Тут главное правильно спроектировать и проставить индексы. И железку брать с минимум 30% запасом, что б года 3 незаглядывать в железо.
31 янв 14, 15:01    [15500903]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
йцуке
Member

Откуда:
Сообщений: 102
Vladimir A.K.
Да, спасибо. Cегодня ХЕ качать не стал. Но, что пойду по этому пути, уже определился.

Неплохо бы было начать с проектирования. Посчитать общий объем базы, количество инсертов в секунду, прикинуть типовые запросы, определиться с индексами. По результатам выбрать сервер.
Скорей всего, запросы будут простенькими, а проблема будет только в размере таблиц, скорости вставки и скорости выборки. И, в результате, подойдет любой сервер, хоть MySQL.
Если для вас не проблема покупка оракла, то почему бы не посмотреть на промышленные решения, используемые в АСУ. Они оптимизированы именно под работу с большими массивами аналоговых/дискретных параметров.
И форум для вопросов вы неудачно выбрали. Спрашивать надо на форумах асушников. Для них это типовая задача.
31 янв 14, 17:25    [15501973]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
йцуке
Member

Откуда:
Сообщений: 102
Vladimir A.K.,

О, нашел древнюю, 1999 г., статью об асушном решении

Цитаты:
"Что делает IndustrialSQL Server?
  • Сохраняет некритичную во времени информацию в БД Microsoft SQL Server. Вся технологическая информация сохраняется в специальных таблицах расширения.
  • Поддерживает пропускную способность, т.е. обеспечивает сохранение огромных потоков информации с высокой разрешающей способностью.
  • Поддерживает целостность данных, то есть обеспечивает запись больших объемов информации без потерь.
  • Добавляет в Microsoft SQL Server свойства сервера реального времени.

    ...Уменьшение объема хранения IndustrialSQL Server позволяет хранить данные на пространстве, составляющем небольшую долю от соответствующего объема обычной РБД. Фактический размер требуемого для хранения производственной информации дискового пространства определяется размером и сущностью операций предприятия, а также интервалом хранения предыстории его функционирования. Например, двухмесячный архив предприятия с 4000 параметров, опрашиваемых с периодичностью от нескольких секунд до нескольких минут, будет занимать около 2 Мбайт дискового пространства. Используемый алгоритм упаковки информации является алгоритмом сжатия без потерь, сохраняющим высокое разрешение и качество данных."
  • 31 янв 14, 17:54    [15502225]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    SERG1257
    Member

    Откуда:
    Сообщений: 2790
    Танцуйте от печки. т.е от пользователей. Что они (пользователи) хотят, как хотят, и чем готовы заплатить. Посмотрите на демки имеющихся продуктов. Вот после того как в голове сложится образ идеального приложения (aka ТЗ) надо переходить к анализу запросов этого идеального приложения и проектированию структур подходящих этим запросам.
    Пока я вижу только "плач Ярославны"
    Vladimir A.K.
    В связи с этим таблицах с данными измерений (и в первой и второй) огромная избыточность. Большинство полей после вставки - NULL.
    Это детали реализации. В приличных СУБД NULL занимает минимальное количество места (а то и нисколько), стало быть нет никакой избыточности.

    Vladimir A.K.
    Вы таки считаете, что это должны быть две раздельные БД?
    У этих двух БД два принципиально разных режима работы. Первая держит "руку на пульсе" постоянно получая свежую инфу, но имеет фиксированные запросы и ограничена в глубину на несколько дней (недель, месяцев...), вторая обновляется (пополняется) максимум раз в день (в ночь), содержит ВСЕ данные, и запросы к ней "ведает только аллах". Вполне возможно, что вторая база будет реализована в виде архивированных плоских файлов, лежащих в дальнем пыльном забытом подвале и ждущих своего часа, пополняемых перед удалением данных из первой.
    31 янв 14, 18:12    [15502349]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    Vladimir A.K.
    Member

    Откуда:
    Сообщений: 34
    йцуке
    Неплохо бы было начать с проектирования. Посчитать общий объем базы, количество инсертов в секунду, прикинуть типовые запросы, определиться с индексами. По результатам выбрать сервер.

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

    Да, пока я не вижу сложных вопросов.
    Вопросы (точнее проблемы) пока скорее в моих знаниях возможностей СУБД и проектировании таких БД.
    йцуке
    И форум для вопросов вы неудачно выбрали. Спрашивать надо на форумах асушников. Для них это типовая задача.

    Может быть.

    Спасибо!
    1 фев 14, 14:29    [15504384]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    Vladimir A.K.
    Member

    Откуда:
    Сообщений: 34
    SERG1257
    Танцуйте от печки. т.е от пользователей. Что они (пользователи) хотят, как хотят, и чем готовы заплатить.

    Безусловно "танцую".
    Но пока трудновато. Бум работать :)
    SERG1257
    Пока я вижу только "плач Ярославны"
    Это детали реализации. В приличных СУБД NULL занимает минимальное количество места (а то и нисколько), стало быть нет никакой избыточности.

    Это радует.
    SERG1257
    У этих двух БД два принципиально разных режима работы. Первая держит "руку на пульсе" постоянно получая свежую инфу, но имеет фиксированные запросы и ограничена в глубину на несколько дней (недель, месяцев...), вторая обновляется (пополняется) максимум раз в день (в ночь), содержит ВСЕ данные, и запросы к ней "ведает только аллах".

    Не совсем так. Скорее всего я плохо объяснял.
    Но "утро вечера мудренее" и идея с двумя базами мне теперь понятна.
    1 фев 14, 16:43    [15504664]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    Vladimir A.K.
    Member

    Откуда:
    Сообщений: 34
    С вашего позволения я продолжу.

    1. Разделение "подзадач" на две БД (возможно с разными СУБД, физически разнесенных и т.п.) обдумано, обсуждено и утверждено.
    Сокращенная информация с длительным сроком хранения будет вынесена в отдельную БД.
    Спасибо за правильный вектор.

    2. Теперь по структуре БД, в которую будут импортироваться все измеренные данные за некоторый временной промежуток для обработки по неким аналитическим алгоритмам.

    Имеем: несколько конфигураций.
    Каждая i-я конфигурация содержит Ni аналоговых параметров и Mi дискретных параметров.
    Все-таки, что видится оптимальным:
    - общая таблица с количеством полей, равным максимальному количеству полей из всех конфигураций. С учетом подсказки SERG1257 о том, что хранение избыточных NULL не занимает большого места.
    - раздельные таблицы для каждой конфигурации.

    Интересует оценка как с точки зрения быстродействия и ресурсоемкости, так и удобства написания запросов, процедур etc.
    3 фев 14, 10:37    [15508684]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    Злой Бобр
    Member

    Откуда: Украина, Кривой Рог
    Сообщений: 3525
    Vladimir A.K.,

    Если с точки зрения максимально быстрого ввода то одна таблица. Если же учесть что структура может поменяться то этот вариант приведет к тому что нужно будет менять подход. Поэтому если структура будет постоянна то одна таблица, иначе несколько.
    3 фев 14, 14:13    [15510317]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    Vladimir A.K.
    Member

    Откуда:
    Сообщений: 34
    Злой Бобр
    Vladimir A.K.,
    Если с точки зрения максимально быстрого ввода то одна таблица. Если же учесть что структура может поменяться то этот вариант приведет к тому что нужно будет менять подход. Поэтому если структура будет постоянна то одна таблица, иначе несколько.

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

    Еще один плюс такого решения, который не отметил раньше.
    Аналоговые параметры могут быть как с плавающей точкой, так и целочисленные.
    Для некоторых параметров вообще байта достаточно.
    И мне как ножом по сердцу (или серпом по чему-то еще) было бы все хранить как float :)
    3 фев 14, 14:41    [15510562]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    Vladimir A.K.
    Member

    Откуда:
    Сообщений: 34
    Детский вопросик.

    К теме проектирования БД отношение, впрочем, имеет :)

    Что посоветуете для прорисовки графической структуры БД?
    3 фев 14, 14:47    [15510618]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    SERG1257
    Member

    Откуда:
    Сообщений: 2790
    Vladimir A.K.
    Интересует оценка как с точки зрения быстродействия и ресурсоемкости, так и удобства написания запросов, процедур etc.
    Опять же танцуйте от печки. Определитесь с запросами и подгоняйте структуру под удобство/скорость запросов. Если у вас популярный запрос - выведите мне состояние объекта ХХХ на время ЧЧ.ММ.СС, то собирание состояния объекта по параметрам может занимать слишком много времени. Дешевле собрать ее один раз во время загрузки. Здесь 15489997 я приводил список моих претензий к EAV структуре.
    Злой Бобр
    Если же учесть что структура может поменяться то этот вариант приведет к тому что нужно будет менять подход
    А вот и неправда. Добавить поле ничуть не сложнее (главное не наткнутся на ограничение на количество полей). Другое дело если пользователю не надо (редко требуется) разворачивать состояние объекта "в строчку" (например каждый параметр имеет свою временную метку) тогда удобнее хранить так как запрашивается. Возможен также и гибридный подход - главная таблица об объекте с параметрами "в строчку", плюс несколько дополнительных с параметрами "в столбик".

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

    Далее - дата-время съема параметра для вашей структуры будет ключевым полем (первым полем первичного ключа). По этому полю надо будет обязательно кластеризовать (в Оракле это IOT) чтобы упростить очистку устаревших данных.
    3 фев 14, 18:05    [15512126]     Ответить | Цитировать Сообщить модератору
     Re: БД для объектов с разным количеством параметров  [new]
    йцуке
    Member

    Откуда:
    Сообщений: 102
    Vladimir A.K.
    1. Разделение "подзадач" на две БД (возможно с разными СУБД, физически разнесенных и т.п.) обдумано, обсуждено и утверждено.
    Сокращенная информация с длительным сроком хранения будет вынесена в отдельную БД.

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

    Vladimir A.K.
    Имеем: несколько конфигураций.
    Каждая i-я конфигурация содержит Ni аналоговых параметров и Mi дискретных параметров.
    Все-таки, что видится оптимальным:
    - общая таблица с количеством полей, равным максимальному количеству полей из всех конфигураций. С учетом подсказки SERG1257 о том, что хранение избыточных NULL не занимает большого места.

    Попробуйте загрузить, и оцените рост базы. Было бы интересно посмотреть. Загрузка ежесекундных данных один-в-один, и без оптимизаций.
    Vladimir A.K.
    - раздельные таблицы для каждой конфигурации.

    Если потребуется сравнивать параметры разных конфигураций, может быть неудобно.
    3 фев 14, 19:44    [15512607]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
    Все форумы / Проектирование БД Ответить