Ekspresi Filter DynamoDB: Semua yang Perlu Anda Ketahui

Ekspresi Filter Dynamodb Semua Yang Perlu Anda Ketahui



Ekspresi filter digunakan dalam fungsi No-SQL DynamoDB seperti klausa WHERE yang umum dalam database SQL. Namun, karena DynamoDB adalah database No-SQL, ekspresi filter berperilaku sangat berbeda dari klausa WHERE karena sifat dan struktur database No-SQL.

Artikel ini berfokus pada ekspresi filter. Oleh karena itu, kami akan menentukan ekspresi filter, menjelaskan mengapa dan kapan ekspresi tersebut dapat diterapkan, dan memberikan panduan langkah demi langkah tentang cara menggunakannya melalui contoh yang relevan.

Apa itu Ekspresi Filter?

Ekspresi filter adalah teknik populer untuk memfilter data di DynamoDB selama operasi Kueri dan Pindai. Di DynamoDB, pemodelan dan pengaturan data yang tepat bergantung pada pemfilteran. Meskipun sebagian besar aplikasi selalu memiliki banyak sekali data yang disimpan, Anda mungkin sangat membutuhkan item dari kekacauan besar ini.







Kemampuan Anda untuk mengambil data yang benar kapan pun Anda membutuhkannya bergantung pada kemampuan pemfilteran database Anda, dan di sinilah ekspresi filter membantu. Mereka menentukan hasil dalam item kueri yang ingin Anda kembalikan kepada Anda saat mereka membuang item lainnya.



Anda dapat menerapkan ekspresi filter pada filter sisi server pada atribut item setelah operasi Kueri selesai tetapi sebelum server menampilkan kembali hasil panggilan Kueri Anda. Ini menyiratkan bahwa Kueri Anda masih menggunakan jumlah kapasitas baca yang sama, terlepas dari apakah Anda menggunakan ekspresi filter.



Selain itu, seperti operasi Kueri biasa, batas data 1 MB Anda untuk operasi Kueri terjadi sebelum evaluasi operasi ekspresi filter Anda. Anda dapat menggunakan operasi ini untuk mengurangi muatan, mencari item tertentu, dan meningkatkan kesederhanaan dan keterbacaan selama pengembangan aplikasi.





Sintaks dan Contoh Ekspresi Filter

Khususnya, ekspresi filter dan ekspresi kunci menggunakan sintaks yang sama. Selain itu, ekspresi filter dan ekspresi kondisi juga dapat menggunakan fungsi, pembanding, dan operator logika yang sama.

Operator lain yang memfilter ekspresi dapat menggunakan juga menyertakan operator CONTAINS, operator OR, Operator not-equals (), Operator IN, operator BETWEEN, operator BEGINS_WITH, operator SIZE, dan operator EXISTS.



Contoh 1: Melakukan Kueri Menggunakan AWS CLI dan Kunci Utama DynamoDB

Contoh ini menanyakan tabel Musik untuk genre tertentu (tombol partisi) dan artis tertentu (tombol sortir). Utilitas hanya mengembalikan hasil untuk item yang cocok dengan kunci partisi tertentu dan kunci pengurutan untuk lagu yang paling banyak dilihat.

