Kami menggunakan DynamoDB dan ElastiCache Redis untuk alasan berbeda.
DynamoDB:
- Memiliki bahasa permintaan yang mampu melakukan hal-hal yang lebih kompleks (lebih besar dari, di antara dll.)
- Dapat dijangkau melalui API eksternal yang menghadap internet (berbagai wilayah dapat dijangkau tanpa perubahan atau infrastruktur sendiri)
- Izin berdasarkan tabel atau bahkan baris dimungkinkan
- Skala dalam hal ukuran data hingga tak terbatas
- Anda membayar per permintaan -> angka permintaan rendah berarti tagihan lebih kecil, angka permintaan tinggi berarti tagihan lebih tinggi
- Baca dan Tulis berbeda dalam biaya
- Data disimpan berlebihan oleh AWS di berbagai fasilitas
- DynamoDB sangat tersedia di luar kotak
- Autoscaling tersedia dalam layanan itu sendiri
ElastiCache Redis:
- Bahasa permintaan sederhana - tidak ada fitur kompleks
- Apakah (out-of-the-box) tidak dapat dijangkau dari daerah lain.
- Anda selalu terbatas pada jumlah memori (atau jumlah semua instance utama dalam sebuah cluster)
- Berputar di beberapa instance hanya mungkin dalam aplikasi Anda - Redis tidak melakukan apa pun di sini (Cluster Redis membantu di sini tetapi logika sharding masih ada di dalam driver / SDK yang Anda gunakan dalam aplikasi Anda) - scale-in dan scale- keluar tidak mungkin tanpa downtime saat ini
- Anda membayar per instance, tidak peduli berapa pun banyaknya atau jumlah permintaan.
- Jika Anda ingin redundansi data, Anda perlu mengatur replikasi (tidak mungkin antar wilayah yang berbeda)
- Anda perlu menggunakan replika untuk ketersediaan tinggi
- Tidak ada penskalaan otomatis (lihat bagian tentang penskalaan sama sekali di atas)
Jadi pengaturan kami sebagian besar waktu adalah: cache sederhana dengan volume tinggi permintaan di Redis didukung oleh DynamoDB sebagai penyimpanan permanen dan tahan lama. Dengan ini kami membatasi biaya karena kami mendapatkan diskon implisit untuk bacaan kami oleh model bayar per contoh dari Redis tetapi juga mendapatkan manfaat redundansi DynamoDB dan bahkan dapat menggunakan bahasa query DynamoDB untuk hal-hal yang lebih kompleks ( jika kita membutuhkannya).
Semoga itu bisa membantu!
Pembaruan: Dengan pengumuman Amazon DynamoDB Accelerator ( https://aws.amazon.com/de/dynamodb/dax/ ) kami beralih untuk menggunakan DAX sebagaimana adanya (pada akhirnya) persis apa yang kami lakukan dengan kombinasi DynamoDB dan Redis. Sebagai DAX, sepenuhnya dikelola oleh AWS dan memberi kami kesempatan untuk selalu menggunakan bahasa DynamoDB dalam aplikasi kami, tetapi juga mendapatkan manfaat dari cache write-through seperti Redis.
Alasan utama kami menggunakan Elasticache daripada DynamoDB adalah kecepatan - Anda mendapatkan latensi round trip sub 1ms untuk objek kecil. Kotak ini sangat dekat dengan mesin EC2 Anda, dan memori jauh lebih cepat daripada disk, bahkan SSD.
Mungkin juga ada keuntungan biaya mengingat model penetapan harga yang berbeda, meskipun saya belum terlalu detail di sana.
sumber
Redis / memcached adalah penyimpanan dalam-memori dan umumnya harus lebih cepat daripada DynamoDB untuk data tipe cache / antrian. Mereka juga memiliki item tambahan yang berguna seperti kunci kedaluwarsa, Pub / Sub di Redis, dll. Yang mungkin tidak dimiliki Dynamo.
sumber