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à.
Node.js e DAX
L’SDK DAX per Node.js v3.x è compatibile con SDK AWS per Node.js v3.x. L’SDK DAX per Node.js v3.x supporta l’uso di client aggregati. Si noti che DAX non supporta la creazione di client essenziali (bare-bones). Per ulteriori informazioni sulle funzionalità non supportate, consulta Funzionalità non in parità con AWS SDK V3.
Segui questi passaggi per eseguire l'applicazione di esempio Node.js sulla tua EC2 istanza Amazon.
Come eseguire l'applicazione di esempio Node.js per DAX
-
Configura Node.js sulla tua EC2 istanza Amazon, come segue:
-
Installa il gestore delle versioni del nodo (
nvm).curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash -
Usa nvm per installare Node.js.
nvm install 18 -
Usa nvm per utilizzare Node 18
nvm use 18 -
Verifica che Node.js sia installato e funzioni correttamente.
node -e "console.log('Running Node.js ' + process.version)"Si dovrebbe visualizzare il seguente messaggio.
Running Node.js v18.x.x
-
-
Installa il client DaxDocument Node.js utilizzando il gestore di pacchetti del nodo (
npm).npm install @amazon-dax-sdk/lib-dax
TryDaxcodice di esempio
Per valutare i vantaggi prestazionali di DynamoDB Accelerator (DAX), segui questa procedura per eseguire un test di esempio che confronta i tempi di lettura tra DynamoDB standard e un cluster DAX.
-
Dopo aver configurato il workspace e installato
lib-daxcome dipendenza, copia TryDax.js nel progetto. -
Esegui il programma sul cluster DAX. Per determinare l'endpoint per il cluster DAX, scegli una delle seguenti opzioni:
-
Utilizzo della console DynamoDB: scegli il cluster DAX. L'endpoint del cluster viene visualizzato nella console, come nell'esempio seguente.
dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com -
Utilizzando il comando AWS CLI— Immettere il seguente comando.
aws dax describe-clusters --query "Clusters[*].ClusterDiscoveryEndpoint"L'endpoint del cluster viene visualizzato nell'output, come nell'esempio seguente.
{ "Address": "my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com", "Port": 8111, "URL": "dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com" }
-
-
Ora esegui il programma, specificando l’endpoint del cluster come parametro della riga di comando.
node TryDax.js dax://my-cluster---l6fzcv---dax-clusters---us-east-1.amazonaws.com.rproxy.govskope.caVerrà visualizzato un output simile al seguente:
Attempting to create table; please wait... Successfully created table. Table status: ACTIVE Writing data to the table... Writing 20 items for partition key: 1 Writing 20 items for partition key: 2 Writing 20 items for partition key: 3 ... Running GetItem Test Total time: 153555.10 µs - Avg time: 383.89 µs Total time: 44679.96 µs - Avg time: 111.70 µs Total time: 36885.86 µs - Avg time: 92.21 µs Total time: 32467.25 µs - Avg time: 81.17 µs Total time: 32202.60 µs - Avg time: 80.51 µs Running Query Test Total time: 14869.25 µs - Avg time: 2973.85 µs Total time: 3036.31 µs - Avg time: 607.26 µs Total time: 2468.92 µs - Avg time: 493.78 µs Total time: 2062.53 µs - Avg time: 412.51 µs Total time: 2178.22 µs - Avg time: 435.64 µs Running Scan Test Total time: 2395.88 µs - Avg time: 479.18 µs Total time: 2207.16 µs - Avg time: 441.43 µs Total time: 2443.14 µs - Avg time: 488.63 µs Total time: 2038.24 µs - Avg time: 407.65 µs Total time: 1972.17 µs - Avg time: 394.43 µs Running Pagination Test Scan Pagination [ { pk: 1, sk: 1, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 2, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 3, someData: 'XXXXXXXXXX' } ] [ { pk: 1, sk: 4, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 5, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 6, someData: 'XXXXXXXXXX' } ] ... Query Pagination [ { pk: 1, sk: 1, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 2, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 3, someData: 'XXXXXXXXXX' } ] [ { pk: 1, sk: 4, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 5, someData: 'XXXXXXXXXX' }, { pk: 1, sk: 6, someData: 'XXXXXXXXXX' } ] ... Attempting to delete table; please wait... Successfully deleted table.Prendi nota delle informazioni sui tempi. Il numero di microsecondi necessari per i test
GetItem,Query,Scan. -
In questo caso, i programmi sono stati eseguiti sul cluster DAX. Ora eseguirai di nuovo il programma, questa volta su DynamoDB.
-
A questo punto, esegui di nuovo il programma, ma questa volta senza l’URL dell’endpoint del cluster come parametro della riga di comando.
node TryDax.jsConsultare l'output e prendere nota delle informazioni sui tempi. I tempi trascorsi per
GetItem,QueryeScandevono essere significativamente più bassi con DAX rispetto a DynamoDB.
Funzionalità non in parità con AWS SDK V3
-
Client essenziali: Dax per Node.js V3 non supporta client essenziali.
const dynamoDBClient = new DynamoDBClient({ region: 'us-west-2' }); const regularParams = { TableName: 'TryDaxTable', Key: { pk: 1, sk: 1 } }; // The DynamoDB client supports the send operation. const dynamoResult = await dynamoDBClient.send(new GetCommand(regularParams)); // However, the DaxDocument client does not support the send operation. const daxClient = new DaxDocument({ endpoints: ['your-dax-endpoint'], region: 'us-west-2', }); const params = { TableName: 'TryDaxTable', Key: { pk: 1, sk: 1 } }; // This will throw an error - send operation is not supported for DAX. Please refer to documentation. const result = await daxClient.send(new GetCommand(params)); console.log(result); -
Stack middleware
: Dax per Node.js V3 non supporta l’utilizzo di funzioni middleware. const dynamoDBClient = new DynamoDBClient({ region: 'us-west-2' }); // The DynamoDB client supports the middlewareStack. dynamoDBClient.middlewareStack.add( (next, context) =>> async (args) => { console.log("Before operation:", args); const result = await next(args); console.log("After operation:", result); return result; }, { step: "initialize", // or "build", "finalizeRequest", "deserialize" name: "loggingMiddleware", } ); // However, the DaxDocument client does not support the middlewareStack. const daxClient = new DaxDocument({ endpoints: ['your-dax-endpoint'], region: 'us-west-2', }); // This will throw an error - custom middleware and middlewareStacks are not supported for DAX. Please refer to documentation. daxClient.middlewareStack.add( (next, context) => async (args) => { console.log("Before operation:", args); const result = await next(args); console.log("After operation:", result); return result; }, { step: "initialize", // or "build", "finalizeRequest", "deserialize" name: "loggingMiddleware", } );