Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Tutorial: Implementar particionado en Spring Boot utilizando Spring Data

Este tutorial muestra cómo configurar un clúster en MongoDB Atlas y compilar una aplicación Spring Boot que utiliza Spring Data MongoDB para trabajar con un particionado users colección.

La particionado distribuye un conjunto de datos en varias máquinas. Esto es útil para aplicaciones con conjuntos de datos grandes o alto rendimiento de lectura y escritura. MongoDB admite dos enfoques de escalado: escalado vertical y escalado horizontal.

El escalado vertical incrementa la capacidad de un solo servidor al actualizar su CPU, RAM o almacenamiento. Este enfoque tiene límites basados en las capacidades de hardware y puede volverse costoso.

El escalado horizontal divide tu conjunto de datos y carga de trabajo entre múltiples servidores. Cada servidor gestiona un subconjunto de la carga de trabajo total, lo que puede proporcionar una mejor eficiencia que un solo servidor potente. MongoDB Atlas simplifica la gestión de clústeres fragmentados.

Para obtener más información sobre el particionado, consulta Particionado en el manual del MongoDB Server.

Este tutorial te muestra cómo realizar las siguientes acciones:

  • Verifique los requisitos previos

  • Configura un clúster particionado en MongoDB Atlas

  • Configura el particionado para una colección

  • Implementar la aplicación Spring Boot

  • Configura la aplicación Spring Boot

1

Antes de comenzar, asegúrate de tener lo siguiente:

2

Para crear un clúster particionado, realiza las siguientes acciones:

  1. En los ajustes del clúster de tu clúster M30 o superior, navega hasta Additional Settings.

  2. Selecciona Sharding y actívalo.

  3. Establecer el número de particiones a implementar. Para aplicaciones de producción, use más de una partición. Se puede realizar la implementación entre 1 y 70 particiones. Para aprender más, consulte Implementar un clúster en la documentación de Atlas.

  4. Una vez que se haya creado tu clúster particionado, selecciona Load Sample Dataset para cargar los datos de muestra.

3

Spring Data MongoDB no configura automáticamente el particionado para las colecciones. Debe realizar estas operaciones manualmente utilizando mongosh.

Para conectarse a su clúster y configurar el particionamiento, ejecute el siguiente comando en su terminal:

mongosh "mongodb+srv://<username>:<password>@<cluster-url>/admin"

Sustituye los marcadores de posición <username>, <password> y <cluster-url> con tus credenciales y la cadena de conexión de MongoDB Atlas.

Para crear una partición de la colección users por el campo email, ejecute el siguiente comando:

sh.shardCollection("sample_mflix.users", { email: 1 })

Para verificar que el particionado está habilitado y que la colección está particionada, ejecuta el siguiente comando:

sh.status()
4

Para implementar la aplicación Spring Boot, debes definir las capas de entidad, repositorio, servicio y controlador.

  1. Para definir una clase de entidad con particionado, usa la anotación @Sharded para especificar los campos de clave de partición. El siguiente código muestra una entidad de ejemplo User con el campo email como clave de partición:

    import org.springframework.data.annotation.Id;
    import org.springframework.data.mongodb.core.mapping.Document;
    import org.springframework.data.mongodb.core.mapping.Field;
    import org.springframework.data.mongodb.core.mapping.Sharded;
    @Document("users")
    @Sharded(shardKey = { "email" })
    public class User {
    @Id
    private String id;
    private String name;
    @Field("email")
    private String email;
    private String password;
    // Getters and Setters
    }

    La anotación @Sharded ayuda a Spring Data MongoDB a optimizar las operaciones en un entorno particionado. Garantiza que las replaceOne queries incluyan la clave de partición durante las actualizaciones de inserción.

  2. Para crear un repositorio para la entidad User, define una interfaz que amplíe MongoRepository. El siguiente código muestra una interfaz de ejemplo UserRepository:

    import org.springframework.data.mongodb.repository.MongoRepository;
    import com.mongodb.sharded.model.User;
    public interface UserRepository extends MongoRepository<User, String> {
    }
  3. Para gestionar la lógica empresarial, crea una clase de servicio que interactúe con el repositorio. El siguiente código muestra un ejemplo de clase UserService:

    import java.util.List;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import com.mongodb.sharded.model.User;
    import com.mongodb.sharded.repository.UserRepository;
    @Service
    public class UserService {
    @Autowired
    private UserRepository userRepository;
    public List<User> getAllUsers() {
    return userRepository.findAll();
    }
    public User saveUser(User user) {
    return userRepository.save(user);
    }
    }
  4. Para exponer los endpoints REST para la entidad User, cree una clase controladora. El siguiente código muestra una clase de ejemplo UserController:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.List;
    @RestController
    @RequestMapping("/users")
    public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping
    public List<User> getAllUsers() {
    return userService.getAllUsers();
    }
    @PostMapping
    public User createUser(@RequestBody User user) {
    return userService.saveUser(user);
    }
    }
5

Para conectar su aplicación Spring Boot a MongoDB Atlas, agregue el URI de conexión de MongoDB a su archivo application.properties o application.yml. El siguiente código muestra una configuración de ejemplo:

spring.data.mongodb.uri=mongodb+srv://<username>:<password>@<cluster-url>/myDatabase?retryWrites=true&w=majority

Sustituye los marcadores de posición <username>, <password> y <cluster-url> con tus credenciales y la cadena de conexión de MongoDB Atlas.

Cuando elijas una clave de partición, verifica que distribuya los datos de manera uniforme entre las particiones. La elección de una clave de partición es fundamental para el rendimiento y la escalabilidad de tu clúster particionado. Para obtener más información sobre cómo seleccionar una clave de partición, consulta Elegir una clave de partición en el manual del servidor MongoDB.

Una clave de partición ideal tiene las siguientes características:

  • Alta cardinalidad: la clave tiene muchos valores únicos para distribuir los datos de manera uniforme entre las particiones. La clave no necesita ser completamente única.

  • Distribución uniforme: la clave distribuye los documentos de manera uniforme entre todas las particiones para evitar puntos críticos donde una partición maneje más datos o solicitudes que las demás.

  • Soporte para queries comunes: Elige una clave que se alinee con tus patrones de query más comunes para reducir la dispersión de queries y mejorar el rendimiento.

Para la colección users en la base de datos sample_mflix, el campo email funciona bien como clave de partición si:

  • Los correos electrónicos son únicos y están bien distribuidos.

  • Las consultas suelen filtrarse u ordenarse por correo electrónico.

Para aprender más sobre particionado en MongoDB, consulta Particionado en el manual del MongoDB Server.

Volver

Comenzar con Spring Session MongoDB

En esta página