Anda mengasumsikan bahwa penyimpanan sesi dan penyimpanan basis data eksklusif. Mereka bukan. Tapi mari kita mulai dengan mengasumsikan mereka.
Keuntungan untuk penyimpanan sesi adalah tiga kali lipat:
- Tidak perlu memasukkan data secara eksplisit ke dalam basis data. Anda cukup mengatur variabel sesi dan selesai. Sederhana dan berisiko rendah secara fungsional.
- Tidak perlu mengelola siklus hidup kunjungan pengguna dan keranjang belanja karena wadah / kerangka kerja melakukannya untuk Anda
- Biasanya pembersihan otomatis sesi lama yang menganggur dilakukan untuk Anda.
Kekurangan penyimpanan sesi:
- Afinitas sesi, kecuali jika Anda menyelidiki replikasi
- Tidak ada failover, kecuali jika Anda menyelidiki replikasi atau kegigihan status sesi ke disk secara manual, yang dapat menjadi rumit.
- Semua sesi harus disimpan dalam memori. Ini diperkuat jika Anda menggunakan replikasi.
Keuntungan penyimpanan basis data:
- Tidak perlu khawatir tentang afinitas sesi atau replikasi negara. Anda dapat menghapus semua permintaan.
- Lebih sedikit memori overhead dalam aplikasi.
- Jika pesanan selesai, semuanya berakhir di database, jadi ini bisa membuat penyelesaian mudah karena data sudah ada.
Kerugian dari penyimpanan basis data:
- Keranjang yang ditinggalkan - beberapa pengguna anonim menambahkan item ke keranjang belanja mereka dan menghilang. Data itu bertahan selamanya kecuali Anda memiliki semacam proses kedaluwarsa.
- Anda perlu menemukan cara untuk melacak pengguna dan mencari tahu apakah, untuk permintaan yang diberikan, ini merupakan sesi penelusuran yang ada atau baru. (ya, ini mungkin mudah jika Anda menggunakan cookie, tetapi bagaimana Anda memastikan dua pengguna tidak berakhir dengan id yang sama?).
- Lebih banyak kode
Anda tidak menyebutkan platform apa yang Anda gunakan. Saya akan mencari pendekatan yang menggunakan sesi yang didukung basis data di mana data sesi hanya ada dalam memori selama siklus permintaan / respons, memuatnya dari database dan menyimpannya kembali ke database. Ini telah membantu saya dengan baik di masa lalu.
Keuntungan dari sesi yang didukung basis data:
- Tidak perlu untuk afinitas server.
- Mudah di memori server aplikasi
- Data sesi siaga / terbengkalai dibersihkan untuk Anda.
- Daur hidup kunjungan pertama pengguna, kunjungan berulang, akhir sesi semuanya sudah ditentukan untuk Anda.
- Mudah dikodekan
Kerugian dari sesi yang didukung basis data:
- Konfigurasi - Anda perlu menyelidiki wadah Anda, apakah itu PHP, Java EE (Tomcat, Jetty, JBoss, dll.), Node.js + express.js atau yang lainnya mendukung ini dan menyediakan konfigurasi yang tepat.
- Anda mungkin perlu memuat tes ini karena Anda menambahkan 2 operasi basis data per permintaan.
Ada kemungkinan ketiga, yang disentuh seseorang sebelumnya. Anda bisa melewatkan penggunaan sesi sama sekali dan menggunakan penyimpanan sisi klien dengan memasukkan segala sesuatu dalam penyimpanan lokal cookie atau html.
Saya akan meninggalkan pro / kontra dari itu sebagai latihan untuk Anda, tetapi saya akan memberi Anda petunjuk bahwa untuk penyimpanan HTML5, kompatibilitas browser mungkin sesuatu yang harus ditinjau dengan cermat.
Saya sudah menguraikan fakta untuk Anda. Semoga ini membantu Anda membuat keputusan yang tepat untuk situasi Anda.