Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida include le procedure consigliate per le soluzioni create usando la versione più recente di Python SDK per Azure Cosmos DB per NoSQL. Le procedure consigliate incluse qui consentono di migliorare la latenza, migliorare la disponibilità e migliorare le prestazioni complessive per le soluzioni.
Configurazione dell'account
Parametri di configurazione dell'account
| Parametro | Predefinito o vincolo | Quando utilizzare |
|---|---|---|
| Colocation della regione | Uguale all'area dell'app | Ridurre la latenza |
| Replica in più aree | Disattivato per impostazione predefinita | Abilitare 2+ regioni per la disponibilità |
| Failover gestito dal servizio | Facoltativo | Abilitare per i carichi di lavoro di produzione |
from azure.cosmos import CosmosClient
client = CosmosClient(url, credential)
print(client.client_connection._global_endpoint_manager.write_endpoint)
# Expected: write endpoint resolves to configured write region
Per altre informazioni su come aggiungere più aree usando Python SDK, vedere l'esercitazione sulla distribuzione globale.
Uso dell'SDK
Parametri di utilizzo dell'SDK
| Parametro | Predefinito o vincolo | Quando utilizzare |
|---|---|---|
| Versione dell'SDK | Ultima versione disponibile | Sempre per ottenere prestazioni ottimali |
| Istanza di CosmosClient | Uno per app | Riutilizzare per tutta la durata dell'app |
| ubicazioni_preferite | None | Ottimizzare gli accessi di lettura e il sistema di failover. |
client = CosmosClient(
url,
credential,
preferred_locations=["East US", "West US"]
)
print(client.client_connection._preferred_locations)
# Expected: ['East US', 'West US']
Un errore temporaneo è un errore che ha una causa sottostante che si risolve presto da sola. Le applicazioni che si connettono al database devono essere sviluppate in modo da prevedere tali errori temporanei. Per gestirli, implementare la logica di ripetizione dei tentativi nel codice invece di mostrarli agli utenti come errori dell'applicazione. L'SDK ha una logica predefinita per gestire questi errori temporanei nelle richieste ripetibili, come le operazioni di lettura o query. L'SDK non può riprovare a scrivere per errori temporanei perché le scritture non sono idempotenti. L'SDK consente agli utenti di configurare la logica di ripetizione dei tentativi per le limitazioni. Per informazioni dettagliate sugli errori da riprovare, vedere indicazioni sulle applicazioni resilienti.
Usare la registrazione dell'SDK per acquisire informazioni di diagnostica e risolvere i problemi di latenza.
Client asincrono
Requisiti del client asincrono
| Requisito | Predefinito o vincolo | Quando utilizzare |
|---|---|---|
| Percorso di importazione | azure.cosmos.aio.CosmosClient |
Uso nei framework asincroni e loop di eventi |
aiohttp Dipendenza |
Non installato per impostazione predefinita | Installare in modo esplicito: pip install aiohttp |
| Ciclo di vita del client | Deve essere chiuso in modo esplicito | Usare async with o chiamare await client.close() |
from azure.cosmos.aio import CosmosClient
# Preferred: use async with to manage lifecycle automatically
async with CosmosClient(url, credential) as client:
database = client.get_database_client("mydb")
container = database.get_container_client("mycontainer")
item = await container.read_item(item="id1", partition_key="pk1")
# Alternative: manage lifecycle manually
client = CosmosClient(url, credential)
try:
database = client.get_database_client("mydb")
container = database.get_container_client("mycontainer")
item = await container.read_item(item="id1", partition_key="pk1")
finally:
await client.close()
Quando usare asincrono vs sincrono
| Scenario | Client consigliato |
|---|---|
| Framework per il Web (FastAPI, Quart) | azure.cosmos.aio.CosmosClient |
| Serverless (Funzioni di Azure asincrono) | azure.cosmos.aio.CosmosClient |
| Script e processi batch | azure.cosmos.CosmosClient |
| Strumenti CLI semplici | azure.cosmos.CosmosClient |
Avvertimento
Non usare la sincronizzazione CosmosClient all'interno di un ciclo di eventi asincrono. Il client di sincronizzazione effettua chiamate di I/O bloccanti che bloccano il ciclo di eventi, degradando le prestazioni e causando potenzialmente deadlock nell'applicazione.
Per altre informazioni, vedere la sezione Python SDK README asincrona.
Progettazione dei dati
Parametri di progettazione dei dati
| Parametro | Predefinito o vincolo | Quando utilizzare |
|---|---|---|
| Dimensioni del documento | N/A | Mantenere piccole dimensioni per ridurre i costi delle UR |
| Caratteri di identificazione | Nessun carattere speciale | Evitare comportamenti imprevisti |
| Percorsi di indicizzazione | Tutti i percorsi indicizzati | Escludere percorsi inutilizzati per scritture più veloci |
container_properties = {
"id": "items",
"indexingPolicy": {
"excludedPaths": [{"path": "/*"}]
}
}
print(container_properties["indexingPolicy"])
# Expected: excludedPaths configured
Per altre informazioni, vedere Creazione di indici con l'esempio SDK.
Caratteristiche dell'host
Parametri delle caratteristiche dell'host
| Parametro | Predefinito o vincolo | Quando utilizzare |
|---|---|---|
| utilizzo della CPU | <70% consigliato | Aumentare le risorse o aumentare la scalabilità se la domanda è elevata |
| Rete accelerata | Disattivato | Abilitare sulle macchine virtuali per un traffico elevato |
| Dimensione della pagina di query | 100 elementi / 4 MB | Aumentare per ridurre i round trip |
items = container.query_items(
query="SELECT * FROM c",
max_item_count=500
)
print("Page size set to 500")
# Expected: fewer round trips
Passaggi successivi
Per altre informazioni sui suggerimenti sulle prestazioni per Python SDK, vedere Suggerimenti sulle prestazioni per Azure Cosmos DB Python SDK.
Per altre informazioni sulla progettazione dell'applicazione per scalabilità e prestazioni elevate, vedere Partizionamento e scalabilità in Azure Cosmos DB.
Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB? È possibile usare le informazioni del cluster di database esistente per la pianificazione della capacità.
- Se conosci solo il numero di vCores e di server nel tuo cluster di database esistente, leggi su come stimare le unità di richiesta utilizzando vCores o vCPUs.
- Se conosci i tassi di richieste tipiche per il carico di lavoro del tuo database corrente, leggi la stima delle unità di richiesta utilizzando Azure Cosmos DB capacity planner