Supongamos que tengo una colección de usuarios. Cada usuario tiene un User_ID, Nombre de usuario y Tenant_ID.La mejor manera de almacenar en caché una colección de objetos. ¿Juntos o como artículos individuales?
A veces necesito todos los usuarios para un Tenant_ID específico.
A veces necesito un usuario específico basado en User_ID".
A veces necesito un usuario basado en nombre de usuario.
siempre tendré la Tenant_ID disponibles para su uso como parte de las operaciones de búsqueda.
¿Cuál es la forma ideal de implementar una capa de caché para estos datos?
¿Qué consideraciones debo considerar ya que estoy tratando con un sistema de varios inquilinos?
¿Cuál es la mejor forma de administrar todas las claves de caché posibles?
Opción # 1: tienda todos los usuarios juntos bajo una única clave de "Tenant_1_Users"
El problema con esto es que va a transferir una gran cantidad de datos no deseados sobre el alambre. Si solo necesito encontrar un usuario específico, entonces necesito hacer la búsqueda en el código usando LINQ o algo después de recuperar todas las colecciones.
Opción n. ° 2: Duplicar el mismo objeto Usuario bajo diferentes teclas como "TenantID_1_UserID_5" y "TenantID_1_Username_Jason".
El problema aquí es administrar todas las diversas claves y la ubicación de los objetos de usuario. Especialmente si necesito enjuagar un usuario específico porque se ha actualizado en la base de datos. Ahora necesito saber todos los lugares posibles donde podría almacenarse. También usa más memoria ya que el mismo usuario puede estar bajo diferentes teclas.
Relacionados: AppFabric Cache 'Design' - Caching Individual Items or Collections?
El problema es que Azure AppFabric Caching no admite regiones, etiquetas o notificaciones.
Derecho, este es definitivamente uno de los mayores problemas con la duplicación de datos. – Vyrotek