VENDITE: 1-800-867-1389

Considerazioni di sviluppo per le federazioni di database (database SQL di Azure)

Aggiornamento: gennaio 2015

Lo sviluppo di soluzioni tramite le federazioni richiede ulteriori considerazioni oltre quelle discusse in Considerazioni sullo sviluppo nel database SQL di Azure. Le informazioni specifiche sullo sviluppo con le federazioni vengono riportate di seguito.

ImportantImportante
L'implementazione corrente delle federazioni verrà ritirata con i livelli di servizio Web e Business. Valutare l'uso della scalabilità elastica per il database SQL di Azure per compilare una soluzione partizionata con scalabilità orizzontale nel database SQL di Azure. Per provarla, vedere Introduzione alla funzionalità di scalabilità elastica del database SQL di Azure (anteprima).

Una federazione tipica è costituita da numerosi singoli database di membri della federazione, implementati come database fisici in database SQL. Sebbene sia possibile connettersi direttamente a uno di questi database fisici, questo metodo di connessione è utile principalmente solo per strumenti che non supportano la federazione. Per la maggior parte delle applicazioni, è più semplice usare l'istruzione USE FEDERATION (SQL Database) per stabilire una connessione a una federazione. Per l'istruzione USE FEDERATION non è necessaria la comprensione dei database fisici sottostanti e il routing della connessione al membro della federazione contenente i dati richiesti verrà eseguito automaticamente.

L'istruzione USE FEDERATION accetta un valore della chiave di federazione, usato da database SQL per indirizzare la connessione al membro di federazione contenente i dati associati a questo valore. Ad esempio, se i dati sono federati su customer_id e si specifica una chiave di federazione di 100, si stabilisce la connessione al membro di federazione contenente le righe della tabella federata per customer_id=100.

Oltre a connettersi con semplicità al membro di federazione corretto, l'istruzione USE FEDERATION consente di filtrare la connessione solo a quei record che esattamente corrispondono al valore della chiave di federazione specificata. Nell'esempio precedente, se viene specificata la clausola FILTER=ON, solo righe associate a customer_id=100 saranno restituite dalla connessione. Questa operazione viene eseguita da Query Processor tramite l'aggiunta di un predicato (federated_column=value) nella colonna federata di ogni query che si riferisce a una tabella federata.

Se viene specificata la clausola FILTER=OFF, la connessione viene comunque stabilita al membro della federazione contenente il valore specificato, ma le operazioni di query possono accedere all'intero intervallo di valori archiviato nel membro della federazione. Ad esempio, se il membro di federazione copre l'intervallo di 0-200 per customer_id, si potrà accedere a tutti i record compresi nell'intervallo anche se è stato specificato customer_id=100 nell'istruzione USE FEDERATION.

Le connessioni senza applicazione di filtri sono utili quando si eseguono operazioni che interessano tutte le righe archiviate in un membro, ad esempio modifiche dello schema oppure operazioni bulk quali inserimenti bulk.

La distribuzione di dati in più database fisici all'interno di una federazione introduce requisiti aggiuntivi a livello di applicazione. Poiché Database SQL di Microsoft Azure non supporta query distribuite su più database, è necessario implementare la logica per eseguire queste operazioni all'interno dell'applicazione. Ad esempio per eseguire una selezione di * da una tabella federata, è possibile effettuare quanto segue:

  1. Connettersi alla federazione usando il valore inferiore per l'intervallo coperto dalla chiave di federazione. Ad esempio, USE FEDERATION customerfederation (customer_id=1) WITH RESET, FILTERING=OFF.

  2. Selezionare * per restituire le righe della tabella federata contenute in questo membro di federazione, quindi archiviare i risultati in memoria.

  3. Eseguire una query su sys.federation_member_distributions (SQL Database) per determinare il valore range_low del successivo membro di federazione.

  4. Connettersi alla federazione usando il valore range_low. Ad esempio, USE FEDERATION customerfederation (customer_id=100) WITH RESET, FILTERING=OFF.

  5. Selezionare * per restituire le righe contenute in questo membro di federazione, quindi archiviarle coni risultati della query precedente.

  6. Ripetere i passaggi 3-5 fino a che non ci sono voci in sys.federation_member_distributions con un valore range_low superiore al valore corrente usato come valore di chiave di federazione.

È possibile eseguire il processo di query su ogni singolo membro in parallelo, riducendo il tempo impiegato per aggregare i dati e restituirli all'utente dell'applicazione.

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2015 Microsoft