Этот репозиторий содержит реализацию адаптера базы данных для интеграции Яндекс Базы Данных (YDB) с ORM Django. Адаптер предназначен для обеспечения бесперебойной работы приложений Django с YDB, поддерживая его уникальные возможности и функции.
Адаптер состоит из нескольких ключевых компонентов, каждый из которых выполняет определённые функции, необходимые для интеграции с ORM Django. Ниже представлен обзор каждого компонента и рекомендации по его реализации:
- Назначение: Основной интерфейс между ORM Django и YDB. Управляет подключениями к базе данных, выполнением запросов и управлением транзакциями.
- Задачи реализации:
- Управление подключениями к базе данных и повторными подключениями.
- Реализация методов управления транзакциями (
set_autocommit
,commit
,rollback
). - Создание курсора, преобразующего запросы Django в запросы, совместимые с YDB.
- Назначение: Определяет возможности YDB в отношении ожиданий Django к функциональности бэкенда.
- Задачи реализации:
- Указание возможностей, таких как
supports_transactions
,supports_json
,has_bulk_insert
и др. - Настройка флагов возможностей в зависимости от способностей YDB.
- Указание возможностей, таких как
- Назначение: Настройка операций базы данных под особенности YDB, такие как форматирование дат, времени и синтаксис запросов.
- Задачи реализации:
- Реализация методов конвертации типов данных (
date_extract_sql
,datetime_cast_date_sql
и т.д.). - Настройка синтаксиса SQL для функций типа
last_insert_id
,regex_search
и других.
- Реализация методов конвертации типов данных (
- Назначение: Предоставляет утилиты для выполнения управленческих команд или задач по обслуживанию базы данных непосредственно из Django.
- Задачи реализации:
- Реализация методов для выполнения команд по обслуживанию базы данных с использованием инструментов YDB.
- Назначение: Управляет созданием схемы базы данных, её удалением и миграциями, специфичными для YDB.
- Задачи реализации:
- Адаптация фреймворка миграций Django для работы со способностями управления схемой YDB.
- Обработка создания и удаления схемы базы данных для тестовых сред.
- Назначение: Позволяет Django анализировать таблицы и схемы базы данных для предложения типов полей моделей и других операций с метаданными.
- Задачи реализации:
- Сопоставление типов данных YDB с типами полей Django.
- Реализация методов для получения списка таблиц, имен столбцов, хранимых процедур и т.д.
- Назначение: Управляет изменениями в схеме базы данных, такими как добавление и удаление индексов, полей и таблиц.
- Задачи реализации:
- Реализация методов изменения схемы с учётом возможностей и ограничений YDB.
- Обработка динамических изменений схемы во время работы.
Для использования этого адаптера склонируйте этот репозиторий и настройте настройки вашего проекта Django для использования бэкенда YDB:
DATABASES = {
'default': {
'ENGINE': 'path.to.ydb_adapter',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'your_db_host',
'PORT': 'your_db_port',
}
}