Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 October 01

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
Наверное я не до конца понимаю как решить задачу которая у меня есть, и ищу не тот ответ что нужно )

Я храню статистические данные по дням, например сумму всех транзакций за день

Так вот я не совсем понимаю как их хранить И КОГДА ОБНОВЛЯТЬ, потому что время у всех разное 🤔

А отдавать статистику каждый раз проходя по всем транзакциям, это, наверно неправильно?
источник

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
Это не совсем так, в этой записи сумма всех транакций за день, и если их делаить по серверному времени, то эта сумма не будет актуальной для пользователей с другим часовым поясом
источник

СС

Сергей Соболев... in NodeUA - JavaScript and Node.js in Ukraine
Транзакции должны храниться отдельно, конечно. Не в агрегированном по дням состоянии.  
Чтобы собрать итоги за день для конкретного пользователя, вам необходимо параметром передавать часовой пояс пользователя в данном случае. Либо принять решение отдавать статистику в UTC-поясе.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Если действительно нужно чтобы у каждого пользователя его статистика обновлялась ровно в 00:00 по его времени, придётся хранить его часовой пояс в базе, и каждые 15 минут запускать обновление (часовые пояса есть и со смещением в 15 минут). Часовой пояс может указывать сам клиент в своём профиле
Но, вероятно, на самом деле достаточно будет пересчитывать статистику один раз в сутки для всех в одно время
источник

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
А зачем проверка?) может пересчитывать только когда часовой пояс пользователя в профиле изменился ?)
источник

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
Хотя это тяжеловесно выходит, если кто то решит со временем поиграть имея сотни тысяч транзакций в разных валютах...
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Какая проверка?
источник

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
каждые 15 минут запускать проверку
цитата 😅
источник

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
ладно, спасибо за ответ, в любом случае я примерно так и думал делать, просто не был уверен насколько это правильно
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Исправил
Имел в виду пересчёт, обновление, или как там назвать процесс, который должен один раз в сутки происходить
источник

А

Антипов in NodeUA - JavaScript and Node.js in Ukraine
На самом деле он не пересчитываться, там сумма всех транзакций за день, она просто обновляется с каждой новой транзакцией, пересчитывать все видимо нужно только в момент смены часового пояса
источник

UT

User True in NodeUA - JavaScript and Node.js in Ukraine
На бинансе статистика выдается по серверному времени, то есть они не пересчитывают под время пользователя.
источник

СС

Сергей Соболев... in NodeUA - JavaScript and Node.js in Ukraine
Тут всё действительно больше от самой задачи и данных зависит. Вы бы рассказали все нюансы. А если пользователь не будет запрашивать статистику? То к чему все эти ненужные расчёты? Схлопнуть по запросу данные транзакций за один день, чтобы получить сумму - плёвое дело даже для миллионов записей. Другое дело, если эти данные по статистике будут использоваться для построения какого-то отчёта. Но тут вам снова придётся прийти к единому для всех пользователей времени - UTC.
источник

NK

ID:0 in NodeUA - JavaScript and Node.js in Ukraine
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Посоветуйте клиента для монги, чтобы можно было удобно писать пайплайны
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
монгу в топку
источник

S

Serhii in NodeUA - JavaScript and Node.js in Ukraine
Кстати, а есть языки программирования, где строгая типизация и в рантайме тоже проверяются типы?
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Есть конечно, но большинству компилируемых языков это не нужно, потому, что они не компилируются в другой язык со слабой неявной динамической типизацией
источник

D

Dimitrii in NodeUA - JavaScript and Node.js in Ukraine
Даже для тех случаев когда она используется для хранения записей с датчиков и нужна ну очень быстрая запись?

Монге вообще не должно остаться места на планете?
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
запасаемся попкорном
источник