Che cos'è Azure HorizonDB (anteprima)?

Azure HorizonDB è un servizio di database completamente gestito e pronto per l'intelligenza artificiale nativo del cloud basato su PostgreSQL. Combina un'architettura di calcolo e archiviazione disaggregata con una progettazione di database come log per offrire prestazioni prevedibili, sicurezza di livello aziendale, disponibilità elevata e scalabilità senza problemi per carichi di lavoro cruciali.

Azure HorizonDB consente agli sviluppatori di creare applicazioni intelligenti basate sull'intelligenza artificiale tramite il supporto nativo per incorporamenti vettoriali e l'integrazione con gli strumenti di Azure AI Foundry, mantenendo al tempo stesso la compatibilità completa di PostgreSQL in modo che le applicazioni esistenti possano facilmente eseguire la migrazione a Azure HorizonDB.

Casi d'uso di Azure HorizonDB

Azure HorizonDB è un'alternativa cloud-native scalabile a PostgreSQL autogestito ed è progettata per carichi di lavoro mission-critical, tra cui, a titolo esemplificativo e non esaustivo:

  • Carichi di lavoro transazionali (OLTP): elaborazione di transazioni ad alta velocità effettiva, bassa latenza con prestazioni prevedibili per applicazioni line-of-business, piattaforme di e-commerce e back-end SaaS.
  • Applicazioni intelligenti e di intelligenza artificiale : il supporto nativo per la ricerca e l'incorporamento dei vettori consente di creare pipeline di generazione aumentata (RAG) di recupero, motori di raccomandazione e ricerca semantica direttamente all'interno del livello del database. La gestione dei modelli di intelligenza artificiale e le pipeline di intelligenza artificiale semplificano ulteriormente la creazione di applicazioni intelligenti all'interno del database.
  • Scalabilità in lettura massiva - Applicazioni che possono beneficiare della scalabilità in lettura con dati resilienti della zona condivisi.
  • Applicazioni ibride - Integrazione con l'ecosistema Azure, eseguire il mirroring dei dati transazionali in OneLake di Microsoft Fabric, integrandoli con altri dati analitici.

Architettura di Azure HorizonDB

Azure HorizonDB si basa su due principi di architettura fondamentali: separazione delle risorse di calcolo e archiviazione e una progettazione di database come log.

Diagramma che mostra l'architettura Azure HorizonDB.

Calcolo e archiviazione disaggregati

L'architettura separa completamente il livello di calcolo dal livello di archiviazione:

  • Livello di calcolo - Il calcolo su Azure HorizonDB è senza stato. Le risorse di calcolo (vCore e memoria) possono essere ridimensionate in modo indipendente senza influire sull'archiviazione e viceversa. È possibile aumentare orizzontalmente le letture aggiungendo repliche al cluster HorizonDB.
  • Layerstorage - Il livello di archiviazione usa due fleet di archiviazione appositamente create: una dedicata a WAL, un'altra ai dati; entrambe hanno una durabilità supportata dall'archiviazione Azure. Tutte le risorse di archiviazione sono resilienti alla zona per impostazione predefinita. L'archiviazione si espande automaticamente con l'aumentare dei dati, indipendentemente dal livello di calcolo provisionato.

La separazione tra calcolo e archiviazione offre diversi vantaggi:

  • Ridimensionare le risorse di calcolo e archiviazione in modo indipendente in base alle esigenze del carico di lavoro.
  • Provisioning rapido delle repliche in lettura, poiché condividono la stessa archiviazione sottostante e non è necessaria la replicazione dei dati.
  • Failover più rapido per l'alta disponibilità grazie all'archiviazione WAL condivisa e duratura, senza necessità di ripristinare i log.

Architettura del database come log

