Всем привет. Я тут делаю первый раз в жизни DWH

(кажется) и к сожалению я (с on hands опытом только в PG и пайтоне) самый опытный на проекте, так что сам придумываю дизайн. Можете оценить и указать на косяки?
Задача: хранить IoT таймсерии, 2+TB за год, начнем с трех лет данных. Использование: отдавать эти ряды алгоритмам или делать аналитику. Ограничение: все он прем, часть таймсерий должна лежать в файлах и быть доступна для прямого чтения из файла, без какого-либо квери движка, это обязательно прям.
Что я придумал пока:
Доменные метаданные в PG, таймсерии в локальном S3 совместимом сторадже в виде паркет файлов, Hive Metastore и Trino что бы запрашивать их через SQL-like синтаксис, возможность прямого чтения файлов через пайтон сохраняется. Таймсерии хранить в виде узких файлов вида "timestamp,value".
Я так понимаю Trino + HMS это примерно минимальная конфигурация, которую можно собрать, для того что бы дать аналитику возможность работать с таким объемом данных на более-менее новом стеке. Всякие штуки типа айсберга и худи не подходят потому что они ломают возможность напрямую читать паркет файлы (я так понял там сложная структура внутри). Меня еще очень смущает что таймсерии и доменные метаданные разделены по разным базам, не понимаю какой тут стандартный подход.

24 ответов

17 просмотров

Можешь чуть еще пояснить про "доступность из файла"? Зачем оно? Для разовых вещей? Если так, то можно писать все в греенплум, а оттуда деалать UNLOAD какой-нибудь

Pavel-Tarasov Автор вопроса
Сиплый
Можешь чуть еще пояснить про "доступность из файла...

не разовых, там в середине пайплайна будет трейнинг моделей, они сформрованные датасеты данных будут читать много раз и нужно отдавать их как можно быстрее. идея в том что датасет/файл готов и очищен, надо его просто загрузить и скормить в модель. пока общее решение чтов этой ситуации самое простое - это сложить в файл и читать его напрямую из кластера экзекьюторов

Pavel Tarasov
не разовых, там в середине пайплайна будет трейнин...

Ты в модель кормишь не файлы же, а строчки. Их и датабаза может отдать

Pavel Tarasov
не разовых, там в середине пайплайна будет трейнин...

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

Pavel-Tarasov Автор вопроса
Сиплый
Ты в модель кормишь не файлы же, а строчки. Их и д...

но в том и вопрос. все эти накладные действия типа распарсить запрос, выполнить и отдать строчки быстрее ли чем чтение файла

Pavel-Tarasov Автор вопроса
Pavel Tarasov
но в том и вопрос. все эти накладные действия типа...

Почему скороть так критична? Какая разница, моделька всосет данные за 5 минут или за 10

Почему именно такой подход выбрали? Какое время ответа должно быть, латенси и для каких подключений? Какие объемы планируется выгружать и для каких целей, какие латенси и сла на это?

Pavel-Tarasov Автор вопроса
Сиплый
Почему скороть так критична? Какая разница, модел...

эм ну, такой реквест от заказчика, хотят минимизировать время обучения, включая всасывания файлов

Pavel Tarasov
эм ну, такой реквест от заказчика, хотят минимизир...

Во времени обучения основной потребитель времени - это само обучение 🤔

Pavel Tarasov
но в том и вопрос. все эти накладные действия типа...

эт все оч смешные расходы на деле, не о том ты сейчас думаешь.. :) данных у тебя мало

Я подозреваю, что у тебя тот самый случай, когда postgre is fine ))

Pavel Tarasov
быстрее чем прочитать файл?

Все от задач зависит. Прочитать файлик это одно, но там ведь всякая аналитика появляется вроде группировок, иногда джойнов.

Pavel-Tarasov Автор вопроса
Vladislav 👻 Shishkov
Почему именно такой подход выбрали? Какое время от...

1. самая простая конфигурация с возможностью чтения данных и в виде файла и при помощи sql-like запроса. 2. для аналитических запросов - до 5 секунд, для запросов на чтение чанками / файлами - как можно быстрее. я понимаю что "как можно быстрее" - это не особо внятный ответ, это хороший поинт, я уточню конкретные требования. 3. 1 TB датасетов разбитых на файлы, для чтения ml моделями для трейнинга. опять же, нет внятных цифр, пока. окей, вероятно нужен более формальные вопросы бизнесу задать

Pavel-Tarasov Автор вопроса
Сиплый
Во времени обучения основной потребитель времени -...

да, я понимаю, но они хотят все не профильное подчистить. ну и на обучение я не влияю, а на это влияю

Pavel-Tarasov Автор вопроса
Konstantin Sh S.
эт все оч смешные расходы на деле, не о том ты сей...

в смысле что не будет большой разницы как ни крути?

Pavel Tarasov
1. самая простая конфигурация с возможностью чтени...

А что будет если аналитический запрос вместо 5 секунд будет исполняться 1 минуту? Вообще, 5 секунд, когда надо посчитать на миллиардах строк - уже нетривиально. Если 5 секунд, то уже надо под конкретный аналит.запрос pre-compute делать с предвр.агрегатами

Pavel-Tarasov Автор вопроса
Сиплый
Я подозреваю, что у тебя тот самый случай, когда p...

ну в смысле. если мы сложим в посгре 1+TB в одну таблицу и будем пытаться делать на этом аналитику - мне кажется он не вытянет?

Pavel-Tarasov Автор вопроса
Pavel Tarasov
ну в смысле. если мы сложим в посгре 1+TB в одну т...

Вопрос - почему таблица одна. Я поясню - сложно любые произвольные квери на 1ТБ сделать 5 секунд с гарантией Так что я предлагаю уточнять: - почему 5 секунд, а не 45 - какие именно квери должны в 5 секунд укладываться. "любые" - так себе ответ, нужно большей конкретики добиваться

Pavel Tarasov
ну в смысле. если мы сложим в посгре 1+TB в одну т...

смотря какая аналитика. Если таймсериез скорее всего есть партиция по дате и тут вопрос какой объем данных нужен для анализа. Если нужно вычитать весь терабайт то да, будет больно. Если нужны данные за день то вполне норм. Но все равно это не стыкуется с твоим требованием выше про : хотим иметь файлы в открытом формате

Pavel-Tarasov Автор вопроса
Vitaly Pismarev
смотря какая аналитика. Если таймсериез скорее все...

я понимаю что не стыкуется, но я не могу это требование передавить и поэтому что-то изобретаю

Похожие вопросы

Обсуждают сегодня

Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Всем привет. Есть кто разбирается в платежках? Что б принимать из других стран и выплачивать рф снг
Musa
6
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
А как получить доступ к отправленному сообщению в ChosenInlineResult? Раньше кажется можно было, щас убрали?
net
2
Всем привет В общем надо на странице вакансии вывести вакансии с hh, но когда я пишу код в разделе Code ошибка Invalid URL format. The URL should start with the forward slash...
A da
1
Карта сайта