|
|
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Такая проблемка: Нужно создать базу в которую будут записываться 140 параметров каждую секунду каждый день. Параметры будут отличаться своим местоположением. Вопрос: какую базу делать - с одной таблицей и писать туда все мясом или отдельно таблицы на каждый параметр, или создавать каждые сутки свою таблицу и писать туда данные? Что лучше(быстрее) для последующей обработки данных? Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 16:39 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
"каждые сутки свою таблицу" - этот вариант сразу можно перечеркнуть. Про местоположение параметров не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 16:47 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Параметры одного типа (числа, строки, ...) или разных? Какие запросы к ним потом предполагаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 16:56 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
стоят метаконы, которые фиксируют температуру, давление и тд. Место положение имеется ввиду что будет одно поле в которое будет заноситься физический адрес датчика(метакона). Все параметры одного типа - real(float) Запросы для статистики - например (парам= 1; дата с; дата по; ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 18:10 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
12 000 000 записей в день ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 18:21 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛ12 000 000 записей в день В этом случае стоит сильно задуматься над тем, чтобы писать в базу данные [/b]после[/b] обработки, а не до. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 18:50 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, дело в том, что информация может понадобится после 1 или 2)( лет ее создания, а может и не понадобится грубо говоря процесс такой: - продукция изготовлена по определенному рецепту и режиму - через год она была отгружена потребителю - у потребителя проявился брак в продукции нужно выявить причину возникновения брака(прочитать всю историю создания продукции) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 19:32 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛнужно выявить причину возникновения брака(прочитать всю историю создания продукции) Прочитать двенадцать миллионов значений? Глазками? А не лопнут?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 19:54 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ясно, спасибо за попытку помочь.. пойду искать решение в другом месте :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:00 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛ А что Вы имеете в виду, под тем, что параметры будут отличаться своим местоположением? Ну а так, ну и что что 140 полей и каждую секунду? Главное не вешать кластерный индекс. А ключ делать по той же секунде. Ну и озаботится поведением, если произойдет не корректная вставка одного параметра. То есть, если insert сбойнул, делать update каждого параметра в новой записи. А если нужен быстрый поиск, то можно таблицу секционировать. Плюс добавить ключ на году, месяцу, дню, часу и т.п. Как вариант - параметры хранить в одной колонке, со ссылкой на тип параметра и на таблицу с временем создания параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:02 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTE, в данный момент таблица такая key(int autoinc) paramid(int) objectid(int) date(datetime) paramid менятется от 1 до 140 objectid от 0 до 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:10 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛясно, спасибо за попытку помочь.. пойду искать решение в другом месте :( Похоже, вместо слова "сильно" мне следовало в сообщении выделить "задуматься"... Ну да ладно, скатертью дорожка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:13 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛ, paramid(int) objectid(int) интом не делайте. Я не соориентировался, что у Вас за СУБД, но думаю, типы данных short или подобные там есть. При таком объеме данных, нужно экономить каждый байт. Уникальный ключ по paramid, objectid, date как я понимаю должен получиться, так что использовать key(int autoinc) смысла нет. Смертеподобно будет, если key окажется кластерным индексом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:22 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ПыСЫ, насчет СУБД, надеюсь Вы не FoxPro или SQLite собираетесь использовать? Я боюсь они на такие объемы не потянут. Тут минимум MySQL нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:28 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
> Такая проблемка Нет, Света, это она вам кажется такой. Хинт: для хранения данных не обязательно требуется СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:35 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTE, Используем MS sQL 2005 Да и забыл еще, есть поле value(float), в которое записывается значение параметра Основной вопрос такой:разделять данные по нескольким таблицам или писать все в одну? За сутки в одной таблице получается около 1 000 000 записей, а )(ранить нужно данные за несколько лет. В результате нужно будет формировать простой запрос за определенный период для одного параметра. ЗЫ. ALOTE, Спасибо за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:40 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛВ результате нужно будет формировать простой запрос за определенный период для одного параметра. Запрос - в студию!!! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:43 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, запрос Код: sql 1. 2. 3. В результате которого строиться график и высчитываются параметры для статистики, всякие сигмы и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 20:50 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛзапрос Запросов другого типа не будет? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 21:26 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 21:37 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛнет Тогда я бы делал по таблице на каждое сочетание paramid и objectid. То есть 140*5=700 таблиц. По-моему так серверу полегче будет на блокировках - быстродействие выше. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 21:41 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Были мысли и такие. Только стоит ли бояться блокировок, если запросы будут выполняться - не чаще чем 1 раз за час - или наоборот запросы выполняются каждую секунду для отображения актуальны)( данны)(? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 22:03 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛТолько стоит ли бояться блокировок, если запросы будут выполняться - не чаще чем 1 раз за час Тебе не за выборку надо беспокоиться, а чтобы добавляющие информацию потоки не передрались за какой-нибудь ресурс. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 22:10 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ясно, писать в разные таблицы лучше с точки зрения блокировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 22:24 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛDimitry Sibiryakov, Ясно, писать в разные таблицы лучше с точки зрения блокировок. Но хуже с точки зрения объемов данных - ключики в таблицах дублируются. Имхо, все верно выше сказали - пишите тупо в текстовые файлики, зачем вам СУБД? Аналитику сложную делать ведь не будете? Файлик, допустим, - каждый день новый. Одна строка файлика - одно измерение (140 параметров). Дневной файлик содержит 12млн строк, и имеет объем несколько десятков Мб - это не много (FAR, Total Commander спокойно ищут в нем текст за секунды). Если вам это много - бейте на новые файлики допустим каждый час. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 07:43 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛ12 000 000 записей в день В мою базу захватывается каждый день ~100-150млн записей различных таблиц (наибольшая "кучка" ~27-40млн). Данные отбираются, очищаются, агрегируются и т.д... В конечную базу вливается ~20-25млн записей/сутки (наибольшая "кучка" ~7млн). База живет в пром.эксплуатации 2.5 года, до этого в опытной - год ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 07:48 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
pectopatop, Начальство требует все в sql. По поводу объема данных, думаю оставить всего два поля время и значение параметра, и для каждого параметра создать свою таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 08:24 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ВячеславЛНачальство требует все в sql.а начальство вообще знает, что такое sql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 08:45 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
pectopatop Имхо, все верно выше сказали - пишите тупо в текстовые файлики, зачем вам СУБД? Аналитику сложную делать ведь не будете? Файлик, допустим, - каждый день новый. Одна строка файлика - одно измерение (140 параметров). Дневной файлик содержит 12млн строк, и имеет объем несколько десятков Мб - это не много (FAR, Total Commander спокойно ищут в нем текст за секунды). Если вам это много - бейте на новые файлики допустим каждый час. А может вообще лучше писцов посадить, что бы в ручную параметры переписывали? Гусиными перьями. Или на глиняных табличках. Что б уж наверняка никаких блокировок и лишних объемов данных? А СУБД это вообще от Лукавого, как и весь технический прогресс. Dimitry SibiryakovТогда я бы делал по таблице на каждое сочетание paramid и objectid. То есть 140*5=700 таблиц. По-моему так серверу полегче будет на блокировках - быстродействие выше. Хм. Мне какое то извращение в этой идее мерещится. Учитывая что пишется не 140 полей, а одно поле, то я не вижу причины особо беспокоиться о блокировках. 140 новых записей в секунду в одну таблицу, MS SQL вполне потянет. Уровень изоляции в транзакции только не делать высоким (смыла в данном случае в этом нет ни какого) . А то 700 таблиц, это тихий ужас при выборке данных будет, учитывая объемы. И, честно говоря, не уверен, что это увеличит быстродействие если на одной таблице использовать READ UNCOMMITED, что в данном случае, вполне допустимо. Ну а поля paramid и objectid вполне можно заменить на одно поле типа smallint содержащие 700 вариантов значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 11:05 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEА то 700 таблиц, это тихий ужас при выборке данных будет, учитывая объемы. А свалив всё в одну кучу получить низкую селективность индексов по id-полям - не будет тихий ужас?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 11:10 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, На кой черт здесь id поля? Сделать составной ключ по дате и id параметров. При выборке сначала выбирать по дате. Плюс никто не отменял секционирование таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 11:15 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEСделать составной ключ по дате и id параметров. И во-первых, тем самым увеличить размер индекса в три раза, а во-вторых, получить горячую точку. Оно того стоит? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 13:02 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну увеличение индекса в три раза (а на самом деле в два, потому что поля paramid и objectid можно объединить в одно ), не так уж и страшно, по сравнению с появлением 700 новых индексов. Во вторых зачем нам бояться горячей точки если будет использоваться грязное чтение? Да и Вы думаете 700 новых таблиц горячие точки не дадут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 13:25 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Если будут проблемы с блокировками - писать онлайн можно в промежуточную таблицу вообще безо всяких индексов, раз в час/сутки переносить в основную одним потоком. Но 700 таблиц я бы не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 13:37 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEВы думаете 700 новых таблиц горячие точки не дадут? Они дадут 700 точек, которые, соответственно, будут в 700 раз холоднее, чем одна. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 14:04 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, 700 точек, каждая из которых в 700 раз холоднее (на практике не в 700, а в 600 где то за счет дополнительных полей) = одной точке которая в 700 раз горячее каждой. То есть вероятность то блокировки на каждой таблице в 700 раз меньше, но суммарная вероятность возникновения блокировки не меняется, это ж азы тервера. Ну и на практике, вероятность блокировок реально возрастет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 14:14 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEТо есть вероятность то блокировки на каждой таблице в 700 раз меньше С чего бы вдруг? Вероятность падает до абсолютного нуля, поскольку с каждой таблицей работает исключительно один писатель. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:04 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, С одной таблицей так же работает исключительно один писатель. Только в 700 раз чаще. Ну а дальше я уже объяснял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:13 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEС одной таблицей так же работает исключительно один писатель. Только в 700 раз чаще. Ты всерьёз полагаешь, что автор данные с разных датчиков собирает где-то ещё, а в базу пишет одним коннектом? Тогда, оно конечно, пох. Врачи бессильны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:18 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Не :). В базу пишутся данные каждую секунду, по факту измерения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:26 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, А! То есть ты предлагаешь на каждый датчик делать отдельный клиент, который будет открывать коннект к БД? В такой ситуации, оно конечно может и лучше 700 таблиц. Можно вообще на каждый новый коннект новую таблицу создавать. Только, я, как сторонник традиционных видов секса, искренне полагаю, что в таких ситуациях, по умолчанию используется архитектура в которой основной клиент собирает данные со всех датчиков, а потом их отправляет на сервер. Тут вполне можно обойтись одним коннектом. Либо вообще, держать его открытым нон-стоп, либо пересоздавать по завершении транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:33 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Как то я двояко выразился. Я не намекал на ориентацию оппонента, а на то, что предпочитаю интимные отношения с людьми, а не с архитектурами систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:44 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEТо есть ты предлагаешь на каждый датчик делать отдельный клиент, который будет открывать коннект к БД? Ну да, я предполагаю, что каждый датчик автономен и обладает собственным пунктом сбора данных. Чтобы система не попала целиком под один медный таз. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 15:45 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Обычно с датчиков (COM-порты и подобное) информацию собирает все же некоторое Прикладное ПО, а не СУБД. Далее у этого Прикладного ПО есть разные механизмы межпроцессного взаимодействия, позволяющие собрать все в одной точке, и записать в базенку. Если у ТС 140 датчиков пишут каждую секунду - это т.е. каждую секунду 140 писцов - хлоп! и выдают данные! через секунду - опять - хлоп! и 140 писцов выдают данные! так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 16:04 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНу да, я предполагаю, что каждый датчик автономен и обладает собственным пунктом сбора данных. Чтобы система не попала целиком под один медный таз. Да Вы с ума сошли. 140 датчиков, под каждый из которых придется еще новую прошивку писать. Да и централизованная система попадет под медный таз, только в случае аппаратного сбоя. Проблемы возможного программного сбоя решаются стандартными средствами - транзакции, try{} и т.п. А в Вашем варианте, сбой одного узла будет сразу не очевиден, значит придется писать еще и ряд обработчиков которые будут реагировать на сбой узла. Нужно будет разрабатывать логику реагирования, анализ причин сбоя на каждый отдельный случай и т.д. В общем старый добрый принцип Оккама - чем система проще, тем она надежней (в данной интерпретации), как никогда лучше подходит к моменту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 16:20 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
ALOTEстарый добрый принцип Оккама Именно по этому принципу программа, опрашивающая один датчик - проще и надёжнее, чем опрашивающая 140. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 16:43 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну так мы имеем 140 датчиков. Поэтому возвращаясь к тому, что я описывал прежде - 140 программ опрашивающих по одному датчику, согласно теории вероятностей на столько же ненадежны, как и одна программа опрашивающая 140 датчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 16:46 |
|
||
|
Структура базы
|
|||
|---|---|---|---|
|
#18+
[quot ВячеславЛ] Вопрос: какую базу делать - с одной таблицей и писать туда все мясом или отдельно таблицы на каждый параметр, или создавать каждые сутки свою таблицу и писать туда данные? Что лудше(быстрее) для последующей обработки данных? [quot] Быстрее пишется одна длинная строка , нежели много коротких- проверено екскрементально. Можно и на по часам разбивать таблицы, потом ССИС джобом заливать в одну большую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2012, 18:42 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541575]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 513ms |

| 0 / 0 |