Azure HorizonDB adotta un'architettura in cui il database funge da log, nella quale solo il WAL (Write Ahead Log) viene scritto dal livello di calcolo al livello di archiviazione. Le pagine di dati non vengono scritte dalle repliche di calcolo al livello di archiviazione. WAL è la fonte autorevole della verità attraverso il sistema.

  • Tutte le operazioni di scrittura (Write-Ahead Log) vengono accodate a un servizio di log persistente prima di essere confermate al client. Il servizio WAL è ottimizzato per la semantica di un log delle transazioni e ottimizzato per una bassa latenza.
  • Wal filtrato viene inviato solo ai nodi di archiviazione a cui appartengono le modifiche.
  • I nodi di archiviazione ricostruiscono lo stato della pagina applicando il WAL, eliminando i tradizionali colli di bottiglia di I/O associati ai checkpoint.
  • Questo approccio riduce l'amplificazione della scrittura e offre una latenza di scrittura coerente e prevedibile indipendentemente dalle dimensioni del database.

La combinazione di questi due principi consente a Azure HorizonDB di offrire velocità effettiva elevata, bassa latenza e un utilizzo efficiente delle risorse mantenendo al tempo stesso garanzie ACID complete.

Cluster

Una risorsa Azure HorizonDB di cui è stato eseguito il provisioning è un cluster. Un cluster di Azure HorizonDB è composto da:

  • Una o più repliche di calcolo, una delle quali è primaria e scrivibile, mentre le altre sono repliche standby leggibili.
  • Una singola copia dei dati nell'archiviazione resiliente alla zona condivisa da tutte le repliche nel cluster.
  • Un endpoint di lettura/scrittura che punta sempre alla replica primaria.
  • Un endpoint di sola lettura che distribuisce il carico delle connessioni tra tutte le repliche leggibili.

Calcolo delle repliche

Una replica di calcolo di Azure HorizonDB può essere la replica primaria (scrivibile) o una replica in standby leggibile, candidata anche al failover. La replica di calcolo è la posizione in cui risiede il motore relazionale PostgreSQL e dove si verificano il linguaggio, la query e l'elaborazione delle transazioni. Tutte le interazioni con il cluster Azure HorizonDB vengono eseguite tramite le repliche di calcolo. Per avere resilienza zonale, sono necessarie almeno due repliche nel cluster. È possibile aggiungere o rimuovere repliche al cluster Azure HorizonDB in base alle esigenze del carico di lavoro.

Le repliche di calcolo sono dotate di 8 GB di memoria allocata per core. Le repliche di calcolo hanno anche una cache SSD locale. Questa cache è una cache NVMe a bassa latenza che memorizza nella cache le pagine ad accesso frequente e riduce al minimo la necessità di recuperare i dati dal livello di archiviazione remoto. La cache è presente su tutte le repliche, la primaria e quella in standby.

Le repliche di elaborazione vengono utilizzate in modo efficiente perché delegano al livello di storage le attività relative alla durabilità e all'alta disponibilità. Questo spostamento del carico rende disponibili più risorse di CPU, disco e rete per eseguire la logica di business delle applicazioni sul database. Le attività seguenti vengono trasferite dalle repliche di elaborazione al livello di storage.

Task Processo PostgreSQL Risparmio delle risorse
Invio WAL dalle repliche walsender I/O su disco, I/O di rete
Archiviazione WAL nell'archiviazione BLOB Archiver I/O su disco, I/O di rete
Scrittura di pagine sporche processo di scrittura in background I/O disco
Checkpoint gestore dei checkpoint I/O disco
Copie di sicurezza pg_dump, pg_basebackup, pg_backup_start, pg_backup_stop I/O disco
Operazioni di scrittura a pagina intera Back-end che eseguono la scrittura WAL I/O disco
Ripristino del WAL di PostgreSQL ripristino di avvio I/O disco
Ripetizione replica in lettura PostgreSQL ripristino di avvio I/O disco

Storage

Azure HorizonDB utilizza due flotte di archiviazione basate sull'archiviazione BLOB di Azure. Tutti i livelli dello stack di archiviazione sono resilienti a livello di zona per impostazione predefinita.

Spazio di archiviazione WAL

Il servizio WAL è un servizio appositamente progettato che accetta WAL dalla replica di calcolo primaria ed è ottimizzato per modelli di scrittura WAL e a bassa latenza. Quando viene apportata una modifica dei dati (inserimento/aggiornamento/eliminazione) nella replica primaria, WAL viene scritto nel servizio WAL e la transazione viene riconosciuta. WAL viene quindi applicato in modo asincrono alle rispettive partizioni di dati nella flotta di archiviazione dati per applicare le modifiche più recenti. Inoltre, WAL viene inviato alle repliche di calcolo secondarie per riapplicare eventuali modifiche alle pagine presenti in memoria sulle repliche. WAL viene quindi archiviato nell'archiviazione BLOB di Azure e conservato per il periodo di conservazione a breve termine configurato.

