# Основные и внешние базы данных

Различия между основными и внешними базами данных в NocoBase проявляются в четырех ключевых аспектах: поддержка типов баз данных, поддержка типов коллекций, поддержка типов полей, а также возможности резервного копирования и миграции.

## 1. Поддержка типов баз данных

Подробнее см.: [Управление источниками данных](https://docs.nocobase.com/data-sources/data-source-manager)

### Типы баз данных

| Тип базы данных | Поддержка основной БД | Поддержка внешней БД |
|---|---|---|
| PostgreSQL | ✅ | ✅ |
| MySQL | ✅ | ✅ |
| MariaDB | ✅ | ✅ |
| KingbaseES | ✅ | ✅ |
| MSSQL | ❌ | ✅ |
| Oracle | ❌ | ✅ |

### Управление коллекциями

| Управление коллекциями | Поддержка основной БД | Поддержка внешней БД |
|---|---|---|
| Базовое управление | ✅ | ✅ |
| Визуальное управление | ✅ | ❌ |

## 2. Поддержка типов коллекций

Подробнее см.: [Коллекции](https://docs.nocobase.com/data-sources/data-modeling/collection)

| Тип коллекции | Основная БД | Внешняя БД | Описание |
|---|---|---|---|
| Базовая коллекция | ✅ | ✅ | Базовая коллекция |
| Представление | ✅ | ✅ | Представление источника данных |
| Наследование | ✅ | ❌ | Поддерживает наследование моделей данных, только для основного источника данных |
| Файловая | ✅ | ❌ | Поддерживает загрузку файлов, только для основного источника данных |
| Комментарии | ✅ | ❌ | Встроенная система комментариев, только для основного источника данных |
| Календарь | ✅ | ❌ | Коллекция для представлений календаря |
| Выражение | ✅ | ❌ | Поддерживает вычисления по формулам |
| Древовидная | ✅ | ❌ | Для моделирования древовидных структур данных |
| SQL | ✅ | ❌ | Коллекция, определяемая с помощью SQL |
| Внешняя связь | ✅ | ❌ | Коллекция-связь для внешних источников данных, ограниченная функциональность |

## 3. Поддержка типов полей

Подробнее см.: [Поля коллекций](https://docs.nocobase.com/data-sources/data-modeling/collection-fields)

### Базовые типы

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Однострочный текст | ✅ | ✅ |
| Многострочный текст | ✅ | ✅ |
| Номер телефона | ✅ | ✅ |
| Электронная почта | ✅ | ✅ |
| URL | ✅ | ✅ |
| Целое число | ✅ | ✅ |
| Число | ✅ | ✅ |
| Процент | ✅ | ✅ |
| Пароль | ✅ | ✅ |
| Цвет | ✅ | ✅ |
| Иконка | ✅ | ✅ |

### Типы выбора

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Флажок | ✅ | ✅ |
| Выпадающий список (одиночный выбор) | ✅ | ✅ |
| Выпадающий список (множественный выбор) | ✅ | ✅ |
| Переключатель | ✅ | ✅ |
| Группа флажков | ✅ | ✅ |
| Регион Китая | ✅ | ❌ |

### Медиа-типы

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Медиа | ✅ | ✅ |
| Markdown | ✅ | ✅ |
| Markdown (Vditor) | ✅ | ✅ |
| Расширенный текст | ✅ | ✅ |
| Вложение (связь) | ✅ | ❌ |
| Вложение (URL) | ✅ | ✅ |

### Типы даты и времени

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Дата и время (с часовым поясом) | ✅ | ✅ |
| Дата и время (без часового пояса) | ✅ | ✅ |
| Unix-метка времени | ✅ | ✅ |
| Дата (без времени) | ✅ | ✅ |
| Время | ✅ | ✅ |

### Геометрические типы

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Точка | ✅ | ✅ |
| Линия | ✅ | ✅ |
| Круг | ✅ | ✅ |
| Многоугольник | ✅ | ✅ |

### Расширенные типы

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| UUID | ✅ | ✅ |
| Nano ID | ✅ | ✅ |
| Сортировка | ✅ | ✅ |
| Формула | ✅ | ✅ |
| Последовательность | ✅ | ✅ |
| JSON | ✅ | ✅ |
| Селектор коллекции | ✅ | ❌ |
| Шифрование | ✅ | ✅ |

### Системные информационные поля

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Дата создания | ✅ | ✅ |
| Дата последнего изменения | ✅ | ✅ |
| Создано | ✅ | ❌ |
| Последнее изменение | ✅ | ❌ |
| OID таблицы | ✅ | ❌ |

### Типы связей

| Тип поля | Основная БД | Внешняя БД |
|---|---|---|
| Один к одному | ✅ | ✅ |
| Один ко многим | ✅ | ✅ |
| Многие к одному | ✅ | ✅ |
| Многие ко многим | ✅ | ✅ |
| Многие ко многим (массив) | ✅ | ✅ |

:::info
Поля вложений зависят от файловых коллекций, которые поддерживаются только основными базами данных. Следовательно, внешние базы данных в настоящее время не поддерживают поля вложений.
:::

## 4. Сравнение поддержки резервного копирования и миграции

| Функция | Основная БД | Внешняя БД |
|---|---|---|
| Резервное копирование и восстановление | ✅ | ❌ (Управляется пользователем) |
| Управление миграцией | ✅ | ❌ (Управляется пользователем) |

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

## Сводное сравнение

| Параметр сравнения | Основная БД | Внешняя БД |
|---|---|---|
| Типы баз данных | PostgreSQL, MySQL, MariaDB, KingbaseES | PostgreSQL, MySQL, MariaDB, MSSQL, Oracle, KingbaseES |
| Поддержка типов коллекций | Все типы коллекций | Только базовые коллекции и коллекции-представления |
| Поддержка типов полей | Все типы полей | Все типы полей, кроме полей вложений |
| Резервное копирование и миграция | Встроенная поддержка | Управляется пользователем |

## Рекомендации

- **Если вы используете NocoBase для создания новой бизнес-системы**, пожалуйста, используйте **основную базу данных**. Это позволит вам задействовать весь функционал NocoBase.
- **Если вы используете NocoBase для подключения к базам данных других систем с целью выполнения базовых операций CRUD**, тогда используйте **внешние базы данных**.