184 похожих чатов

Здравствуйте Есть настроенная работающая база в КХ, поделенная на насколько реплицицируемых

шардов. Всё это работает на 3 серверах по схеме, предполагающей бесперебойную работу при выходе из строя одного из серверов.
В базе лежат данные за несколько лет. Их количество, разумеется, постоянно увеличивается. Наиболее важны более-менее свежие данные, за последние 1-2 года. Более старые данные хоть и нужны, но их актуальность сильно ниже.

Существует ли возможность таким образом построить архитектуру кластера, чтобы задействовать в нём несколько серверов с разной скоростью (стоимостью) дисков, чтобы актуальные данные лежали на серверах с быстрыми дисками, а менее актуальные "уходили" на более дешёвые сервера?
Если это реализуемо, то можно ли это сделать на существующей рабочей БД, сделав к ней условную "пристройку" из более дешёвых серверов для архива, либо потребуется для этих целей создать кластер "с нуля"?

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

6 ответов

15 просмотров

В одном из проектов реализовано хранение холодных данных в кластере КХ и горячих данных в кластере Redis. Не нашли на лету горячие при запросе - идем в холодные. В рамках КХ можно использовать storage с разными весами и на этом построить логику как вариант.

Rodion-Baskakov Автор вопроса
Alex K
В одном из проектов реализовано хранение холодных ...

Не очень понимаю, как на данных, лежащих в Redis строить расчёты, предполагающие JOIN и runningDifference (у нас это очень много используется) по разным критериям. Идея с весами не даёт ответа на вопрос, как автоматически помещать старые данные в сервера с низкими весами 🙁 Пока пришла идея хранить всё в условно "медленном" кластере, а на быстрых дисках создать материализованные view с порогом актуальности данных по времени события и в приложении при построении запросов учитывать этот порог: если данные нужны "за порогом" (новые + старые или только старые) запрашивать их из кластера, из распределённой таблицы. Если же требуются свежие данные, то запрашивать их из view. Но ни разу с таким не работал, это пока на уровне догадок и предположений.

Rodion Baskakov
Не очень понимаю, как на данных, лежащих в Redis с...

Предагрегация по типовым запросам решает конкретно в этом проекте, а в остальном готового решения наврядли найдете, это большая работа по архитектуре

Rodion-Baskakov Автор вопроса

А view может решить эту задачу?

Rodion Baskakov
А view может решить эту задачу?

Как вы это представляете ? Я не очень вижу как

Rodion-Baskakov Автор вопроса
Alex K
Как вы это представляете ? Я не очень вижу как

Ну, примерно как описал выше в сообщении: создаём view из распределённой таблицы с критерием, что в этом представлении данные не старше min_event_timestamp. Дальше уже это представление реализует логику актуальности данных, а приложение запрашивает данные из этого представления. Может, я как-то неправильно себе механизм представляю?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта