Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реплицирование агрегированной информации / 18 сообщений из 18, страница 1 из 1
18.10.2019, 20:29
    #39878516
ilin61
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
Имеется несколько баз, находящихся в разных местах, в которых много данных. Есть идея из каждой базы выгружать маленький агрегированный слепок данных для аналитики и загружать в другую центральную базу для дальнейшего анализа. У кого-то есть опыт решения таких задач? Данные должны быть в центральной базе не старее одного часа от других. В postgresql не нашёл такого механизма (там либо вообще всё либо целая таблица), в MySQL вроде есть materialized view, которую вроде тоже можно реплицировать
...
Рейтинг: 0 / 0
18.10.2019, 20:52
    #39878520
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61MySQL вроде есть materialized viewГде вы это вычитали?

А вообще - делайте обычную таблицу. Обычные таблицы почти любая приличная СУБД реплицировать умеет.
...
Рейтинг: 0 / 0
18.10.2019, 22:44
    #39878558
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Есть идея из каждой базы выгружать маленький агрегированный слепок данных для аналитики и
загружать в другую центральную базу для дальнейшего анализа. У кого-то есть опыт решения
таких задач?

Каких именно задач? Сразу скажу: твоя "идея" задачей не является. Для перемещения данных
между БД обычно используют ETL или репликацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.10.2019, 10:46
    #39878592
ilin61
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
miksoft,

Проблема в том, что агрегированные данные каждый раз пересчитываются полностью. То есть вся таблица пересоздается. Как при этом этом будет работать репликация? Вряд ли она проанализирует, что изменилось и это пошлёт. Репликация просто скопирует всю очередь DML и все эти команды пошлёт.
...
Рейтинг: 0 / 0
19.10.2019, 10:48
    #39878594
ilin61
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
Dimitry Sibiryakov,

Да, понятно, что через ETL это всё сделать можно. Но хотелось бы избежать дополнительной работы и сделать, используя готовые механизмы
...
Рейтинг: 0 / 0
19.10.2019, 11:23
    #39878600
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Проблема в том, что агрегированные данные каждый раз пересчитываются полностью. То есть
вся таблица пересоздается. Как при этом этом будет работать репликация?

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

ilin61хотелось бы избежать дополнительной работы и сделать, используя готовые механизмы

ETL это и есть "готовые инструменты". А серебряной кнопки "сделать всё как я хочу" - нету.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.10.2019, 12:59
    #39878616
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61То есть вся таблица пересоздается.Пересоздавать не надо, надо только очищать, если никакие прежние данные не нужны (хотя это тоже вызывает сомнение).
ilin61Как при этом этом будет работать репликация? Вряд ли она проанализирует, что изменилось и это пошлёт. Репликация просто скопирует всю очередь DML и все эти команды пошлёт.В MySQL есть два способа репликации - передача измененных записей и передача DML-команд. Пока не очевидно, какой из них подойдет лучше в вашем случае.

ilin61каждый раз пересчитываются полностьюЕсли алгоритм очень сложный и требует многократного чтения-записи из таблицы, то заведите еще одну таблицу, в которую только пишите готовый результат, и ее реплицируйте.
...
Рейтинг: 0 / 0
20.10.2019, 13:02
    #39878806
ilin61
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
Dimitry Sibiryakov,

Буду рад, если подскажете, какие есть средства репликация и инструменты подойдут в моем случае, может, у вас был опыт какой-то . Также вопрос, по поводу расчета агрегатов, как обрабатывать сложные кейсы, когда мне, к примеру, нужно посчитать count distinct по определённым полям, мне же в любом случае нужно пройтись по всей таблице заново и посчитать эти значения? Как обычно такие кейсы решаются?
...
Рейтинг: 0 / 0
20.10.2019, 13:03
    #39878808
ilin61
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
miksoft,

Спасибо за ответ, но вот этот готовый результат же будет постоянно полностью пересылаться ?
...
Рейтинг: 0 / 0
20.10.2019, 14:17
    #39878842
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61miksoft,

