[Документация Yandex Cloud](../../index.md) > [Yandex Data Streams](../index.md) > [Практические руководства](index.md) > Ввод данных в системы хранения

# Ввод данных в системы хранения

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

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

Yandex Data Streams, как шина потоков данных, обеспечивает оптимальные режимы работы для источников и приемников:

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

![data-ingestion](../../_assets/data-streams/data-ingestion.svg)


## Преимущества {#advantages}

При работе с внешними устройствами или сервисами важно быстро сохранить полученные данные. Сохраненные данные можно получить из Data Streams прямым чтением, или настроить поставку данных в системы хранения Yandex Cloud с использованием Yandex Data Transfer.


### Прием данных {#receiving}

Данные в Data Streams передаются по [HTTP-протоколу](../kinesisapi/api-ref.md). С помощью сервиса [Yandex API Gateway](https://yandex.cloud/ru-kz/services/api-gateway) можно реализовать любой протокол приема данных. Принятые в API Gateway данные можно уже отправить в Data Streams.

Data Streams хорошо масштабируется и позволяет принимать данные от тысяч источников данных одновременно.


### Надежность {#reliability}

Шина потоков данных — это важный инфраструктурный компонент. Она устойчива ко всем видам отказов Yandex Cloud. Вводимые в Data Streams данные сохраняются минимум в три зоны доступности Yandex Cloud.


### Пакетирование {#batching}

Системы хранения и обработки данных наиболее производительны, если данные в них записываются пакетами (batch). Самое эффективное место для создания пакетов данных — единая точка, куда все данные стекаются. Роль такой единой точки обычно выполняют шины данных.


### Перемотка данных {#rewind}

Шины данных, в отличие от очередей сообщений, хранят данные вплоть до истечения времени хранения, не удаляя их после прочтения. Это позволяет в любом направлении перемещаться по хранимым данным: от самых старых к самым новым. Например, если появился новый формат данных и он некорректно записывается в принимающую систему, то можно отмотать хранящиеся данные в шине на начало и заново, уже корректно, их перечитать и записать в принимающую систему.


### Несколько систем хранения {#multiple}

Часто одни и те же данные хранят сразу в нескольких системах хранения: в ClickHouse® для быстрой [аналитики](../../glossary/data-analytics.md) и в Object Storage для долговременного хранения. С помощью шин данных это легко решается: за счет возможности одновременно читать данные разным приложениям можно настроить отправку одних и тех же данных сразу в обе системы хранения данных: ClickHouse® и Object Storage. Это же решение позволит в любой момент добавить третью систему хранения, например Greenplum® или Elasticsearch.

Подход с несколькими системами хранения очень удобен для соответствия compliance: ФЗ-152, PCI DSS и других — где нужно хранить данные не менее года. В этом случае данные за последний месяц для оперативного доступа можно отправлять в одну систему хранения, а данные для долгого хранения отправлять в «холодное» хранилище Object Storage.


### Маскирование и обработка логов {#mask}

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

Передаваемые данные можно отправить на обработку в Cloud Functions, где выполнить маскирование или любую другую обработку.

После обработки данные можно отправить сразу в несколько систем назначения: данные с маскированными персональными данными открыть всем сотрудникам, а полные данные только администраторам.


### Чтение данных {#read}

Сохраненные в Data Streams данные можно обработать программно. Data Streams совместим с протоколом Amazon Kinesis Data Streams API, что позволяет использовать SDK для различных языков разработки: C++, Java, Go, Python и тд.


## Настройка {#setup}

Чтобы настроить ввод данных в системы хранения:

1. [Создайте поток данных](../quickstart/create-stream.md) Data Streams.
1. [Настройте](../quickstart/index.md) AWS SDK.
1. Настройте Yandex Data Transfer для передачи данных в выбранную систему хранения.

    Пример настройки поставки данных из Data Streams приведен в [практическом руководстве по сохранению данных в ClickHouse®](send-to-clickhouse.md).

1. Подключите произвольную функцию обработки данных к Yandex Data Transfer. Код функции приведен в [примере](https://github.com/yandex-cloud-examples/yc-nginx-logs-data-transfer) на GitHub. Вы также можете использовать SDK для прямого чтения данных из Data Streams:

    * [Go](https://docs.aws.amazon.com/sdk-for-go/api/service/kinesis/).
    * [C++](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_kinesis_1_1_kinesis_client.html).
    * [Java](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesis/AmazonKinesisClient.html).
    * [JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis/index.html).
    * [Python](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/kinesis.html).
    * [HTTP Kinesis Data Streams API](../kinesisapi/api-ref.md).

_ClickHouse® является зарегистрированным товарным знаком [ClickHouse, Inc](https://clickhouse.com)._