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 AWS SDK per Node.js v3.x. L'SDK DAX per Node.js v3.x supporta l'uso di client aggregati. Tieni presente che DAX non supporta la creazione di client bare-bone. Per ulteriori dettagli sulle funzionalità non supportate, vedere. Funzionalità non equivalenti a SDK V3 AWS
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 usare il nodo 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 questi passaggi per eseguire un test di esempio che confronta i tempi di lettura tra DynamoDB standard e un cluster DAX.
-
Dopo aver configurato lo spazio di lavoro e averlo installato come dipendenza, copiatelo nel
lib-dax
progetto. TryDax.js -
Eseguite il programma sul vostro 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
Verrà 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 sulla tempistica. Il numero di microsecondi necessari per i
GetItem
,Query
,Scan
test. -
In questo caso, i programmi sono stati eseguiti sul cluster DAX. Ora eseguirai nuovamente il programma, questa volta con DynamoDB.
-
Ora esegui nuovamente il programma, ma questa volta senza l'URL dell'endpoint del cluster come parametro della riga di comando.
node TryDax.js
Consultare l'output e prendere nota delle informazioni sui tempi. I tempi trascorsi per
GetItem
eScan
dovrebbero essere significativamente inferiori con DAX rispetto a DynamoDB.Query
Funzionalità non equivalenti a SDK V3 AWS
-
Client bare-bone: Dax Node.js V3 non supporta client bare-bone.
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);
-
Middleware Stack: Dax Node.js V3 non supporta l'utilizzo delle 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", } );