[перевод] подключение потоков данных

база данных Программа перевода самородков Большие данные

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

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

При соединении потоков сообщения в разных потоках, которые связаны друг с другом, обычно идентифицируются набором ключевых слов. Например, у клиента есть идентификатор клиента, у контракта есть идентификатор контракта и идентификатор клиента (внешний ключ), которому принадлежит контракт. Чтобы связать конкретный объект клиента со связанным с ним объектом контракта, вы можете найти объект контракта в потоке контракта, убедившись, что объект контракта имеет идентификатор клиента, соответствующий идентификатору запрашиваемого клиента.

Потоковое представление данных

При обработке потоков данных вы обрабатываете одно сообщение или запись за раз. У вас нет доступа ни к предыдущим записям в этом потоке, ни к будущим записям. Следовательно, чтобы иметь возможность находить записи из другого потока, сообщения этого потока должны храниться в каком-либо представлении данных.

Существует два распространенных варианта представления данных:

  • Виндовс (Виндовс)
  • Таблица (Таблицы)

Окна данных

Одинокно данныхЗапись сохраняется, где запись может быть найденаОкна. Окна данных обычно ограничены временем, количеством записей и другими ограничениями хранения. Время часто используется для ограничения окна, когда ожидается, что записи в двух потоках поступят близко друг к другу во времени. Записи в одном потоке затем могут храниться в окне, например 5 минут или 30 минут (или любое другое временное окно, подходящее для фактического варианта использования), до тех пор, пока не поступят записи в других потоках данных.

Таблицы данных

Одинтехническая спецификацияСохраняйте записи в табличной структуре данных. Такой структурой данных может быть простой ключ, карта записей, где записи можно искать по их ключу. Записи также можно хранить в другом месте, например в таблицах базы данных, чтобы записи можно было найти по первичным ключам, внешним ключам и другим значениям.

Сочетание окна данных и таблицы данных

Окна данных и таблицы можно комбинировать. В таблице данных могут храниться только данные окна записи. Когда запись «слишком старая» для отображения в окне, она также снова удаляется из таблицы данных.

другие представления данных

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

запись после переадресации соединения

Иногда вам может понадобиться переслать записи из потока данных, который уже объединен с записями в другом потоке данных. здесьВпередОтносится к записи объединенных записей в другой поток данных для использования другими. здесьсоединятьОтносится либо к вставке одной записи в другую, либо к созданию новой записи, содержащей информацию о соединении двух записей. Оба варианта показаны на изображении ниже:

После того, как вы перенаправите подключенные записи, возникнут некоторые проблемы, влияющие на правильность и производительность системы. Я рассмотрю эти вопросы в следующих разделах.

Проблема сроков

Время поступления записей во входной поток данных влияет на то, как выглядят подключенные записи при обработке или пересылке. На следующей диаграмме показано, как разница во времени влияет на объединенные записи двух входных записей:

Каждая из записей A и B обновляется 2 раза. Две версии помечены как A1, A2, B1 и B2, где числа представляют версию записи. Обратите внимание, как время прибытия A1, A2, B1 и B2 влияет на внешний вид записи соединения при обработке или пересылке. На графике показаны 3 различных временных схемы, и результат соединения в каждом случае выглядит по-разному.

Обратите внимание, что даже если окончательные объединенные записи выглядят одинаково, объединенные записи, в результате которых получается окончательная запись, не будут одинаковыми. Также имейте в виду, что никогда не знаешь, когда будет подключена «окончательная» запись. Невозможно узнать, что произойдет в будущем во входном потоке данных. Таким образом, вы не можете просто посмотреть на последнюю запись в приведенном выше примере и получить «окончательный» результат операции соединения этих записей в потоке данных. «Конечным» результатом является полная последовательность записей лигирования во всех промежуточных мутациях.

проблема горизонтальной масштабируемости

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

Как и ранее, учебник, как правило, связан с совпадением ключа записи. Например, запись CustomerId может использоваться в качестве первичного ключа, а запись Contract может иметь ссылку на внешний ключ записи customerIdFk customerId Customer первичного ключа.

Когда поток данных масштабируется горизонтально, записи в потоке данных разделены на разных компьютерах. Чтобы присоединиться к двум записям, либо записи разделены на одном компьютере, или операция присоединения должна знать, как найти записи, хранящиеся на другом компьютере. Эти два варианта описаны более подробно в следующих разделах.

переразметка записи

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

Обратите внимание, что перераспределение записей может снизить производительность всей цепочки обработки записей (то есть графа или топологии). При перераспределении также создаются дополнительные копии перераспределенных записей.

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.