Archiviazione dati

La flotta di archiviazione dati è una cache per tutti i dati nel database che fornisce dati a tutte le repliche di calcolo nel cluster Azure HorizonDB. L'archiviazione viene allocata in modo dinamico man mano che il database aumenta senza la necessità di configurare le dimensioni di archiviazione o le operazioni di I/O al secondo. I dati delle relazioni postgres vengono partizionati tra più nodi di archiviazione della flotta per offrire una maggiore scalabilità. Esistono più copie di dello stesso frammento di dati archiviate in più zone per garantire resilienza. Poiché il WAL viene riprodotto nella flotta di archiviazione, le pagine dirty della flotta di archiviazione vengono quindi scritte nell'Archiviazione BLOB di Azure.

Archiviazione BLOB di Azure

L'archiviazione BLOB di Azure garantisce la durabilità dei dati del database e funge anche da archivio dati per l'archiviazione WAL. I dati vengono archiviati su account di archiviazione con ridondanza geografica. I backup del database vengono implementati come snapshot dei BLOB.

prezzo

Azure HorizonDB attualmente addebita:

  • Calcolo con provisioning in ore core,
  • Spazio di archiviazione del database usato (GB/mese) e
  • Utilizzato lo spazio di archiviazione di backup per il periodo di conservazione a breve termine.

Per altri dettagli sui prezzi, vedere la pagina dei prezzi

Limitations

Azure HorizonDB è attualmente in preview. Le funzionalità seguenti non sono ancora disponibili che stiamo lavorando attivamente su queste funzionalità.

Feature Condizione Note
Conservazione dei backup configurabili Non ancora disponibile La conservazione dei backup è attualmente di sette giorni. Stiamo lavorando per abilitare la conservazione dei backup di 1-35 giorni
Repliche di lettura tra aree geografiche Non ancora disponibile La replica tra aree per il ripristino di emergenza non è ancora supportata.
Chiavi gestite dal cliente (CMK) per la crittografia Non disponibile La crittografia dei dati archiviati attualmente utilizza solo chiavi gestite dal servizio.
Finestre di manutenzione configurabili Non ancora disponibile Attualmente gli aggiornamenti vengono eseguiti in una finestra di manutenzione gestita dal sistema. La possibilità di configurare finestre di manutenzione personalizzate non è ancora disponibile
Pool di connessioni (PgBouncer) Non ancora disponibile È possibile utilizzare un pooler di connessioni esterno mentre lavoriamo all’implementazione del pooling delle connessioni nel servizio.
Conservazione a lungo termine (LTR) Non disponibile La conservazione dei backup è attualmente di sette giorni.
Ottimizzazione dell'indice Non ancora disponibile L'ottimizzazione dell'indice è in arrivo.
Inserimento della rete virtuale Non disponibile Attualmente è supportato il collegamento privato. L'integrazione della rete virtuale non è ancora supportata

Note

Questo elenco riflette lo stato corrente del servizio ed è soggetto a modifiche man mano che vengono rilasciate nuove funzionalità. Controlla le note di rilascio per gli aggiornamenti più recenti.

Regioni di Azure

Azure HorizonDB è attualmente disponibile nelle aree di Azure seguenti:

Geography Regioni
Americas Canada centrale, Stati Uniti centrali, Stati Uniti orientali, Stati Uniti occidentali 2, Stati Uniti occidentali 3
Europe Germania centro-occidentale, Svezia centrale
Asia Pacific Australia East

Note

La disponibilità dell'area è soggetta a modifiche e presto verranno aggiunte altre aree. Alcune aree potrebbero avere restrizioni sulle nuove distribuzioni. Per la disponibilità più recente dell'area, vedere il portale di Azure o contattare supporto tecnico di Azure.

Feedback e supporto

Per domande o suggerimenti su Azure HorizonDB, è possibile ottenere assistenza e supporto tramite i canali seguenti: