Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Один источник данных и несколько потребителей с доп. атрибутами к данным / 19 сообщений из 19, страница 1 из 1
01.02.2013, 13:03
    #38133553
Pavel V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Прошу помочь со следующей задачей. Есть система, в которую поступают телеметрические данные (по сути это одна табличка в БД с полями id, value и еще несколькими служебными). И есть несколько потребителей этих данных, которые преобразуют их в какой-то формат и пересылают дальше по собственному алгоритму. Мне необходимо отслеживать статус каждой записи - передана/не передана. В случае, когда потребитель данных был один, решалось всё простым добавлением поля status, в которое я записывал некоторое значение в случае успешной передачи. Когда же потребителей несколько, каждый из них должен вести собственный учет переданных данных, причем энергонезависимо, т.е. в БД.

Первое, что приходит в голову - это добавить в таблицу несколько полей status, и каждый из потребителей использует свое поле. Но такое решение мне не нравится, т.к. теряется гибкость (ограничение кол-ва потребителей).

Подскажите, пожалуйста, как правильно решается такая проблема?
...
Рейтинг: 0 / 0
01.02.2013, 13:07
    #38133565
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.,

через дополнительную табличку статусов по потребителям и внешние ключи с транзакционностью операций по всей куче таблиц. В чём проблема? :)
...
Рейтинг: 0 / 0
01.02.2013, 13:08
    #38133568
шм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
создай таблицу id_записи, id_потребителя, status
...
Рейтинг: 0 / 0
01.02.2013, 13:21
    #38133603
Pavel V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Ребят, спасибо! Примерно так себе и представлял, но не мог до конца в голове оформить :)

Получается, на стадии приема данных надо создавать помимо основной записи соответствующие записи в таблице статусов для каждого потребителя?
...
Рейтинг: 0 / 0
01.02.2013, 13:30
    #38133620
шм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
не обязательно. лучше когда что-то сделаешь с записью тогда и записать в табл. статусов ее состояние
...
Рейтинг: 0 / 0
01.02.2013, 13:31
    #38133628
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.Прошу помочь со следующей задачей. Есть система, в которую поступают телеметрические данные (по сути это одна табличка в БД с полями id, value и еще несколькими служебными). И есть несколько потребителей этих данных, которые преобразуют их в какой-то формат и пересылают дальше по собственному алгоритму. Мне необходимо отслеживать статус каждой записи - передана/не передана. В случае, когда потребитель данных был один, решалось всё простым добавлением поля status, в которое я записывал некоторое значение в случае успешной передачи. Когда же потребителей несколько, каждый из них должен вести собственный учет переданных данных, причем энергонезависимо, т.е. в БД.

Первое, что приходит в голову - это добавить в таблицу несколько полей status, и каждый из потребителей использует свое поле. Но такое решение мне не нравится, т.к. теряется гибкость (ограничение кол-ва потребителей).

Подскажите, пожалуйста, как правильно решается такая проблема?
Решается путем ясной формулировки задачи. Ее пока нет.
Если речь об одном признаке, который Вы назвали status, то достаточно просто объявить связь между двумя типами сущностей Измерение и Потребитель.
Приходится еще раз всем, и, в первую очередь, модераторам предложить: переименуйте раздел в "Проектирование реляционных БД". Потому что, все здесь мыслят исключительно "табличками"))
...
Рейтинг: 0 / 0
01.02.2013, 13:49
    #38133673
Pavel V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
шмне обязательно. лучше когда что-то сделаешь с записью тогда и записать в табл. статусов ее состояние
А как тогда будет выглядеть запрос со стороны потребителя к базе данных для получения всех записей, которые не были обработаны этим потребителем?

БредятинаРешается путем ясной формулировки задачи. Ее пока нет.
Вроде постарался подробно описать задачу, что именно не понятно?

БредятинаЕсли речь об одном признаке, который Вы назвали status, то достаточно просто объявить связь между двумя типами сущностей Измерение и Потребитель.
Да, признак один. Потребитель здесь скорее не сущность, а некая программа. Т.е. упрощенно можно представить так: одна программа принимает данные и складывает в базу, и несколько других программ подключается к той же базе и забирает эти данные для последующей обработки. И должна помечать уже обработанные.

БредятинаПриходится еще раз всем, и, в первую очередь, модераторам предложить: переименуйте раздел в "Проектирование реляционных БД". Потому что, все здесь мыслят исключительно "табличками"))
Прошу не сердиться, я хоть и программист, но с базами приходится иметь дело редко и пока нет возможности разобраться в этом вопросе, т.к. других заморочек хватает.
...
Рейтинг: 0 / 0
01.02.2013, 14:26
    #38133756
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.шмне обязательно. лучше когда что-то сделаешь с записью тогда и записать в табл. статусов ее состояние
А как тогда будет выглядеть запрос со стороны потребителя к базе данных для получения всех записей, которые не были обработаны этим потребителем?

Как выглядеть - с left join'ом ;)
Не создавать связи сразу - это Вам правильно советуют. Иначе генератор данных должен "знать", сколько и каких потребителей данных будет - а это совершенно не его дело.
...
Рейтинг: 0 / 0
01.02.2013, 15:22
    #38133854
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.шмне обязательно. лучше когда что-то сделаешь с записью тогда и записать в табл. статусов ее состояние
А как тогда будет выглядеть запрос со стороны потребителя к базе данных для получения всех записей, которые не были обработаны этим потребителем?
Вы начали формулировать задачу, постепенно. И один из пунктов гласит:
n. Каждое измерение должно быть обработано каждым потребителем.
Pavel V.БредятинаРешается путем ясной формулировки задачи. Ее пока нет.Вроде постарался подробно описать задачу, что именно не понятно?
См. выше, и это, по всей вероятности, не все.
Pavel V.БредятинаЕсли речь об одном признаке, который Вы назвали status, то достаточно просто объявить связь между двумя типами сущностей Измерение и Потребитель.
Да, признак один. Потребитель здесь скорее не сущность, а некая программа.
Нет. Вы хотите сказать что тип сущности Потребитель - это программа. Можно назвать этот тип сущности Программа-потребитель, например.
Pavel V.Т.е. упрощенно можно представить так: одна программа принимает данные и складывает в базу, и несколько других программ подключается к той же базе и забирает эти данные для последующей обработки. И должна помечать уже обработанные.
Опять не формально)
n. Каждое Измерение должно быть обработано каждой Программой-потребителем.
Вероятно, пока, так.
Pavel V.БредятинаПриходится еще раз всем, и, в первую очередь, модераторам предложить: переименуйте раздел в "Проектирование реляционных БД". Потому что, все здесь мыслят исключительно "табличками"))
Прошу не сердиться, я хоть и программист, но с базами приходится иметь дело редко и пока нет возможности разобраться в этом вопросе, т.к. других заморочек хватает.
Я написал модератору) Зачем мне сердиться?)
...
Рейтинг: 0 / 0
01.02.2013, 15:24
    #38133860
Ares_ekb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
шмсоздай таблицу id_записи, id_потребителя, statusЕсли статус - передано/не передано, то этот столбец не нужен. Сам факт наличия в этой таблице записи уже должен говорить о том, что запись передана. (пояснения наверное больше для ТС :-)

Соответственно этот вопрос отпадает:
Pavel V.Получается, на стадии приема данных надо создавать помимо основной записи соответствующие записи в таблице статусов для каждого потребителя?
...
Рейтинг: 0 / 0
01.02.2013, 15:31
    #38133876
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.А как тогда будет выглядеть запрос со стороны потребителя к базе данных для получения всех записей, которые не были обработаны этим потребителем?
В текущей постановке такой запрос не нужен. Так же не нужен и тип сущности Обработка измерений, который Вы хотите моделировать с помощью третьей таблицы.
При создании Измерения создается связь со всеми Программами-потребителями.
При успешной обработке связь удаляется:)
...
Рейтинг: 0 / 0
01.02.2013, 15:53
    #38133927
474
474
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
БредятинаОпять не формально)
n. Каждое Измерение должно быть обработано каждой Программой-потребителем.
Вероятно, пока, так.

Хм... А откуда это следует? Из описания задачи не выводится, что каждый Потребитель обрабатывает каждое Изменение.
...
Рейтинг: 0 / 0
01.02.2013, 16:28
    #38134012
Pavel V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Попробую описать еще раз задачу.

1. Данные приходят и попадают в БД, после этого они не изменяются никогда - это результаты измерений с кучи однотипных приборов.
2. Есть несколько (пока не известно сколько) обработчиков этих данных. Каждый обработчик должен периодически забирать новые (после последнего запроса) данные и обрабатывать их, каким-то образом запоминая какие он уже обработал.

Пока писал родилась идея. Если все измерения попадают в таблицу с автоматически инкрементирующимся идентификатором, то можно просто в каждом обработчике запоминать последний обработанный id. В этом случае, правда, с исходными данными только линейно работать получится... В случае использования дополнительной таблицы можно произвольные выборки делать.
...
Рейтинг: 0 / 0
01.02.2013, 16:54
    #38134066
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
> несколько (пока не известно сколько) обработчиков этих данных

