Multi-tenancy e Database di Azure per PostgreSQL
Molte soluzioni multi-tenant in Azure usano il sistema di gestione di database relazionali open source Database di Azure per PostgreSQL. In questo articolo vengono esaminate le funzionalità di Database di Azure per PostgreSQL utili per l'uso di sistemi multi-tenant. L'articolo include anche collegamenti a linee guida ed esempi per l'uso di Database di Azure per PostgreSQL in una soluzione multi-tenant.
Modalità di distribuzione
Sono disponibili due modalità di distribuzione per Database di Azure per PostgreSQL adatte per l'uso con applicazioni multi-tenant:
- Database di Azure per PostgreSQL - Server flessibile: questa è una buona scelta per la maggior parte delle distribuzioni multi-tenant che non richiedono la scalabilità elevata fornita da Azure Cosmos DB per PostgreSQL.
- Azure Cosmos DB per PostgreSQL : un servizio di database gestito di Azure progettato per soluzioni che richiedono un livello elevato di scalabilità, che spesso include applicazioni multi-tenant. Questo servizio fa parte della famiglia di prodotti Azure Cosmos DB.
Nota
Database di Azure per PostgreSQL - Il server singolo è sul percorso di ritiro ed è pianificato per il ritiro entro il 28 marzo 2025. Non è consigliabile per i nuovi carichi di lavoro multi-tenant.
Funzionalità di Database di Azure per PostgreSQL che supportano la multi-tenancy
Quando si compila un'applicazione multi-tenant usando Database di Azure per PostgreSQL, è possibile usare diverse funzionalità per migliorare la soluzione.
Nota
Alcune funzionalità sono disponibili solo in modalità di distribuzione specifiche. Queste funzionalità sono indicate nelle indicazioni seguenti.
Sicurezza a livello di riga
La sicurezza a livello di riga è utile per applicare l'isolamento a livello di tenant quando si usano tabelle condivise. In PostgreSQL la sicurezza a livello di riga viene implementata applicando i criteri di sicurezza delle righe alle tabelle per limitare l'accesso alle righe in base al tenant.
È possibile che si verifichi un lieve impatto sulle prestazioni quando si implementa la sicurezza a livello di riga in una tabella. Potrebbe pertanto essere necessario creare indici aggiuntivi nelle tabelle con sicurezza a livello di riga abilitata per garantire che le prestazioni non siano interessate. È consigliabile usare tecniche di test delle prestazioni per verificare che il carico di lavoro soddisfi i requisiti di prestazioni di base quando è abilitata la sicurezza a livello di riga.
Ulteriori informazioni:
Ridimensionamento orizzontale con partizionamento orizzontale
Il modello di partizionamento orizzontale consente di ridimensionare il carico di lavoro tra più database o server di database.
Le soluzioni che richiedono un livello molto elevato di scalabilità possono usare Azure Cosmos DB per PostgreSQL. Questa modalità di distribuzione abilita il partizionamento orizzontale dei tenant tra più server (nodi). Usando le tabelle distribuite nei database multi-tenant, è possibile assicurarsi che tutti i dati per un tenant vengano archiviati nello stesso nodo, aumentando così le prestazioni delle query.
Nota
A partire da ottobre 2022, Database di Azure per PostgreSQL Hyperscale (Citus) è stato rinominato come Azure Cosmos DB per PostgreSQL e spostato nella famiglia di prodotti Cosmos DB.
Ulteriori informazioni:
- Progettare un database multi-tenant usando Azure Cosmos DB per PostgreSQL
- Tabelle con distribuzione
- Scelta di una colonna di distribuzione in una tabella distribuita.
- Guida all'uso di Citus per applicazioni multi-tenant.
Pool di connessioni
Postgres usa un modello basato su processo per le connessioni. Questo modello rende inefficiente la gestione di un numero elevato di connessioni inattive. Alcune architetture multi-tenant richiedono un numero elevato di connessioni attive, che influiranno negativamente sulle prestazioni del server Postgres.
Il pool di connessioni tramite PgBouncer viene installato per impostazione predefinita in Database di Azure per PostgreSQL - Server flessibile.
Ulteriori informazioni:
- PgBouncer in Database di Azure per PostgreSQL - Server flessibile
- Pool di connessioni in Azure Cosmos DB per PostgreSQL
- Procedura per installare e configurare il proxy del pool di connessioni PgBouncer con Database di Azure per PostgreSQL
Autenticazione Microsoft Entra
Database di Azure per PostgreSQL : il server flessibile supporta l'autenticazione delle connessioni tramite Microsoft Entra ID. Questa funzionalità consente ai carichi di lavoro dell'applicazione in un ambiente multi-tenant di eseguire l'autenticazione al database usando un'entità servizio o un'identità gestita specifica del tenant, il che significa che l'accesso al database può essere limitato a un singolo tenant. Combinando l'autenticazione di Microsoft Entra ID con i criteri di sicurezza delle righe specifici del tenant, è possibile ridurre il rischio che un'applicazione acceda ai dati di un altro tenant dall'interno di un database multi-tenant. Ulteriori informazioni:
- Autenticazione Microsoft Entra con Database di Azure per PostgreSQL - Server flessibile
- Connettersi con l'identità gestita al server flessibile di Database di Azure per PostgreSQL
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autore principale:
- Daniel Scott-Raynsford | Partner Technology Strategist
Altri contributori:
- John Downs | Principal Software Engineer
- Arsen Vladimirintune | Principal Customer Engineer, FastTrack per Azure
- Paul Burpo | Principal Customer Engineer, FastTrack per ISV di Azure
- Assaf Fraenkel | Senior Engineer/Data Architect, Azure FastTrack per ISV e start-up
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
Esaminare gli approcci di archiviazione e dati per la multi-tenancy.