Itu tergantung pada ukuran dan persyaratan proyek Anda.
Saya dapat melihat satu cara di mana data tentang pengguna dapat dibagi menjadi dua set, dengan tujuan dan persyaratan yang berbeda:
- Data identitas: nama pengguna, kata sandi hash, alamat email, waktu login terakhir, dll.
- Data profil pengguna, yang mencakup preferensi pengguna, aktivitas terbaru, pembaruan status, dll.
Perhatikan bahwa ada beberapa atribut tentang pengguna yang dapat jatuh dalam kategori baik (misalnya tanggal lahir pengguna). Perbedaan antara kedua set ini adalah bahwa yang pertama dikontrol dengan ketat dan hanya melalui alur kerja tertentu yang dapat dimodifikasi. Misalnya, mengubah kata sandi mungkin memerlukan penyediaan kata sandi yang ada, mengubah email mungkin memerlukan verifikasi email, dan itu akan digunakan jika pengguna lupa kata sandi.
Preferensi tidak memerlukan ACL seperti itu, dan secara teoritis dapat dimodifikasi oleh pengguna atau aplikasi lain selama pengguna menyetujuinya. Taruhannya rendah jika aplikasi jahat atau karena bug merusak data atau mencoba memodifikasinya (dengan asumsi langkah-langkah keamanan lain diambil.) Namun, biasanya akan menjadi bencana jika nama pengguna, kata sandi, atau email dapat dimodifikasi karena mereka dapat digunakan untuk mengambil identitas pengguna atau menolak layanan atau menyebabkan biaya dukungan, dll. untuk admin.
Dengan demikian, biasanya data disimpan dalam dua jenis sistem:
- Data identitas biasanya masuk dalam direktori atau solusi IAM.
- Data preferensi akan berakhir di basis data.
Karena itu, dalam praktiknya, orang akan melanggar aturan-aturan ini dan menggunakan satu atau yang lain (misalnya SQL server di belakang penyedia keanggotaan ASP.NET).
Ketika data identitas menjadi lebih besar atau organisasi yang menggunakannya menjadi lebih besar, berbagai jenis masalah merayap masuk. Misalnya, dalam kasus direktori, itu akan mencoba mereplikasi perubahan kata sandi segera ke semua server dalam lingkungan multi-server. Namun, preferensi pengguna hanya membutuhkan konsistensi akhirnya. (FYI: Keduanya adalah optimasi yang berbeda dari teorema CAPS.)
Akhirnya, direktori (khususnya direktori online / cloud) juga akan mengeluarkan token akses untuk sumber daya lain menggunakan protokol seperti OAUTH (mis. Pertimbangkan Facebook, Google, Akun Microsoft, ADFS), sedangkan database tidak memerlukannya. Basis data akan mendukung gabungan dan struktur kueri yang cukup rumit, yang direktori tidak perlu.
Untuk lebih jelasnya, beberapa pencarian di direktori identitas vs database akan membantu.
Akhirnya tergantung pada apa skenario Anda dan diharapkan di masa depan, termasuk integrasi dengan pihak ketiga (dan apa yang mereka gunakan). Jika ini adalah proyek yang lengkap dan Anda yakin dapat mengamankan data identitas pengguna dan mengotentikasi dengan benar, maka Anda bisa mencari basis data. Kalau tidak, mungkin perlu menyelidiki direktori identitas.
Jika Anda menggunakan DB, IMO, menggunakan satu DB vs dua akhirnya akan turun ke kontrol akses, baik untuk pengguna dan aplikasi.