Вы, наверное, хотели написать "подписчиков"?

> в каждом обработчике запоминать последний обработанный id

Совершенно верно. Подписчик, время последнего сеанса, последний отданный идентификатор.

> с исходными данными только линейно работать получится

В смысле "линейно работать"? Отдать больше, чем есть в базе данных, вы не можете. Что с этими данными дальше будет делать подписчик - не ваша забота, насколько я понимаю.

> можно произвольные выборки делать

Вам и сейчас никто этого делать не запрещает.
...
Рейтинг: 0 / 0
01.02.2013, 17:37
    #38134142
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
474БредятинаОпять не формально)
n. Каждое Измерение должно быть обработано каждой Программой-потребителем.
Вероятно, пока, так.

Хм... А откуда это следует? Из описания задачи не выводится, что каждый Потребитель обрабатывает каждое Изменение.
Описания задачи нет, и это может следовать только из того, что говорит в разных сообщениях автор:) Я предложил ему гипотетический n-ый пункт из будущего описания задачи.
...
Рейтинг: 0 / 0
01.02.2013, 17:47
    #38134162
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.Попробую описать еще раз задачу.
1. Данные приходят и попадают в БД, после этого они не изменяются никогда - это результаты измерений с кучи однотипных приборов.
Слова "куча", "однотипны" и "приборы" вносят серьезную путаницу. Подтвердите, что Вы погорячились, и приборы и их типы учитывать никак не нужно .
Pavel V.2. Есть несколько (пока не известно сколько) обработчиков этих данных. Каждый обработчик должен периодически забирать новые (после последнего запроса) данные и обрабатывать их, каким-то образом запоминая какие он уже обработал.
Пока писал родилась идея. Если все измерения попадают в таблицу с автоматически инкрементирующимся идентификатором, то можно просто в каждом обработчике запоминать последний обработанный id.
Неверная идея. Поскольку не определено, что значит "последний обработанный". Ведь ДО этого УСПЕШНО обработанного могут быть НЕ УСПЕШНО ОБРАБОТАННЫЕ:) Или не могут? Это тоже нигде не сформулировано.
Pavel V.В случае использования дополнительной таблицы можно произвольные выборки делать.
Опять неверно говорите. Вы хотите сказать, что хотели бы использовать и тип сущности Обработка измерений. Это имеет смысл, если предполагаются какие-то свойства этого типа сущности хранить в БД. До сих пор эти свойства не определены. И каких-либо запросов просто не может быть. Вероятно, Вы предполагаете, что свойства этого типа сущности, все-таки, нужны в БД.
...
Рейтинг: 0 / 0
01.02.2013, 18:02
    #38134190
Pavel V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
1. Приборы учитывать не надо. Можно считать, что это показания термометра за окном раз в минуту.
2. Данные сейчас обрабатываются последовательно, т.е. пока не обработаем какую-то порцию, к новой не переходим.
3. Свойство нужно только одно - обработано показание или нет.

По поводу линейной/не линейной работы я имел в виду возможность сделать произвольную выборку необработанных обработчиком показаний данных (например, с 10-00 по 12-00) и отметить их обработанными. После этого я бы мог взять показания с 8-00 до 9-00. В этом случае вариант с идентификатором не пройдет.
...
Рейтинг: 0 / 0
01.02.2013, 20:03
    #38134319
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
Pavel V.1. Приборы учитывать не надо. Можно считать, что это показания термометра за окном раз в минуту.
2. Данные сейчас обрабатываются последовательно, т.е. пока не обработаем какую-то порцию, к новой не переходим.
3. Свойство нужно только одно - обработано показание или нет.

По поводу линейной/не линейной работы я имел в виду возможность сделать произвольную выборку необработанных обработчиком показаний данных (например, с 10-00 по 12-00) и отметить их обработанными. После этого я бы мог взять показания с 8-00 до 9-00. В этом случае вариант с идентификатором не пройдет.
13862531
...
Рейтинг: 0 / 0
01.02.2013, 22:27
    #38134438
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один источник данных и несколько потребителей с доп. атрибутами к данным
> линейной/не линейной работы

Дружище, у вас жуткая каша в голове. В одном случае вы говорите о пакетной обработке, в другом - об обработке каждого элемента пакета. Вы понимаете, что это взаимоисключающие определения?
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Один источник данных и несколько потребителей с доп. атрибутами к данным / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]