Progettare una strategia di archiviazione dell'organizzazione
Quando si progetta un'app che richiede l'archiviazione di dati, è importante prevedere come l'app organizzerà i dati tra gli account di archiviazione, i contenitori e i BLOB.
Account di archiviazione
Un singolo account di archiviazione è abbastanza flessibile per organizzare i BLOB nel modo desiderato, È tuttavia consigliabile usare altri account di archiviazione, a seconda delle esigenze, per controllare l'accesso ai dati e separare i costi in modo logico.
Contenitori e BLOB
La strategia per la denominazione e l'organizzazione di contenitori e BLOB dovrebbe essere determinata dalla natura dell'app e dei dati archiviati.
Le app che usano i BLOB come parte di uno schema di archiviazione con database non devono normalmente basarsi sull'organizzazione, la denominazione o i metadati per fornire indicazioni sui propri dati. Le app di questo tipo usano in genere come nomi di BLOB degli identificatori, ad esempio GUID, e fanno riferimento a tali identificatori nei record di database. Per determinare la posizione di archiviazione del BLOB e il tipo di dati contenuti viene usato il database.
Altre app usano Archiviazione BLOB di Azure più come un file system personale. I nomi di contenitori e BLOB indicano significato e struttura. I nomi dei BLOB in questi tipi di app sono spesso simili ai nomi di file tradizionali. Possono includere estensioni come .jpg per indicare il tipo di dati che contengono. Tali app usano le directory virtuali per organizzare i BLOB. Spesso usano tag di metadati per archiviare informazioni su BLOB e contenitori.
Vi sono alcuni aspetti da considerare quando si decide come organizzare e archiviare BLOB e contenitori.
Limitazioni di denominazione
I nomi di contenitori e BLOB devono essere conformi a un set di regole, incluse le limitazioni di lunghezza e di caratteri. Vedere la sezione Altre informazioni alla fine di questo modulo per informazioni più dettagliate sulle regole di denominazione.
Accesso pubblico e contenitori come limiti di sicurezza
Per impostazione predefinita, tutti i BLOB richiedono l'autenticazione per l'accesso. È tuttavia possibile configurare singoli contenitori in modo da consentire il download pubblico dei BLOB senza autenticazione. Il download pubblico supporta molti casi d'uso, ad esempio l'hosting di asset di siti Web statici e la condivisione di file. Questo approccio funziona perché il download del contenuto del BLOB funziona allo stesso modo della lettura di altri dati sul Web. È sufficiente puntare un browser o qualsiasi elemento in grado di effettuare una richiesta GET all'URL del BLOB.
L'abilitazione dell'accesso pubblico è importante per la scalabilità. I dati scaricati direttamente da un archivio BLOB non generano traffico nell'app sul lato server. Anche se non si consente immediatamente l'accesso pubblico o si usa un database per controllare l'accesso ai dati, pianificare l'uso di contenitori separati per i dati da rendere disponibili pubblicamente.
Attenzione
I BLOB presenti in un contenitore configurato per l'accesso pubblico possono essere scaricati senza alcun tipo di autenticazione o controllo da qualsiasi utente che conosca i relativi URL di archiviazione. Non inserire mai i dati dei BLOB in un contenitore pubblico che non si prevede di condividere pubblicamente.
Oltre all'accesso pubblico, Azure offre una funzionalità di firma di accesso condiviso che consente un controllo dettagliato delle autorizzazioni sui contenitori. Una maggiore precisione nel controllo di accesso consente di migliorare ulteriormente la scalabilità. È quindi utile pensare ai contenitori come a limiti di sicurezza.
Prefissi dei nomi di BLOB (directory virtuali)
I contenitori sono piatti. Non supportano alcun tipo di annidamento o gerarchia. Se si assegnano ai BLOB nomi gerarchici simili a percorsi di file, ad esempio finance/budgets/2017/q1.xls, l'operazione dell'API che genera l'elenco dei nomi può filtrare i risultati in base a prefissi specifici. Questo approccio consente di esplorare l'elenco in modo analogo a un sistema gerarchico di file e cartelle.
Alcuni strumenti e librerie client usano questo approccio per visualizzare ed esplorare l'archivio BLOB come se fosse un file system. L'esplorazione di ogni cartella attiva una chiamata separata per elencare i BLOB presenti in tale cartella. Questa funzionalità è spesso denominata directory virtuali.
Nota
Se si abilita la funzionalità Spazio dei nomi gerarchico dell'account, le directory non sono più virtuali. Diventano invece oggetti concreti e indipendenti su cui è possibile operare direttamente. Una directory può esistere senza contenere alcun file. Questo modulo descrive solo gli account per cui la funzionalità Spazio dei nomi gerarchico non è abilitata.
Tipi di BLOB
Esistono tre diversi tipi di BLOB in cui è possibile archiviare i dati:
- I BLOB in blocchi sono costituiti da blocchi di dimensioni diverse che possono essere caricati in modo indipendente e in parallelo. La scrittura in un BLOB in blocchi comporta il caricamento dei dati nei blocchi e l'esecuzione del commit nel BLOB.
- I BLOB di accodamento sono BLOB in blocchi specializzati che supportano solo l'aggiunta di nuovi dati (non l'aggiornamento o l'eliminazione di dati esistenti), ma con un notevole livello di efficienza. I BLOB di accodamento sono ideali per scenari quali l'archiviazione di log o la scrittura di dati di streaming.
- I BLOB di pagine supportano scenari che prevedono operazioni di lettura e scrittura ad accesso casuale. I BLOB di pagine vengono usati per archiviare i file dei dischi rigidi virtuali (VHD) usati dalle macchine virtuali di Azure. Sono ideali per qualsiasi scenario che implica l'accesso casuale.
I BLOB in blocchi sono la soluzione ideale per la maggior parte degli scenari che non richiedono specificamente BLOB di accodamento o BLOB di pagine. La struttura basata su blocchi supporta operazioni di caricamento e download molto rapide e accesso efficiente a singoli elementi di un BLOB. La maggior parte delle librerie client gestisce ed esegue automaticamente il commit dei blocchi. Alcune gestiscono anche caricamenti e download paralleli per ottimizzare le prestazioni.