2013-11-21 2 views
5

Я новичок в шторме. просто думая, могу ли я использовать шторм для объединения/объединения двух таблиц из двух разных dbs (из coz, две таблицы имеют какое-то отношение к внешнему ключу, просто существуют в разных dbs/системах), любые идеи Как я буду составлять топология? например, иметь два разделенных носа, периодически читающих от двух dbs и имеющих болт, чтобы выполнить работу соединения?Используйте шторм, чтобы присоединиться к двум столам из двух разных dbs

Это даже подходящий вариант использования для шторма?

любые идеи оцениваются!

ответ

3

как имеющий две разнесенные носики периодически читает из двух DBS и с болтом, чтобы сделать то подключится к работе

Да, это очень возможно. Шторм может иметь несколько spouts. И A bolt consumes any number of input streams, does some processing, and possibly emits new streams. обычно лучше, чтобы ваш носик читался из очереди, такой как Kafka или RabbitMQ (вы можете найти интеграцию с носиком с большей частью системы очередей). Таким образом, в этом случае вы можете подать очередь с данными из БД, а затем позволить носик потреблять то же самое.

UPDATE:
Вот очень хороший Article о том, как шторм параллелизм работы

+0

Thanks @ user2720864. два вопроса: 1. Будет ли болт находиться под большим давлением, потому что все выбросы идут на один болт, учитывая, что это соединение, трудно распараллелить соединение с несколькими болтами, я полагаю. 2. Есть ли какой-либо существующий подход, который запускает данные db в очередь сообщений, добавит ли он еще одну сложность слоя в конвейер? – Shengjie

+1

Насколько я понимаю ... 1. Может быть один болт, но вы можете запускать несколько экземпляров одного и того же с использованием параллелизма шторма. 2. Вы ищете существующий проект, который работает нормально? – user2720864

+0

Да, если есть существующий проект, который делает это :) В настоящее время я пишу периодический запрос к оригинальным dbs внутри самого желоба, не совсем уверен, что это правильный способ сделать это. – Shengjie

6

Это может быть хорошо использовать Storm, но это действительно зависит от набора данных. Если у вас есть только две таблицы в отдельных СУБД, которые вы хотите присоединиться и сохранить на каком-то третьем месте (СУБД или иначе), Storm будет иметь смысл только в том случае, если это потоковое соединение, то есть две таблицы часто записываются и вы хотите присоединиться к тому, что было недавно написано вместе.

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

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

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