Descubre cómo el proveedor MongoDB EF Core integra cifrado consultable y búsqueda vectorial para potenciar la seguridad y la inteligencia de tus apps .NET.

Novedades de MongoDB EF Core: Cifrado Consultable y Búsqueda Vectorial

Novedades de MongoDB EF Core: Cifrado Consultable y Búsqueda Vectorial

Artículo reescrito y adaptado del blog oficial de .NET (fuente original).

Integración avanzada de MongoDB y EF Core para .NET

Desde su disponibilidad general en mayo de 2024, el proveedor de MongoDB para Entity Framework Core ha permitido a los desarrolladores .NET trabajar con MongoDB usando las capacidades familiares de EF Core, como consultas LINQ, seguimiento de cambios y concurrencia optimista. Esto ha facilitado la adopción de MongoDB en proyectos .NET gracias a una integración fluida y escalable.

Con el paso de los meses, el proveedor ha evolucionado incorporando nuevas funciones específicas de MongoDB, mejoras de rendimiento y compatibilidad con las versiones más recientes de EF Core. Ahora, dos características clave amplían aún más sus posibilidades: Cifrado Consultable y Búsqueda Vectorial.

Cifrado Consultable en MongoDB: Seguridad sin sacrificar consultas

El Cifrado Consultable (Queryable Encryption) permite cifrar datos sensibles en tu base de datos manteniendo la capacidad de realizar consultas sobre esos datos. Así, las organizaciones pueden cumplir con normativas estrictas de privacidad (como en los sectores de salud o financiero) sin perder funcionalidad en sus aplicaciones.

Con esta función, los datos permanecen protegidos tanto en reposo como en tránsito, y no es necesario rediseñar la aplicación para consultar campos cifrados.

Ejemplo de configuración en EF Core

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Empleado>(entity =>
    {
        entity.Property(e => e.IdentificadorFiscal)
            .IsEncryptedForEquality(<TuClaveCifrado>);

        entity.Property(e => e.Salario)
            .HasBsonRepresentation(BsonType.Decimal128)
            .IsEncryptedForRange(0m, 10000000m, 0, <TuClaveCifrado>);
    });
}

Consultas sobre campos cifrados

// Consulta por igualdad sobre campo cifrado
var empleado = db.Empleados.Where(e => e.IdentificadorFiscal == "45678");

// Consulta por rango sobre campo cifrado
var altosDirectivos = db.Empleados.Where(e => e.Salario >= 100000m && e.Salario < 200000m);

Consulta el tutorial completo de cifrado consultable para más detalles.

Búsqueda Vectorial: Potencia la inteligencia con IA y MongoDB

La Búsqueda Vectorial transforma la manera de buscar y analizar datos no estructurados, permitiendo búsquedas por similitud semántica en lugar de palabras clave exactas. Utiliza embeddings vectoriales para representar textos, imágenes o sonidos como vectores numéricos, facilitando aplicaciones como motores de recomendación, búsqueda semántica y detección de anomalías.

Esto se traduce en resultados de búsqueda más relevantes y la posibilidad de crear soluciones de IA directamente sobre tu base de datos MongoDB.

Cómo definir campos vectoriales en tu modelo

// Dentro de OnModelCreating
b.Property(e => e.VectorTrama)
   .HasElementName("vector_trama_voyage_3_large")
   .HasBinaryVectorDataType(BinaryVectorDataType.Float32);

// O directamente en la clase de modelo
[BinaryVector(BinaryVectorDataType.Float32)]
public float[]? VectorTrama { get; set; }

Ejemplo de consulta vectorial en LINQ

var similares = await db.Peliculas.VectorSearch(
    e => e.VectorTrama,
    miVectorReferencia,
    limit: 10)
    .ToListAsync();

Descubre más opciones avanzadas (prefiltros, puntuaciones, etc.) en el tutorial de búsqueda vectorial.

Primeros pasos con el proveedor MongoDB EF Core

Puedes comenzar creando una aplicación .NET sencilla que se conecte a MongoDB Atlas, la base de datos en la nube gestionada de MongoDB. El quickstart oficial te guía paso a paso.

Recursos y documentación recomendada

¿Quieres certificarte en búsqueda vectorial? Explora el curso oficial y obtén tu badge.

Compartir:

Más artículos

Novedades de DotNet9 y DotNetMAUI9

Microsoft ha lanzado .NET 9 con mejoras significativas en rendimiento y un enfoque renovado en aplicaciones nativas de la nube. Esta versión STS (Soporte Técnico