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

Откуда:
Сообщений: 34
Добрый день.
Пытаюсь найти решение для следующей задачи.

Есть объекты. Нескольких типов.
Количество типов: единицы, потом, возможно, десятки.
У них измеряются (практически постоянно) некие параметры. Аналоговые и дискретные.
У каждого типа перечень и количество измеряемых параметров разные. Подмножества конечно пересекаются, но это мало что меняет.
Суммарное количество измеряемых параметров для одного типа объекта: сотни.
Частота измерений 1-2 раза в секунду.
Соответственно, количество записей большое. Я бы даже сказал, очень большое.

Предполагается два "хранилища" (пока условно назову так):
1. Для постоянно хранимых данных. Будет содержать ограниченное (небольшое) количество измеряемых параметров. Но опять-таки, для каждого типа объекта, количество и перечень - свои.
Здесь будут храниться данные из всех измерений.
Обращение к данным - периодически. Редко и с небольшим количеством выбираемых полей. Что-то типа статистики.
Возможно, со временем, данные старше некоторого срока будут бэкапиться и удаляться.
2. Временно хранимые данные. Сюда на некоторое время, необходимое для обработки должна сливаться вся измеренная информация.
После обработки данные будут удаляться.

Никак не могу придумать, каким образом грамотно организовать структуру такого вида.

Пока что пришло на ум:
1. Общая таблица записей "измерений". Будет содержать:
- тип объекта
- его номер
- дата-время записи
2. На каждый тип объекта создаются две таблицы, ссылающиеся на первую:
а). С данными постоянного хранения.
б). С данными временного хранения, в поля которой не будут включены поля из таблицы "а".

Насколько правилен и удобен такой подход?
Или есть уже готовые решения для таких задач, а я пытаюсь "изобрести велосипед"?

Заранее признателен за помощь.

P.S. На данный момент (разработка - отработка) будет использована Firebird.
В дальнейшем, скорее всего, другая СУБД.
30 янв 14, 10:37    [15492835]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
Мне одному кажется, что это уже 3-й топик про eav за эту неделю? у писателей универсальных систем посленовогоднее обострение? поищите по слову eav на форуме, а для трэша почитайте свежак этой недели.
30 янв 14, 14:04    [15494565]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3524
Shtock,

Ты не одинок. Автор заморачивается структурой в то время как сначала нужно выбрать субд которая потянет подобный объем на запись. Ну и ладно ...
30 янв 14, 14:28    [15494738]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
Shtock
Мне одному кажется, что это уже 3-й топик про eav за эту неделю? у писателей универсальных систем посленовогоднее обострение? поищите по слову eav на форуме, а для трэша почитайте свежак этой недели.

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

Откуда:
Сообщений: 34
Злой Бобр,
Заморачиваюсь.
Но, во-первых, боюсь, если начну задавать его в этом разделе, буду неправильно понят :)
Во-вторых, выбор и приобретение потребуют некоторого времени. А кое-какие пробы и наработки хотелось бы начать делать сейчас.
P.S. Таки задам.
Что Вы посоветуете?
30 янв 14, 14:51    [15494923]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
_мод
Guest
Vladimir A.K.
Насколько правилен и удобен такой подход?
Или есть уже готовые решения для таких задач, а я пытаюсь "изобрести велосипед"?

Каждая задача в чем-то оригинальна. Ваше решение правильно. Никакого eav.
30 янв 14, 14:58    [15494969]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3524
Vladimir A.K.
Что Вы посоветуете?

Смотрите в сторону DB2 или Oracle. Первый вариант шутрее в плане записи, второй медленнее но имеет больший функционал в плане администрирования и анализа.
30 янв 14, 15:04    [15495010]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
Злой Бобр, спасибо.
В принципе смотрю в сторону Oracle.
Первую в глаза не видел. Со второй несколько лет общался.
Но не как админ или проектировщик. Просто, в основном, пользовался: запросы, вьюверы и т.п. Иногда инициировал некоторые изменения в структуре.

Как проектировщик опыта нет. Кроме мелких десктопных решений.
Вот сейчас новый для себя термин услышал: EAV.
Я конечно уже гугль уже открыл. Но все же:
- та структура, которую описал, EAV или с точностью наоборот?
- прекрасно знаю, что лучший помощник: поиск по форуму. Но т.к. не владею терминами, просьба подсказать, по каким ключевым словам искать-то то, чего добиваюсь.
30 янв 14, 15:19    [15495134]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

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

Приведите пример, т.к. честно говоря я немного непонял структуру. Т.е. объекты, типы, ... замените на конкретные данные. Ну например: сейсмодатчики, каждый датчик считывает 30 показаний в секунду, ... Так можно будет более четко дать направление куда копать.
30 янв 14, 15:31    [15495261]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
Злой Бобр
Vladimir A.K.,

