MongoDB - Sharding
Sharding é o processo de armazenar registros de dados em várias máquinas e é a abordagem do MongoDB para atender às demandas de crescimento de dados. Conforme o tamanho dos dados aumenta, uma única máquina pode não ser suficiente para armazenar os dados nem fornecer uma taxa de transferência aceitável de leitura e gravação. A fragmentação resolve o problema da escala horizontal. Com a fragmentação, você adiciona mais máquinas para dar suporte ao crescimento de dados e às demandas de operações de leitura e gravação.
Por que fragmentar?
Na replicação, todas as gravações vão para o nó mestre
Consultas sensíveis à latência ainda vão para o mestre
O conjunto de réplicas único tem limitação de 12 nós
A memória não pode ser grande o suficiente quando o conjunto de dados ativo é grande
O disco local não é grande o suficiente
A escala vertical é muito cara
Sharding no MongoDB
O diagrama a seguir mostra o Sharding no MongoDB usando cluster fragmentado.
No diagrama a seguir, existem três componentes principais -
Shards- Fragmentos são usados para armazenar dados. Eles fornecem alta disponibilidade e consistência de dados. No ambiente de produção, cada shard é um conjunto de réplicas separado.
Config Servers- Os servidores de configuração armazenam os metadados do cluster. Esses dados contêm um mapeamento do conjunto de dados do cluster para os shards. O roteador de consulta usa esses metadados para direcionar operações para fragmentos específicos. No ambiente de produção, os clusters fragmentados têm exatamente 3 servidores de configuração.
Query Routers- Os roteadores de consulta são basicamente instâncias mongo, fazem interface com aplicativos cliente e operações diretas para o fragmento apropriado. O roteador de consulta processa e direciona as operações para shards e, em seguida, retorna os resultados para os clientes. Um cluster fragmentado pode conter mais de um roteador de consulta para dividir a carga de solicitação do cliente. Um cliente envia solicitações a um roteador de consulta. Geralmente, um cluster fragmentado tem muitos roteadores de consulta.