Serwer cloud dla PostgreSQL w Europie
PostgreSQL to baza danych wybierana do aplikacji wymagajacych niezawodności, złożonych zapytań i scislej integralnosci danych. Jesli Twoi użytkownicy lub firma znajduja sie w Europie, uruchomienie PostgreSQL na serwerze cloud UE to nie tylko techniczna preferencja - to prawna koniecznosc zgodna z RODO.
Dlaczego rezydencja danych w UE ma znaczenie dla PostgreSQL
RODO wymaga, aby dane osobowe mieszkańców UE były przetwarzane pod jurysdykcja UE. Hosting bazy danych PostgreSQL na serwerze fizycznie zlokalizowanym w UE i prowadzonym przez europejska firme spelnia wymogi rezydencji danych bez skomplikowanych umów z amerikanskimi hipereskalerami.
Ponadto serwery w UE zapewniaja mniejsze opoznienia dla europejskich użytkowników. Baza danych we Frankfurcie lub Pradze odpowiada aplikacji w Berlinie o 30-80 ms szybciej niz ta hostowana w Wirginii.
Minimalne specyfikacje dla PostgreSQL
- Mały (dev/staging) - 4 vCPU, 8 GB RAM, 100 GB NVMe SSD
- Średni (produkcyjna aplikacja) - 8 vCPU, 32 GB RAM, 500 GB NVMe SSD
- Duży (analityka lub OLTP z duza liczba zapisów) - 16+ vCPU, 64-128 GB RAM, 1+ TB NVMe SSD
Rekomendowana konfiguracja DCXV
Serwery cloud DCXV dzialaja na certyfikowanej infrastrukturze Tier III w UE z przechowywaniem NVMe. Praktyczna konfiguracja produkcyjna PostgreSQL na DCXV:
- 8 vCPU, 32 GB RAM, 500 GB NVMe - obsluguje wiekszosc produkcyjnych baz danych SaaS
- 16 vCPU, 64 GB RAM, 1 TB NVMe - bazy danych analityczne z rownoleglymi zapytaniami raportowania
Skontaktuj sie z sales@dcxv.com w celu uzyskania rekomendacji konfiguracji.
Komendy szybkiej konfiguracji
# Instalacja PostgreSQL 16 na Ubuntu 22.04
sudo apt update && sudo apt install -y postgresql-16
# Uruchomienie i wlaczenie usługi
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Tworzenie bazy danych i uzytkownika
sudo -u postgres psql -c "CREATE DATABASE myapp;"
sudo -u postgres psql -c "CREATE USER myapp_user WITH ENCRYPTED PASSWORD 'strongpassword';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE myapp TO myapp_user;"
# Kluczowe ustawienia postgresql.conf dla 32 GB RAM
shared_buffers = 8GB
effective_cache_size = 24GB
work_mem = 64MB
maintenance_work_mem = 2GB
max_connections = 200
Co naprawdę robi każde ustawienie pamięci
Cztery wartości w tym bloku konfiguracji nie są przypadkowe, a tylko jedna z nich jest limitem na serwer. Pomylenie tej różnicy sprawia, że maszyna z zapasem RAM zaczyna korzystać ze swapu:
| Ustawienie | Co obejmuje | Wartość powyżej | Jak poznać, że jest błędna |
|---|---|---|---|
| shared_buffers | Wspólna pamięć podręczna stron, raz na serwer | 8 GB | Odczyty nadal trafiają na dysk, choć wolna pamięć jest nieużywana |
| work_mem | Jedno sortowanie lub hash, na operację | 64 MB | W logu pojawiają się pliki tymczasowe albo serwer swapuje pod obciążeniem |
| maintenance_work_mem | VACUUM i budowa indeksów, na workera | 2 GB | Autovacuum nigdy nie kończy na największej tabeli |
| effective_cache_size | Nic - to wskazówka dla planera | 24 GB | Planer wybiera skanowanie sekwencyjne zamiast dobrego indeksu |
Najbardziej boli work_mem. Działa na sortowanie, nie na połączenie, więc zapytanie z trzema sortowaniami na pięćdziesięciu połączeniach może poprosić o sto pięćdziesiąt razy więcej, niż ustawiono. Podnoś je dla tego jednego zapytania raportowego, w jego sesji, a nie dla całego serwera.
Oczekiwana wydajność
Na instancji o 8 vCPU / 32 GB RAM / NVMe z PostgreSQL 16:
- pgbench TPS (tylko odczyt) - 12 000-18 000 TPS
- pgbench TPS (odczyt-zapis) - 4 000-7 000 TPS
- Opoznienie wyszukiwania jednego wiersza (z indeksem) - poniżej 0,5 ms
To oczekiwania dla sprzętu tej klasy, a nie pomiary z naszego laboratorium. Traktuj je jako punkt wyjścia do doboru rozmiaru i zmierz własne obciążenie: realne liczby zależą od twoich danych, zapytań i tuningu znacznie bardziej niż od dostawcy.
Podsumowanie
PostgreSQL na serwerze cloud UE zapewnia zgodność z RODO, male opoznienia dla europejskich użytkowników i pełna kontrole nad danymi.