Приведите пример, т.к. честно говоря я немного непонял структуру. Т.е. объекты, типы, ... замените на конкретные данные. Ну например: сейсмодатчики, каждый датчик считывает 30 показаний в секунду, ... Так можно будет более четко дать направление куда копать.

Попробую.

Частота измерений к делу отношения не имеет.
Измерение производит некоторая АСУ.

Измеренные данные АСУ записывает в файлы.
Частота записей: 1-2 раза в секунду.

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

Имеется несколько типов таких АСУ.
Каждый тип АСУ стоит на N-ном количестве объектов, которым АСУ управляет.

Структура данных одного типа АСУ (для примера):
- 101 аналоговый канал (часть данных может быть представлена как целочисленные, остальные - с плавающей точкой).
- 160 дискретных входов.
- 48 дискретных выходов.
- время записи.

У остальных типов АСУ - похоже. Но количество аналоговых каналов и дискретных входов-выходов отличается.
30 янв 14, 15:52    [15495464]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Vladimir A.K.
Во-вторых, выбор и приобретение потребуют некоторого времени. А кое-какие пробы и наработки хотелось бы начать делать сейчас.
Ну так начинайте, любая платная СУБД имеет ознакомительную версию, которая лежит прямо на сайте производителя. У оракла например есть образ системы для виртуальной машины, где уже готовая ОС с установленным ораклом и кучей средств разработки.
30 янв 14, 16:00    [15495524]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

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

Да EAV вам в помощь, судя по примеру (хотя до меня так и недошло толком).
30 янв 14, 16:05    [15495559]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51752

Vladimir A.K.
Предполагается два "хранилища" (пока условно назову так):

Советую: выбирайте для этих хранилищ разные СУБД. И ни в коем случае не используйте
для второго Firebird.

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 34
Dimitry Sibiryakov
Vladimir A.K.
Предполагается два "хранилища" (пока условно назову так):

Советую: выбирайте для этих хранилищ разные СУБД. И ни в коем случае не используйте
для второго Firebird.

Почему разные?
"Хранилища" - понятие условное.
Предполагалась пара таблиц на каждый тип АСУ.
30 янв 14, 16:21    [15495644]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51752

Vladimir A.K.
Почему разные?

Потому что требования к СУБД у них диаметрально противоположные.

Posted via ActualForum NNTP Server 1.5

30 янв 14, 16:32    [15495724]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3524
Dimitry Sibiryakov,

Оракл вполне справится по функционалу. И поскольку данные уже в виде файла для импорта даже MS SQL потянет. Вопрос только в железе. Сервер начального уровня даже и рядом нестоял. Так что по железу это отдельная тема. Но автор уже сейчас может спокойно лепить таблицы и писать скрипты.
30 янв 14, 17:26    [15496073]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51752

Злой Бобр
Оракл вполне справится по функционалу.

Да, но для беспроблемного удаления первички нужно секционирование, а это уже ЕЕ редакция.

Posted via ActualForum NNTP Server 1.5

30 янв 14, 17:29    [15496103]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
SERG1257
Member

Откуда:
Сообщений: 2785
Ищите по форуму по слову датчики.
Краткий пересказ:
У вашей задачи есть минимум три слоя
1 Прием оперативных данных - СУБД очень не любит поток одиночных инсертов. СУБД вполне может лечь, куда тогда будут поступать данные. Вам потребуется буфер например в виде плоского файла из которого оптом данные заливаются в СУБД по таймеру.
2 Оперативная база, например за несколько дней
3 Аналитика - смотрите в сторону хранилища, DWH, OLAP и т.д.

Dimitry Sibiryakov
Да, но для беспроблемного удаления первички нужно секционирование, а это уже ЕЕ редакция.
Секционирование на базе вьюх вполне делается без ЕЕ.
30 янв 14, 18:02    [15496327]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Iliyam
Member

Откуда:
Сообщений: 112
SERG1257,

удалять тоже через view будете? а если таблица начнет разрастаться, несмотря на то, что вы регулярно удаляете устаревшие данные? хорошо, если сам себе и программист и админ, а то разное бывает...
30 янв 14, 18:43    [15496551]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3524
Dimitry Sibiryakov
Злой Бобр
Оракл вполне справится по функционалу.

Да, но для беспроблемного удаления первички нужно секционирование, а это уже ЕЕ редакция.

