Ambil Semua Item dari DynamoDB di Node.js (AWS SDK v3)
Tidak ada "select all" di DynamoDB — membaca seluruh tabel berarti sebuah Scan yang Anda paginasi sampai habis. Setiap response membawa paling banyak 1 MB; Anda melakukan loop, memasukkan kembali LastEvaluatedKey sebagai ExclusiveStartKey, sampai tidak ada key yang kembali.
Code
import {DynamoDBClient, ScanCommand} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({region: 'us-east-1'});
const items = [];
let lastEvaluatedKey;
do {
const response = await client.send(
new ScanCommand({
TableName: 'Music',
ExclusiveStartKey: lastEvaluatedKey
})
);
items.push(...(response.Items ?? []));
lastEvaluatedKey = response.LastEvaluatedKey;
} while (lastEvaluatedKey);
console.log(`Table holds ${items.length} items`);Penjelasan
- Loop-nya adalah intinya — satu panggilan
ScanTIDAK mengembalikan tabel; ia mengembalikan hingga 1 MB. Berhenti setelah response pertama adalah bug klasik "scan saya kehilangan item". HanyaLastEvaluatedKeyyang tidak ada yang berarti Anda telah membaca semuanya. - Memori —
itemsmenampung seluruh tabel. Untuk tabel besar, proses setiap halaman di dalam loop (tulis ke file, stream, agregasi) alih-alih menumpuknya. - Lebih cepat pada tabel besar: parallel scan — bagi pekerjaannya dengan
Segment/TotalSegments: jalankan N worker, masing-masing men-scan segmennya sendiri dengan loop pagination-nya sendiri. Total biaya sama, waktu jam dinding jauh lebih rendah. - Biaya — scan penuh membaca (dan menagih) setiap byte dari setiap item, setiap kali Anda menjalankannya. Pangkas response dengan
ProjectionExpression(lebih sedikit atribut yang dikembalikan — biaya baca tetap sama), dan jangan taruh scan pada hot path; itulah gunanya Query dan desain access-pattern. - Menyaring sekalian? Sebuah
FilterExpressionmenjatuhkan item setelah dibaca (dan ditagih) — lihat Scan dengan filter.
Lakukan secara visual
Melihat sekilas sebuah tabel tidak perlu skrip: unduh DynoTable untuk menjelajah tabel apa pun dalam grid berpaginasi — ia melakukan paging melalui scan untuk Anda, tanpa loop yang bisa salah. Dan sebelum Anda scan-dan-bayar, kalkulator harga DynamoDB menunjukkan berapa biaya sebenarnya dari pembacaan penuh tabel Anda.
Contoh terkait
- Ambil semua item di Python — pembacaan penuh yang sama dengan paginator boto3.
- Ambil semua item dengan AWS CLI — CLI melakukan paging untuk Anda.
- DynamoDB Scan di Node.js — melakukan scan dengan
FilterExpression. - Parallel scan — Segment/TotalSegments, jumlah worker, dan kapan repot-repot.
- Mengapa Scan DynamoDB saya lambat dan mahal? — model biaya dan cara menghindarinya.
- DynamoDB ProvisionedThroughputExceededException — membaca seluruh tabel adalah cara klasik untuk menabraknya.
- "The provided starting key is invalid" — key resume yang rusak dalam loop pagination.
References
- Scan — Amazon DynamoDB API Reference
- Scanning tables in DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB read and write operations (capacity unit consumption) — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.