---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.4
alternate:
  - https://ydb.tech/docs/en/dev/getting-started.md
  - https://ydb.tech/docs/ru/dev/getting-started.md
sourcePath: ru/core/dev/getting-started.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Начало работы с YDB в роли разработчика приложений

Прежде всего, вам необходимо получить доступ к кластеру YDB. Следуйте [инструкциям по быстрому запуску](https://ydb.tech/docs/ru/quickstart.md), чтобы получить базовый локальный инстанс. Также вы можете совместно со своей DevOps командой [создать production кластер](https://ydb.tech/docs/ru/devops/index.md) или воспользоваться [Yandex Managed Service for YDB](https://yandex.cloud/ru/services/ydb).

Второй шаг — это разработка схемы данных, если вы создаёте приложение с нуля, или адаптирование схемы данных существующего приложения, если вы переходите с другой системы управления базами данных.

Параллельно с проектированием схемы вам необходимо настроить среду разработки для взаимодействия с YDB. Есть несколько основных аспектов, которые рассматриваются ниже.

## Выбор API

Выберите YDB API, который вы будете использовать; есть несколько вариантов:

- Для основных языков программирования рекомендуется использовать [YDB SDK](https://ydb.tech/docs/ru/reference/ydb-sdk/index.md). Они предоставляют высокоуровневые API и реализуют рекомендованные подходы по работе с YDB. YDB SDK доступны для нескольких популярных языков и стремятся к равенству функциональности, но не все из них являются полнофункциональными. Обратитесь к [таблице сравнения функций SDK](https://ydb.tech/docs/ru/reference/ydb-sdk/feature-parity.md), чтобы проверить, соответствует ли SDK для выбранного языка программирования вашим потребностям, также с её помощью можно выбрать язык программирования с лучшим охват функций, если вы гибки в этом вопросе.
- Если вас интересует функция [YDB топиков](https://ydb.tech/docs/ru/concepts/datamodel/topic.md), стоит отметить, что они предоставляют [Kafka-совместимый API](https://ydb.tech/docs/ru/reference/kafka-api/index.md). Перейдите по этой ссылке, если этот вариант использования для вас актуален.
- В крайнем случае, собственный API YDB основан на протоколе [gRPC](https://grpc.io/), вокруг которого есть экосистема, включая генерацию кода клиентов. [gRPC спецификации YDB API](https://github.com/ydb-platform/ydb/tree/main/ydb/public/api/grpc) размещены на GitHub, и вы можете использовать их в своём приложении. Сгенерированные клиенты являются низкоуровневыми и потребуют дополнительной работы для правильной обработки таких аспектов, как ретраи и таймауты. Следуйте по этому пути только если другие варианты невозможны, и вы знаете, что делаете.

## Установите пререквизиты

Выберите конкретный язык программирования, который вы будете использовать. [Установите соответствующий YDB SDK](https://ydb.tech/docs/ru/reference/ydb-sdk/index.md).

Кроме того, рекомендуется настроить хотя бы один из доступных способов запуска произвольных запросов в целях отладки. Выберите часть из них по своим предпочтениям:

* [YDB CLI](https://ydb.tech/docs/ru/reference/ydb-cli/install.md)
* [Встроенный пользовательский интерфейс](https://ydb.tech/docs/ru/reference/embedded-ui/index.md)
* Любая среда разработки SQL, поддерживающая [JDBC](https://github.com/ydb-platform/ydb-jdbc-driver).

## Начать писать код

### Для пути с YDB SDK

– Пройдите [туториал по YQL](https://ydb.tech/docs/ru/dev/yql-tutorial/index.md), чтобы познакомиться с SQL диалектом  YDB.

- Изучите [примеры приложений](https://ydb.tech/docs/ru/dev/example-app/index.md), чтобы узнать, как выглядит работа с SDK.
- Ознакомьтесь с [рецептами SDK](https://ydb.tech/docs/ru/recipes/ydb-sdk/index.md) для типичных случаев использования SDK, к которым вы сможете обратиться позже.
- Ознакомьтесь с рекомендациями по [обработке ошибок YDB SDK](https://ydb.tech/docs/ru/reference/ydb-sdk/error_handling.md).
- Ориентируйтесь на возможности вашего IDE по навигации по коду при работе с SDK.

## Тестирование

Как написать тесты на приложения, работающие с YDB:

- Для функциональных тестов вы можно имитировать (mock) ответы YDB, используя подходящуй фреймворк тестирования для выбранного языка программирования.
- Для интеграционных тестов можно запустить одноузловой YDB в вашем [CI/CD](https://en.wikipedia.org/wiki/CI/CD) окружении с помощью Docker образа или исполняемого файла аналогично тому, как это делается в [статье быстрого старта](https://ydb.tech/docs/ru/quickstart.md). Рекомендуется тестироваться с несколькими версиями YDB: той, которая у вас есть в production, чтобы проверить наличие проблем, с которыми вы можете столкнуться при обновлении своего приложения, а также более новые версиями YDB, чтобы на ранней стадии выявлять потенциальные проблемы обновления YDB.
- Для тестов производительности рекомендуется использовать кластер, развёрнутый в соответствии с инструкциями для [production использования](https://ydb.tech/docs/ru/devops/index.md), поскольку использование одного узла не даст реалистичных результатов. Вы можете запускать [ydb workload](https://ydb.tech/docs/ru/reference/ydb-cli/commands/workload/index.md), если хотите увидеть, как ваш кластер YDB работает на общих сценариях ещё до разработки своего приложения. Затем вы можете использовать [исходный код библиотеки, лежащей в основе этого инструмента](https://github.com/ydb-platform/ydb/tree/main/ydb/library/workload) в качестве примера того, как написать собственные тесты на производительность с YDB. Было бы здорово, если бы вы могли [законтрибьютить](https://ydb.tech/docs/ru/contributor/index.md) анонимизированную версию вашей рабочей нагрузки, чтобы её можно было включить в тестирование производительности самого YDB.

## Что дальше

Вышеизложенного должно быть достаточно, чтобы начать разработку приложений, взаимодействующих с YDB. В процессе работы используйте справочную документацию [YQL](https://ydb.tech/docs/ru/yql/reference/index.md) и [YDB SDK](https://ydb.tech/docs/ru/reference/ydb-sdk/index.md), а также другую ресурсы в этом разделе документации.

В случае возникновения каких-либо проблем, не стесняйтесь обсуждать их в [YDB Discord](https://discord.gg/R5MvZTESWc) или [Telegram чате](https://t.me/ydb_ru).
