Сегодня вчерашнее завтра
-
Тут экспертные умозаключения не помогут, основные держатели толкают рынок туда, куда им выгодно. Слушать кого-то себе дороже, тут сейчас карусель похлеще рулетки от Evolution gaming. Стригли, стригут, и будут стрич. Биткоин и большинство крипты, является сейчас машинкой для стрижки.
-
Господа, помогите пожалуйста.
Есть следующая задача: к нам приходит поток данных (цифры) в различные моменты времени, нужно в любой момент по запросу возвращать их сумму за последний час. Данных много, возвращать надо быстро.
Я свою библиотечку три года назад сделал, сейчас захотел посмотреть, как люди реализуют подобное, но не могу понять, какой запрос описывает мою задачу? Если кто-то видел реализации подобного - поделитесь пожалуйста, задача-то достаточно популярная, много где такой функционал нужен.
Upd: А, это вроде бы скользящая средняя, moving average то бишь.
Upd2: Или нет... помогите, люди добрые! -
Пользователь @DimOK написал в Сегодня вчерашнее завтра:
Господа, помогите пожалуйста.
Есть следующая задача: к нам приходит поток данных (цифры) в различные моменты времени, нужно в любой момент по запросу возвращать их сумму за последний час. Данных много, возвращать надо быстро.
Я свою библиотечку три года назад сделал, сейчас захотел посмотреть, как люди реализуют подобное, но не могу понять, какой запрос описывает мою задачу? Если кто-то видел реализации подобного - поделитесь пожалуйста, задача-то достаточно популярная, много где такой функционал нужен.
Upd: А, это вроде бы скользящая средняя, moving average то бишь.
Upd2: Или нет... помогите, люди добрые!Похоже на задачу для sql сервера, delayed batch инсертов(если данных действительно много) и одного запроса на выборку
-
И если данных ну прям совсем совсем много и прям совсем совсем быстро, то взять на сервер какой нибудь clickhouse
-
Нет, что вы, нам не нужно сохранять данные, нам просто надо знать, сколько циферок пришло за последний час, их приходят сотни в секунду, всё что было раньше совсем не интересует.
-
Нельзя один раз посчитать сумму и количество данных, а потом только прибавлять свежие данные и вычитать устаревшие, выпавшие из последнего часа?
-
Можно конечно, но я хотел узнать, как называется эта задача, чтобы посмотреть как другие люди делали.
Свою реализацию я очень давно сделал и мне она даже нравится, там всякие хитрые манипуляции с массивами, чтобы лишних итераций не делать и всегда нужное значение знать -
А в чем сложность задачи? Не посвящённому в разработку сходу не понять сложности
-
Да ни в чем не сложность, хочу узнать, как она называется, чтобы посмотреть другие реализации :)
-
@DimOK вообще это тема time series analysis из мат. статистики и time series database (TimescaleDB например, под крипто трейдинг активно используют).
Когда то использовал либу от фейсбука https://github.com/facebook/prophet тоже под крипто-анализ популярна очень.
Но в данном кейсе, как понимаю, вообще не нужен никакой анализ данных, только среднее.
И никакой базы данных не используется, так? Исходную же информацию надо знать как хранятся данные или одним запросом по апи дергаются, много вариантов, от чего зависит решение... -
Ну прикладная задача: мы наблюдаем за сделками по рынку, их нам присылают постоянно.
Нам интересно знать, в последние пять минут преимущественно продают или покупают?
При этом сделок у нас 10 штук в секунду на сотне рынков, а интересно знать нам бывает, допустим, каждую секунду. То есть складывать всё в базу и из базы выборку получать это не вариант, база закашляется любая либо на вставке (если индексы перестраивать), либо на чтении (если индексов нет).
Я решил так - берём необходимую точность, положим данные за пять минут нам нужны, нам подойдёт точность в три секунды. Получается 100 трёхсекундных отрезков. Записываем время начала слежения. Записываем куда была последняя запись. Записываем итоговую сумму. Новые данные присылаем с текущим временем, высчитываем в какой отрезок его записать, потом добавляем/отнимаем ячейки с момента последней записи так, чтобы у нас в итоговой сумме были актуальные данные без пересчёта всей суммы.
Всё, задача решена, добавление данных очень дешёвое, максимум цикл по 100 элементам, чтение бесплатное, так как значения обновляются при каждой записи за несколько арифметических операций по каждому элементу, а потом хранятся в готовом виде.
-
ничего не будет с "базой", у вас достаточно небольшая нагрузка, справится и elk и заточенный под эти задачи кликхаус.
-
Интересный подход... То есть предлагается хранить и делать запросы по выборкам на каждый чих, так как "железо позволяет"...
-
@DimOK это типичная задача для time series db, подобная выборка одним запросом делается.
Но вам, если не надо больше ничего делать с этими данными и как-то масштабироваться, то и такое костыльное решение нормально.
10 * 100 записей в секунду это ни о чем даже для postgresql + timescaledb, всего лишь до 100 млн записей в сутки.
Нагрузка на цп и диск минимальная, и с индексами всё хорошо будет, если конечно конфиг настроить, а не из коробки юзать.
Так что обычной SQL бд хватит. Big data начинается с миллионов записей в секунду, там уже спец. решения надо типа того же clickhouse. -
А мне вот жалко сервера мучать, я как представляю, сколько ненужных операций записи на эти несчастные SSD, как процессоры абстракции перемалывают - очень грустить начинаю :( В энтерпрайзе вообще с ума сошёл бы, наверное, от неэффективности.
-
Это как я биржу ставок в 2005 году делал на файликах, тысячи файликов, потому что в базы данных не умел, а потом всё накрылось медным тазом из-за того, что каждый файлик 4 килобайта занимал на сервере, место кончилось... а тяга к велосипедам осталась :(
-
@DimOK о да, пхп скрипты на файлах, тоже в те года так говнокодил )) но потом как-то быстро лень стало парсить эти файлы каждый раз и править баги на этом этапе, и дошло зачем всё-таки нужен mysql ))
-
Пользователь @DimOK написал в Сегодня вчерашнее завтра:
сколько ненужных операций записи на эти несчастные SSD
А поясните новичку пожалуйста, просто интересно, в энтерпрайзе в базы данных постоянно вносятся изменения, что-то записывается, что-то удаляется, по идеи жесткие диски должны часто выходить из строя (они же рассчитаны на определенное количество циклов перезаписи)? Или там специальные используются?
-
@SiP Есть enterprise ssd, с повышенной надежностью и ресурсом, но это не так важно когда RAID массив. Диск выходит из строя, его на горячую меняют.
Но энтерпрайзу всё легче в облака пихать (Amazon AWS, Google Cloud например) и не заниматься такими проблемами. -
А что за памп был вчера по битку, даже какие-то суммы ощутимые пролетали и в битке и в эфире, не на новостях по Джонсону случаем? прям как-то совпало, или еще что-то, никто не знает?
-
@DimOK как считаете, ton будет ниже 50 руб или вряд ли?
-
Буквально после 200 спинов дало, на второй бонуске, хорошее казино.
В этот раз по лимитам платят, 30 000 в сутки, миллион в месяц. Всем бы такие лимиты. -
@DimOK денег нада? а, видимо уже нет :(
-
По битку на бинансе вчера были огромные обьемы, а цена почти не сдвинулась. Кто разбирается, о чем это может говорить? -
@DimOK конечно платит, оно сейчас на твитче рекламится у тех, кто слотики крутит. :D