# ADPG Sizing recommendations
## Hardware requirements
### Рекомендации
**Общие**
- конфигурация хоста по реплику мастера всегда должна быть 1 в 1 с хостом мастера
**Disk**
- Лучшая производительность работы СУБД достигается, когда в все горячие данные умещаются в оперативной памяти. Данная характеристика может быть расчитана только индивидуально для каждого случая.
- Предпочтительно использование дисковых массивов RAID0 или RAID1, выше RAID4 сильно влияет на производительность СУБД под высокой OLTP нагрузкой
- Если стоит задача по миграции данных из Oracle, обычно аналогичные данные будут занимать больше места в PostgreSQL (из-за [page layout](https://www.postgresql.org/docs/current/storage-page-layout.html)), но в некоторых случаях это может зависеть от конфигурации Oracle. В частности, если в Oracle включен [FRA](https://oracle-dba.ru/database/backup-and-restore/fra/), то в таком случае данные в PostgreSQL займут меньше места, чем в Oracle.
- Объемы дисков под WAL могут быть оценены только опытным путем, т.к. это сильно зависит от характера нагрузки на СУБД
**CPU**
- Более высокая производительность СУБД достигается на процессорах от Intel, на ARM ахитектуре возникают просадки из-за софтверной эмуляции
**RAM**
- В общем объеме RAM надо учитывать выделение минимум 25% под [shared_buffers](https://www.postgresql.org/docs/current/runtime-config-resource.html)
- рекомендуется выставлять [huge_pages](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-HUGE-PAGES) в on
Network
- Под высоконагруженную OLTP нагрузку стоит сразу закладывать выделенную сеть с пропускной скоростьб в 10 ГБит/с, она очень важна для репликации, бэкапа и восстановления
- Если есть планы соержания второго датацентра, то зависит от его целей использования. Если как резерв, то можно использовать общую сеть между ДЦ, иначе лучше иметь выделенный канал для репликации.
### Host configuration
#### Minimal
**CPU**: 16 cores
**RAM**: 64GB
**Storage**: 2 x 512GB SSD RAID0 for Data + 2 x 512GB SSD RAID0 for WALs
**Network**: 4 x 10 Gbps (2 adapters) + 2 x 1 Gbps (management)
#### Рекомендуемая
##### Конфигурация хостов
CPU: 48 cores
RAM: 386GB
Storage: 2 x 480GB NVMe SSD RAID0 for Data + 2 x 512GB SSD RAID0 for WALs
Network: 2 x 10 Gbps (2 adapters)
##### Возможный сценарий:
Высоконагруженное приложение с OLTP нагрузкой порядка ~20K/s insert, ~5K/s update, ~5K/s delete, ~10K/s select
### Requirements review
Для оценки требуемых ресурсов под ADPG необходимо отталкиваться от имеющихся данных и задач, которые должны решаться с их использованием. В ряде случаев это может приводить к реораганизации способа хранения данных и работы с ними, что в свою очередь повлияется на требуемые ресурсы.
> Как пример, клиент может прийти с условием, что у него есть 5TB данных, все данные должны быть постоянно доступны для выполнения сложных аналитических запросов. При этом должна поддерживаться загрузка новых данных в режиме реального времени. В подобной ситуации имеет смысл пересмотреть подход к организации имеющихся данных как темпоральное разделение данных, предварительный расчет аггрегатов на старых данных и тд.