Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

MongoDB vs. Redis vs. Cassandra untuk solusi penyimpanan baris sementara tulis cepat

Untuk solusi pemanenan seperti ini, saya akan merekomendasikan pendekatan multi-tahap. Redis bagus dalam komunikasi waktu nyata . Redis dirancang sebagai penyimpanan kunci/nilai dalam memori dan mewarisi beberapa manfaat yang sangat bagus sebagai database memori:O(1) daftar operasi. Selama ada RAM untuk digunakan di server, Redis tidak akan memperlambat mendorong ke akhir daftar Anda yang bagus ketika Anda perlu memasukkan item pada tingkat yang ekstrim. Sayangnya, Redis tidak dapat beroperasi dengan kumpulan data yang lebih besar dari jumlah RAM yang Anda miliki (hanya menulis ke disk, pembacaan adalah untuk memulai ulang server atau jika terjadi kerusakan sistem) dan penskalaan harus dilakukan oleh Anda dan aplikasi Anda . (Cara yang umum adalah dengan menyebarkan kunci ke berbagai server, yang diimplementasikan oleh beberapa driver Redis terutama untuk Ruby on Rails.) Redis juga memiliki dukungan untuk perpesanan publish/subscribe sederhana, yang kadang-kadang dapat berguna juga.

Dalam skenario ini, Redis adalah "tahap satu." Untuk setiap jenis acara tertentu, Anda membuat daftar di Redis dengan nama unik; misalnya kita memiliki "halaman dilihat" dan "tautan diklik." Untuk kesederhanaan, kami ingin memastikan data di setiap daftar memiliki struktur yang sama; tautan yang diklik mungkin memiliki token pengguna, nama tautan, dan URL, sedangkan halaman yang dilihat mungkin hanya memiliki token pengguna dan URL. Kekhawatiran pertama Anda hanyalah mendapatkan fakta bahwa itu terjadi dan apa pun benar-benar diperlukan data yang Anda butuhkan didorong.

Selanjutnya kami memiliki beberapa pekerja pemrosesan sederhana yang mengambil informasi yang dimasukkan dengan panik ini dari tangan Redis, dengan memintanya untuk mengambil item dari akhir daftar dan menyerahkannya. Pekerja dapat melakukan penyesuaian/deduplikasi/pencarian ID yang diperlukan untuk mengarsipkan data dengan benar dan menyerahkannya ke situs penyimpanan yang lebih permanen. Jalankan sebanyak mungkin pekerja ini yang Anda butuhkan untuk menjaga agar beban memori Redis dapat ditahan. Anda dapat menulis pekerja dalam apa pun yang Anda inginkan (Node.js, C#, Java, ...) selama memiliki driver Redis (sebagian besar bahasa web melakukannya sekarang) dan satu untuk penyimpanan yang Anda inginkan (SQL, Mongo, dll. )

MongoDB bagus dalam penyimpanan dokumen . Tidak seperti Redis, ia mampu menangani database yang lebih besar dari RAM dan mendukung sharding/replikasi sendiri. Keuntungan MongoDB dibandingkan opsi berbasis SQL adalah Anda tidak harus memiliki skema yang telah ditentukan sebelumnya, Anda bebas mengubah cara penyimpanan data kapan pun Anda mau.

Namun, saya akan menyarankan Redis atau Mongo untuk fase "langkah pertama" dalam menyimpan data untuk diproses dan menggunakan pengaturan SQL tradisional (Postgres atau MSSQL, mungkin) untuk menyimpan data pascaproses. Melacak perilaku klien terdengar seperti data relasional bagi saya, karena Anda mungkin ingin pergi ke "Tunjukkan kepada saya semua orang yang melihat halaman ini" atau "Berapa halaman yang dilihat orang ini pada hari tertentu" atau "Hari apa yang memiliki jumlah penonton terbanyak? ". Mungkin ada gabungan atau kueri yang lebih kompleks untuk tujuan analitik yang Anda buat, dan solusi SQL yang matang dapat melakukan banyak pemfilteran ini untuk Anda; NoSQL (khusus Mongo atau Redis) tidak dapat melakukan penggabungan atau kueri kompleks di berbagai kumpulan data.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menghentikan interaksi Redis dalam javascript menggunakan Sinon

  2. Bagaimana cara berbagi sesi antara NodeJs dan PHP menggunakan Redis?

  3. cara mengonfigurasi batas waktu JedisConnectionFactory berdasarkan kerangka boot musim semi

  4. Bagaimana cara mengaktifkan TLS untuk Redis 6 di Sidekiq?

  5. Pengantar Struktur Data Redis:Hash