Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
Есть достаточно типовая задача хранения телеметрических данных в СУБД. Несколько десятков датчиков (программные модули), опрашиваются ежесекундно, каждый генерит от 20 до 200 строк попарных данных типа уровень такой-то -> значение такое-то. Т.е. одна большая таблица с колонками Время, Датчик, Уровень, Значение. Простой расчет показывает, что за секунду в такую таблицу добавляется несколько тысяч записей. Нужно подобрать виндовую СУБД, которая сможет это все принять и отдавать несложную агрегацию за текущие сутки максимум с двух-трех секундной задержкой (с момента получения данных). Пока я склоняюсь к FireBird. Есть другие предложения? Монстров вроде оракла ставить не хотелось бы, да и тормозить оно будет на такой задаче, как мне мыслится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:07 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
Привет, Guest22! Ты пишешь: Guest22 G> Есть достаточно типовая задача хранения телеметрических данных в СУБД. Несколько десятков датчиков (программные модули), G> опрашиваются ежесекундно, каждый генерит от 20 до 200 строк попарных данных типа уровень такой-то -> значение такое-то. Т.е. G> одна большая таблица с колонками Время, Датчик, Уровень, Значение. Простой расчет показывает, что за секунду в такую таблицу G> добавляется несколько тысяч записей. Если в одной транзакции, то это одно, а если каждая запись в отдельной транзакции, то это другое... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:12 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
раз склоняетесь к FB значит про$%^ть показания не так страшно, значит можно показания просто валить в текстовые файлы и раз в минуту их загружать в субд. в какую субд зависит что вы с этими показаниями дальше делаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:13 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
У нас биллинг реализован на связке TMeter + ASA, где TMeter фигачит в себе логи на винт и параллейным потоком грузит их в ASA. Если даже сервак остановить или он просядет, то как только он появится, поток продолжит работу и данные все равно в СУБД окажутся. Кажется мне как раз Вам так сделать и нужно, как у TMeter реализовано - в секунду конечно у нас тысячи пакетов не набираются (в день где то по 60-100 тысяч записей по всем таблицам TMeter), но принцип такой же - нереально это дело напрямую спустить к любой РСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:19 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
Как по мне, так тут по любому через файл надо делать и потом уже в БД заливать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:27 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ASCRUS нереально это дело напрямую спустить к любой РСУБД. да почему ? http://tpc.org/tpcc/results/tpcc_result_detail.asp?id=105022401 1 проц - 28K транзакций в секунду, причем транзакции посложней + индексы строят. наверника какой-нибудь mysql/mSql гораздо больше чем 20K tps вытянет, главный вопрос что еще с этим будут делать. если еще и аналитику по базе в пару сотен М записей пускать, то тогда да, сурово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:35 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
вместо фала более правильно будет сервис очередей использовать. Так как тогда связку "взять данные -> вставить в базу" можно будет в рамках транзакции делать - гарантировано А файловые операции по XA протоколу в транзакцию не включишь. То есть распредененные системы лучше строить на асинхронном обмене сообщениями, используя сервис очередей и XA транзакции для заливки в базу. Многопоточным приложением, которое будет брать из очередей и заливать в базу, можно окучить офигительный трафик. Ну остальное уже детали реализации. Плюс асинхронность на распределенных системах - самый идеологически правильный вид работы, где синхронность всего лишь частный случай асинхронности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:37 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
авторесли еще и аналитику по базе в пару сотен М записей пускать, то тогда да, сурово. Вот и я про тоже говорю. Плюс еще мало ли что с сервером может случиться, по любому придется механизм отложенной записи в СУБД делать. авторвместо фала более правильно будет сервис очередей использовать. Так как тогда связку "взять данные -> вставить в базу" можно будет в рамках транзакции делать - гарантировано А файловые операции по XA протоколу в транзакцию не включишь. То есть распредененные системы лучше строить на асинхронном обмене сообщениями, используя сервис очередей и XA транзакции для заливки в базу. Многопоточным приложением, которое будет брать из очередей и заливать в базу, можно окучить офигительный трафик. Ну остальное уже детали реализации. Плюс асинхронность на распределенных системах - самый идеологически правильный вид работы, где синхронность всего лишь частный случай асинхронности. TMeter так и работает - асинхронно, очередями пуляя в БД данные. Однако при протоколировании данных с датчиков особо транзакционность не нужна - датчик дал показания, программа записала показания, откатит то датчик все равно возможности нет. А вот сохранять куда то очереди на диск нужно - в текстовые файлы или другим форматом без разницы. Иначе вполне возможно потерять часть данных, когда СУБД не успела вставить, а программа приема показаний датчиков взяла, да навернулась. Кстати вполне возможно использовать связку MySQL 4 -> Мощная РСУБД, где в MySQL все шустро пишется по таблицам, а потом асинхронный поток все это переносит уже в мощную РСУБД для аналитики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:57 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ну про датчики и отсутсвие транзакций у них - фих с ними. Вот далее чего с данными происходит интересно. Если в файло - то не транзакционно, риски при эксплуатации даже на не очень больших потоках, а ужо на больших.... Куда данные девать до записи в базу? Как TMeter (никогда не ивдал его) пишет асинхронно в базу? пока не записал, где хранит? Короче, как транзакции построены, поток данных. Ну и mysql не самый идеальный выбор как сервис очередей, как ни крути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 19:10 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
Я же обьяснил - в логи он свои на винт пишет, а уж по ним параллейный процесс все это переносит в СУБД. Даже если СУБД отвалится или еще чего случится, не страшно - как коннект поток сможет восстановить, он дальше продолжить писать с того места, где остановился на момент потери коннекта с СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 19:18 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ASCRUS нереально это дело напрямую спустить к любой РСУБД. - о птичках ... Я запускаю под MS Access 10-20-30-(сколько памяти хватит) окон IE в виде ActiveX, раздаю им урлы, а по мере загрузки контента - по событиям объектов MSHTML.HTMLDocument - вызываю функцю, которая парсит HTML и складывает его в таблицы MS Access. И так по кругу ... Это называется "напрямую спустить", или как? _________________________________ SQL @ SemantiCat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 19:18 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ASCRUS - так вот вот это "в логи он свои на вин пишет" и не внушает оптимизма. Ну и способ работы с фацлом, и заливка потом в базу онлайново из файла... Не весело как-то в плане надежности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 19:26 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ggvASCRUS - так вот вот это "в логи он свои на вин пишет" и не внушает оптимизма. Ну и способ работы с фацлом, и заливка потом в базу онлайново из файла... Не весело как-то в плане надежности. Тогда я не понимаю - что - веселее в память что ли писать или сразу пакеты по сети пускать до СУБД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 19:40 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
Иван FXS- о птичках ... Я запускаю под MS Access 10-20-30-(сколько памяти хватит) окон IE в виде ActiveX, раздаю им урлы, а по мере загрузки контента - по событиям объектов MSHTML.HTMLDocument - вызываю функцю, которая парсит HTML и складывает его в таблицы MS Access. И так по кругу ... Иван, Вы как всегда всех веселите :o) Ну какое отношение эта ваша карусель имеет к поставленной задаче ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 09:35 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
Кстати, тогоже эффекта и большей производительности можно было добиться существенно меньшей кровью, просто написав свой многопоточный HTTP клиент с доспом в нормальную РСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 09:37 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ggvASCRUS - так вот вот это "в логи он свои на вин пишет" и не внушает оптимизма. Ну и способ работы с фацлом, и заливка потом в базу онлайново из файла... Не весело как-то в плане надежности. Я, заради такого случая написал демон, который аггрегирует данные в памяти (хэш по ip-шникам), потом с заданным интервалом сливает в БД. И никакого файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 09:45 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
А что это НАДЕЖНЕЕ ? При исчезновении питалова скажем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 09:57 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ASCRUS - веселее пользоваться сервисом очередей, как я уже сказал, MOM так называемый - Message Oriented Middleware, где последовательность шагов "взять данные - произвести действия в базе - общий commit" выполняется под управлением транзакций. Ну если так не понятно, то расшифрую - если commit успешен, но данные убираются из очереди о добавляются в базе. Если commit не успешен или любойй другой сбой - в базе rollback и данные остаются в базе. Ну плюс возможность иметь базу удаленно, перекладывая заботу о доставке данных на сервис очередей - не надо городить никакой базы локально. Ну и многое другое, что дает сервис очередей. Единственный минус - не встречал сервис очередей задаром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:27 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ну я и понаписал. попробую еще раз и без ошибок если commit успешен - данные удаляются из очереди и комитятся в базе если commit не успешен или любой другой сбой - данные остаются в очереди и никаких изменений в базе не производится. От начала транзакции и до ее завершения данные не доступны другим процессам/нитям, работающим с той же очередью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:31 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ggv wrote: > ASCRUS - так вот вот это "в логи он свои на вин пишет" и не внушает > оптимизма. > Ну и способ работы с фацлом, и заливка потом в базу онлайново из файла... > Не весело как-то в плане надежности. ну, все ведь на винт пишут, СУБД тоже... Отключить нах кэш на запись, отключить кэш на хандл, после каждой записи делать FlushFileBuffers... организовать регулярную смену файла... пока в следующий пишем, предыдущий льется в базу... достаточно просто и надежно. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:33 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
locky, вы невнимательно читаете. Пока не сделали XA расширения к какой-нибудь файловой системе, это на уровне дилетанства, а не промышленного внедрения. Вы не можете включить дисковые операции и базовые операции в одну транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:49 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ggv wrote: > locky, вы невнимательно читаете. > Пока не сделали XA расширения к какой-нибудь файловой системе, это на > уровне дилетанства, а не промышленного внедрения. > Вы не можете включить дисковые операции и базовые операции в одну > транзакцию. ну, мне то это и не надо... на самом деле... я ведь могу устроить транзакцию при заливке файла лога в базу. то бишь, как только очередной лог отваливает, я заливаю его в промежуточную таблицу на сервере и потом фиксирую. если не получилось залить файл или не получилось зафикировать - я попторю попытку. если получилось - я больше не буду пытаться заливать этот файл. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:54 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ggv wrote: > locky, вы невнимательно читаете. хотя может я не до конца понял постановку, в части "отдавать несложную агрегацию за текущие сутки максимум с двух-трех секундной задержкой (с момента получения данных)". Это понимать как то, что в отчете показания датчика должны появлятся буквально тут-же после снятия? -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:57 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
ggvASCRUS - веселее пользоваться сервисом очередей, как я уже сказал, MOM так называемый - Message Oriented Middleware, где последовательность шагов "взять данные - произвести действия в базе - общий commit" выполняется под управлением транзакций. Ну если так не понятно, то расшифрую - если commit успешен, но данные убираются из очереди о добавляются в базе. Если commit не успешен или любойй другой сбой - в базе rollback и данные остаются в базе. Ну плюс возможность иметь базу удаленно, перекладывая заботу о доставке данных на сервис очередей - не надо городить никакой базы локально. Ну и многое другое, что дает сервис очередей. Единственный минус - не встречал сервис очередей задаром.В данном случае это элементарно и гораздо надёжнее решается через локальные файлы. MOM тоже может навернуться, а свои файлы ближе к телу в случае чего. Да и избыточно оно для данной задачи, imho В случае с FB - можно складывать данные с датчиков в embedded и потом уже - в общую БД. Тут и 2PC пригодится. Но через файловый буфер - проще и, вообще говоря, надёжнее. Когда-то сам так и делал (когда FB ещё не было ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:58 |
|
||
|
СУБД почти реального времени
|
|||
|---|---|---|---|
|
#18+
hvlad MOM тоже может навернуться, а свои файлы ближе к телу в случае чего. Да и избыточно оно для данной задачи, imho Но через файловый буфер - проще и, вообще говоря, надёжнее. Когда-то сам так и делал (когда FB ещё не было ;) Навернуться может все, но MOM специально предназначен для таких задач. Про избыточность - этого нельзя сказать, исходя из "постановки задачи" И еще раз - пока нет XA примочки к фаловой системе, типа адаптора или расширения, то файловый буфер по определению не может быть надежным в последовательности "взять из файла - действия в базе - действия в файле типа удаления" Впрочем, RDBMS как раз этим и отличаются от файловых баз. Ну и XA для этого же приворочили. Дураки, наверное, делали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 12:08 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33294341&tid=1553747]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 386ms |

| 0 / 0 |