Незная точных задач сложно что-то утверждать. Возможно что для отображения вполне хватит и вьюх. А насчет удаления - я б пока незаморачивался. На этапе импорта можно использовать временные таблицы. Ну а дальше нужно уже знать ТЗ автора. Гадать бесполезно.
30 янв 14, 18:51    [15496585]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
SERG1257
Member

Откуда:
Сообщений: 2785
Iliyam
удалять тоже через view будете?
Конечно

create table new_table as select .....

alter view allTables
select * from one_table
union all
select * from new_table

суть в том что вся предварительная работа идет в фоне, а для клиента это мгновенно через alter view
30 янв 14, 19:01    [15496634]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Iliyam
Member

Откуда:
Сообщений: 112
SERG1257,

так речь была о двух БД, в одной из которых данные будут удаляться.
или вы собираетесь делать, допустим, каждый день create new_table... drop old_table... alter view... ? ну-ну
30 янв 14, 19:09    [15496676]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
Огромное спасибо всем. Принявшим участие в обсуждении.
Я с Вашего позволения, попробую описать ситуацию подробнее.

Для начала маленькое лирическое отступление о текущем состоянии дел.

Я здесь недавно.
В настоящий момент здесь уже есть кое-какие "наработки" по обсуждаемой теме. И идея создания общей БД не нова.
Есть эксплуатируемые (по всей стране) объекты с АСУ на них. АСУ пишут информацию в файлы.
Более того. Есть некая "БД". Точнее, есть некоторая структура БД. Реализована в Firebird (отдельная песня).
Структура БД - :'(

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

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

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

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

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

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

Все это работает ужасно медленно, информация вставляется ужасно долго. Информация за месяц на десктопе вставляется пару суток :(

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

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

ТЗ нет. Есть "намерения".
Вот я и пытаюсь преобразовать эти намерения в конкретные решения.
31 янв 14, 10:03    [15498493]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
Теперь по серверу и СУБД.
Вопрос о том, что может нужно ориентироваться на что-то серьезное встал сразу.
На него я ответил: "Ребята, Вы сами не можете мне полностью объяснить, какую задачу нужно решить. Давайте сперва более-мене разберемся в задаче и под нее подберем СУБД"
Можно сейчас что-то купить. И даже если не ошибся с выбором, то деньги лягут мертвым грузом.
Потому как надо будет определиться со структурой, сделать кое-какие наработки, подготовиться профессионально (возможно обучение пройти) etc.

Из более-мощных СУБД я имел дело с Oracle (уже говорил об этом) и, перед этим, лет шесть работал в телекоммуникационной компании с MS SQL Server 6.5, 7.0, 2000.
Других и в глаза не видел.
Ориентируюсь на Oracle. Ваши рекомендации вроде как одобряют выбор.
Но все равно, покопаю пока в этом направлении.

По железу: пока не представляю, что нужно.
Термин "сервер начального уровня" применительно к такой СУБД мне ни о чем не говорит.
Если кто подскажет, буду благодарен.


Ну и отступление про firebird. Здесь почти все пишут на Delphi. Причем 2002-м. С БД работа большинства не связана, но полагаю, что выбор firebird-а обусловлен борландовскими корнями интербейза.

Тут еще небольшая задачка есть. Базенка по ремонтам для локальной сети. Маленькая. Транзакции редкие.
Ее пока буду делать на MySQL, с web-клиентами. Но это так, для справки.
31 янв 14, 10:23    [15498609]     Ответить | Цитировать Сообщить модератору
 Re: БД для объектов с разным количеством параметров  [new]
Vladimir A.K.
Member

Откуда:
Сообщений: 34
SERG1257
Ищите по форуму по слову датчики.

Спасибо. Поищу.
SERG1257
Краткий пересказ:
У вашей задачи есть минимум три слоя
1 Прием оперативных данных - СУБД очень не любит поток одиночных инсертов. СУБД вполне может лечь, куда тогда будут поступать данные. Вам потребуется буфер например в виде плоского файла из которого оптом данные заливаются в СУБД по таймеру.

Что имеется ввиду?
Бодаясь с имеющейся firebird-овской базой, разбираясь с импортом, пробовал хоть как-то убыстрить процесс вставки данных.
Множественной вставки ФБ не знает. Из-за огромного количества полей и ограничения длины пакета в 64к, много строк через EXECUTE BLOCK не вставишь.
В одном из вариантов попробовал сперва делать вставку в таблицы внешних файлов а из них одним select-ом уже в таблицу БД.
Вы не что-то подобное подразумевали?
SERG1257
2 Оперативная база, например за несколько дней
3 Аналитика - смотрите в сторону хранилища, DWH, OLAP и т.д.

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

Как расшифролвывается ЕЕ?
31 янв 14, 10:36    [15498714]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить