Confronto dei comportamenti delle API di Amazon RDS Data per Aurora Serverless v2 e ha fornito i cluster con Aurora Serverless v1 cluster - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Confronto dei comportamenti delle API di Amazon RDS Data per Aurora Serverless v2 e ha fornito i cluster con Aurora Serverless v1 cluster

I miglioramenti più recenti ad Amazon RDS Data APIs rendono i dati APIs disponibili per i cluster che utilizzano versioni recenti dei motori PostgreSQL o MySQL. Questi cluster possono essere configurati per l'uso Aurora Serverless v2 o classi di istanze predisposte come db.r6g o. db.r6i

Le seguenti sezioni descrivono le differenze tra le API di Amazon RDS Data Aurora Serverless v2 e cluster DB predisposti, e Aurora Serverless v1 cluster DB. Aurora Serverless v1 I cluster DB utilizzano la modalità serverless motore. I cluster DB predisposti utilizzano la provisioned modalità motore. Un record Aurora Serverless v2 Il cluster DB utilizza anche la modalità provisioned motore e ne contiene una o più Aurora Serverless v2 Istanze DB con la classe di db.serverless istanza.

Numero massimo di richieste al secondo

Aurora Serverless v1

I dati APIs possono soddisfare fino a 1.000 richieste al secondo.

Aurora Serverless v2

I dati APIs possono effettuare un numero illimitato di richieste al secondo.

Abilitazione o disabilitazione dell'API Amazon RDS Data su un database esistente

Aurora Serverless v1
  • Con l'API Amazon RDS: utilizza l'ModifyClusteroperazione e specifica True oFalse, a seconda dei casi, il EnableHttpEndpoint parametro.

  • Con l'opzione AWS CLI— Usa l'modify-db-clusteroperazione con l'--no-enable-http-endpointopzione --enable-http-endpoint o, a seconda dei casi.

Aurora Serverless v2
  • Con l'API Amazon RDS: utilizza le DisableHttpEndpoint operazioni EnableHttpEndpoint e.

  • Con le operazioni:use and AWS CLI. enable-http-endpoint disable-http-endpoint

CloudTrail eventi

Aurora Serverless v1

Gli eventi delle chiamate Data API sono eventi di gestione. Per impostazione predefinita, questi eventi vengono inclusi automaticamente in un percorso. Per ulteriori informazioni, consulta Esclusione degli eventi Data API da un AWS CloudTrail trail (Aurora Serverless v1 solo).

Aurora Serverless v2

Gli eventi delle chiamate Data API sono eventi relativi ai dati. Per impostazione predefinita, questi eventi vengono esclusi automaticamente in un percorso. Per ulteriori informazioni, consulta Inclusione degli eventi Data API in un percorso AWS CloudTrail.

Supporto per più istruzioni

Aurora Serverless v1
  • Per Aurora MySQL, le istruzioni multiple non sono supportate.

  • Per Aurora PostgreSQL, le istruzioni multiple restituiscono solo la prima risposta alla query.

Aurora Serverless v2

Le istruzioni multiple non sono supportate. Il tentativo di eseguire più istruzioni in una singola chiamata API restituisce i risultati. “An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.” Per eseguire più istruzioni, effettuate chiamate ExecuteStatement API separate o usatele BatchExecuteStatement per l'elaborazione in batch.

L'esempio seguente mostra il messaggio di errore risultante da una chiamata API che tenta di eseguire una dichiarazione multipla.

aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table; Select * FROM next_table; "An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.

L'esempio seguente esegue più istruzioni con chiamate API separate. ExecuteStatement

aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table;" aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM next_table;"

Richieste simultanee per lo stesso ID di transazione

Aurora Serverless v1

Le richieste successive attendono il completamento della richiesta corrente. L'applicazione deve gestire gli errori di timeout se il periodo di attesa è troppo lungo.

Aurora Serverless v2

Quando l'API Data riceve più richieste con lo stesso ID di transazione, restituisce immediatamente questo errore:

DatabaseErrorException: Transaction is still running a query

Questo errore si verifica in due situazioni:

  • L'applicazione effettua richieste asincrone (come le JavaScript promesse) utilizzando lo stesso ID di transazione.

  • Una richiesta precedente con quell'ID di transazione è ancora in fase di elaborazione.

L'esempio seguente mostra tutte le richieste eseguite in parallelo conpromise.all().

const api_calls = []; for (let i = 0; i < 10; i++) { api_calls.push( client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ) ); } await Promise.all(api_calls);

Per risolvere questo errore, attendi il completamento della richiesta corrente prima di inviare un'altra richiesta con lo stesso ID di transazione o rimuovi l'ID della transazione per consentire le richieste parallele.

L'esempio seguente mostra una chiamata API che utilizza l'esecuzione sequenziale con lo stesso ID di transazione.

for (let i = 0; i < 10; i++) { await client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ).promise() ); }

BatchExecuteStatement comportamento

Per ulteriori informazioni su BatchExecuteStatement, consulta BatchExecuteStatement.

Aurora Serverless v1

L'oggetto campi generati nel risultato dell'aggiornamento include i valori inseriti.

Aurora Serverless v2
  • Per Aurora MySQL, l'oggetto campi generati nel risultato dell'aggiornamento include i valori inseriti.

  • Per Aurora PostgreSQL, l'oggetto campi generati è vuoto.

Comportamento ExecuteSQL

Per ulteriori informazioni suExecuteSQL, vedere ExecuteSQL.

Aurora Serverless v1

L'ExecuteSQLoperazione è obsoleta.

Aurora Serverless v2

L'ExecuteSQLoperazione non è supportata.

ExecuteStatement comportamento

Per ulteriori informazioni su ExecuteStatement, consulta ExecuteStatement.

Aurora Serverless v1

Il ExecuteStatement parametro supporta il recupero di colonne di matrici multidimensionali e di tutti i tipi di dati avanzati.

Aurora Serverless v2

Il ExecuteStatement parametro non supporta colonne di matrici multidimensionali. Inoltre, non supporta determinati tipi di dati PostgreSQL, inclusi i tipi geometrici e monetari. Quando una Data API incontra un tipo di dati non supportato, restituisce questo errore:. UnsupportedResultException: The result contains the unsupported data type data_type

Per risolvere questo problema, trasmetti il tipo di dati non supportato a. TEXT L'esempio seguente esegue il cast di un tipo di dati non supportato su. TEXT

SELECT custom_type::TEXT FROM my_table;-- ORSELECT CAST(custom_type AS TEXT) FROM my_table;

Per un elenco dei tipi di dati supportati per ogni motore di database Aurora, consulta Data API operations reference.

Comportamento dei parametri dello schema

Aurora Serverless v1

Il Schema parametro non è supportato. Quando includi il Schema parametro in una chiamata API, l'API Data ignora il parametro.

Aurora Serverless v2

Il parametro Schema è obsoleto. Quando includi il Schema parametro in una chiamata API, l'API Data restituisce questo errore:. ValidationException: The schema parameter isn't supported L'esempio seguente mostra una chiamata Data API che restituisce l'ValidationExceptionerrore.

aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --schema "your_schema" \ --sql "SELECT * FROM your_table LIMIT 10"

Per risolvere questo problema, rimuovi il Schema parametro dalla chiamata API.

L'esempio seguente mostra una chiamata Data API con il Schema parametro rimosso.

aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table LIMIT 10"