Anda dapat menentukan jumlah tampilan (#v) dalam perintah. Misalnya, kami menandai batas minimum hingga 1.000 penayangan untuk menyiratkan bahwa hanya hasil untuk lagu dengan lebih dari 1.000 penayangan yang akan ditampilkan.

kueri $ aws dynamodb \
--nama-tabel Musik \
--kunci-kondisi-ekspresi 'Genre = :fn dan Artis = :sub' \
--filter-ekspresi '#v >= :num(1000)' \
--nama-atribut-ekspresi '{'#v': 'Tampilan'}' \
--ekspresi-atribut-nilai mengajukan: // nilai.json

Contoh 2: Menggunakan AWS CLI dengan Ekspresi Kondisi

Kami dapat merestrukturisasi Kueri yang sama seperti pada contoh sebelumnya, tetapi sekarang dengan kunci kondisi di samping filter kami. Itu tidak termasuk kunci sortir. Alih-alih, itu mengambil semua catatan untuk artis yang ditentukan dengan lebih dari 1.000 tampilan. Itu juga dapat direkonstruksi untuk memberikan pesanan di atas nomor yang diberikan untuk nama pengguna tertentu (customer_id).

kueri $ aws dynamodb \
--nama-tabel Musik \
--kunci-kondisi-ekspresi 'Nama Pengguna = :namapengguna' \
--filter-ekspresi 'Jumlah > :jumlah' \
--ekspresi-atribut-nilai '{
':username': { 'S': 'artis' },
':jumlah': { 'N': '1000' }
}'
\
$LOKAL

Contoh hasilnya seperti ini:

Ilustrasi yang diberikan menunjukkan bahwa dari 56 judul lagu untuk artis yang sama, hanya tujuh lagu yang ditonton lebih dari 1.000 kali. Namun, kami telah memotong angka tersebut untuk tujuan singkat dan hanya memasukkan hasil pertama dan terakhir dalam daftar.

Contoh 3: Menggunakan Ekspresi Filter dengan Operator No-Equal ().

Dalam utilitas Java berikut, kami ingin menanyakan tabel kami (Koleksi Film) untuk semua film yang tidak sama dengan 'Movie X'. Pastikan Anda menggunakan ekspresi filter dengan atribut (#name) di samping nilai atribut ekspresi (:name) seperti yang diilustrasikan berikut ini:

const AWS = membutuhkan ( 'aws-sdk' ) ;
AWS.config.update ( { wilayah: 'eu-barat-1' } ) ;
const dynamodb = AWS.DynamoDB.DocumentClient baru ( ) ;

var parameter = {
  Nama Tabel: 'koleksi film' ,
Ekspresi Kondisi Kunci: '#PK = :PK' ,
FilterEkspresi : '#nama  :nama' , ( penyaring ekspresi )
ExpressionAttributeNames: { '#PK' : 'PK' , '#nama' : 'nama' } , ( ekspresi kondisi )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nama' : 'Film X'
}
} ;

dynamodb.query ( parameter, fungsi ( salah, data ) {
jika ( berbuat salah ) console.log ( berbuat salah ) ;
kalau tidak console.log ( data ) ;
} ) ;

Contoh 4: Menggunakan Ekspresi Filter dengan Operator Pindai

Sementara perintah sebelumnya menggunakan <> untuk mengambil hanya item yang tidak sama dengan nama film yang disebut Film X, pastikan Anda menggunakan ekspresi kondisi kunci di sini bersama dengan ekspresi filter. Ini karena tidak mungkin memfilter data di operator Kueri tanpa menggunakan ekspresi kondisi kunci.

var parameter = {
Nama Tabel: 'koleksi film' ,
FilterEkspresi : 'PK = :PK dan #nama  :nama' ,
ExpressionAttributeNames: { '#nama' : 'nama' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nama' : 'Film X'
}
} ;

dynamodb.scan ( parameter, fungsi ( salah, data ) {
jika ( berbuat salah ) console.log ( berbuat salah ) ;
kalau tidak console.log ( data ) ;
} ) ;

Kesimpulan

Itu adalah akhir dari tutorial DynamoDB kami tentang ekspresi filter. Anda dapat menggunakan ekspresi filter untuk mengambil sekumpulan data pilihan, memfilter data yang diambil setelah pemindaian atau kueri, atau mengembalikan sekumpulan data ke klien. Meskipun dapat diterapkan dengan berbagai alat, ada beberapa contoh saat menggunakan ekspresi filter tidak dapat dilakukan. Misalnya, Anda hanya dapat menggunakannya jika Anda memiliki model data yang tepat, saat menggunakan kunci utama, dan saat mengekstrak sebagian besar data.