Спасибо за ответ, но вот этот готовый результат же будет постоянно полностью пересылаться ?Это уже зависит от бизнес-требований.
Если данные нужно видеть за вчерашние сутки, то сутки закончились-агрегаты пересчитались-репликация отработала-ждем следующих суток.
Если нужно практически в онлайне, то есть вариант модифицировать все места в коде, которые пишут в базу детальные данные, чтобы они же модифицировали и агрегированную таблицу.
...
Рейтинг: 0 / 0
20.10.2019, 15:39
    #39878861
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Как обычно такие кейсы решаются?

Обычно это решается разборками типа "а назачем нужен этот count(distinct) и нужен ли он
тут вообще". Может внезапно оказаться, что это совершенно ненужная свистоперделка. Или что
достаточно прохода по одной записи, а не всем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.10.2019, 23:04
    #39879010
H5N1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Буду рад, если подскажете, какие есть средства репликация и инструменты подойдут в моем случае, может, у вас был опыт какой-то . Также вопрос, по поводу расчета агрегатов, как обрабатывать сложные кейсы, когда мне, к примеру, нужно посчитать count distinct по определённым полям, мне же в любом случае нужно пройтись по всей таблице заново и посчитать эти значения? Как обычно такие кейсы решаются?
обычно такие кейсы решаются банальным DWH и ETL процессами по дороге.
реплицируйте нужные таблицы целиком и по копиям считайте ваши агрегаты, kpi и прочее, типичное для dwh
...
Рейтинг: 0 / 0
21.10.2019, 11:11
    #39879151
ilin61
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
H5N1,

У нас исходные таблицы содержат на порядки больше информации, чем агрегированные данные. Более того каналы связи оставляют желать лучшего :(
...
Рейтинг: 0 / 0
21.10.2019, 12:23
    #39879225
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
Каналы тут ни при чём. "Всё решают кадры." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.10.2019, 23:10
    #39880165
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Dimitry Sibiryakov,

Да, понятно, что через ETL это всё сделать можно. Но хотелось бы избежать дополнительной работы и сделать, используя готовые механизмы

Готовые механизмы, типа Goldengate, стоят весьма больших денег.
...
Рейтинг: 0 / 0
27.10.2019, 07:24
    #39882009
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Имеется несколько баз, находящихся в разных местах, в которых много данных. Есть идея из каждой базы выгружать маленький агрегированный слепок данных для аналитики и загружать в другую центральную базу для дальнейшего анализа.
довольно часто встречаемая задача.
ilin61Данные должны быть в центральной базе не старее одного часа от других.
А это уже нюанс.
Ибо в большинстве видимых мною задач данные выгружались "за день". Т.Е. за вчера.
Происходила агрегация данных, их передача, прием и пересчет кубов в центральной базе.

А подобная оперативность требует неких механизмов, напрямую зависящих от специфика задачи.
И универсального решения тут нет.
Кроме прямой и полной репликации.
...
Рейтинг: 0 / 0
28.10.2019, 21:38
    #39882485
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61,

Как это нет.
Делаете агрегированную таблицу, заполняете ее данными хотите сразу триггером, хотите по cron'у
Берете логическую реплику, и все. Дешево и сердито. Результат у вас данные при стабильном онлайне отличаться будут не более 10с.
Плюс фейловер из коробки.
...
Рейтинг: 0 / 0
29.10.2019, 05:30
    #39882537
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реплицирование агрегированной информации
ilin61Имеется несколько баз, находящихся в разных местах, в которых много данных. Есть идея из каждой базы выгружать маленький агрегированный слепок данных для аналитики и загружать в другую центральную базу для дальнейшего анализа. У кого-то есть опыт решения таких задач? Данные должны быть в центральной базе не старее одного часа от других. В postgresql не нашёл такого механизма (там либо вообще всё либо целая таблица), в MySQL вроде есть materialized view, которую вроде тоже можно реплицировать

Э-э-э есть же hadoop для такого. :-)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реплицирование агрегированной информации / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]