AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 52632
Accepted
Saad Saadi
Saad Saadi
Asked: 2013-11-01 18:54:52 +0800 CST2013-11-01 18:54:52 +0800 CST 2013-11-01 18:54:52 +0800 CST

Diferença entre fragmentação e replicação no MongoDB

  • 772

Estou apenas confuso sobre como funcionam o Sharding e a Replication.

De acordo com as definições que encontrei na documentação:

Replicação: Um conjunto de réplicas no MongoDB é um grupo de processos mongod que mantêm o mesmo conjunto de dados.

Sharding: Sharding é um método para armazenar dados em várias máquinas.

De acordo com meu entendimento, se eu tiver 75 GB de dados, usando a replicação (3 servidores), ele armazenará 75 GB de dados em cada servidor significa 75 GB no Servidor-1, 75 GB no servidor-2 e 75 GB no servidor-3. (me corrija se eu estiver errado).

E usando o sharding, ele será armazenado como dados de 25 GB no servidor-1, dados de 25 GB no servidor-2 e dados de 25 GB no servidor-3. (Certo?).

Mas então eu encontrei esta linha no tutorial:

Os fragmentos armazenam os dados. Para fornecer alta disponibilidade e consistência de dados, em um cluster fragmentado de produção, cada fragmento é um conjunto de réplicas

Como um conjunto de réplicas tem 75 GB de tamanho, mas o shard tem 25 GB de tamanho, como eles podem ser equivalentes?

Isso me deixa bastante confuso. Acho que estou perdendo algo óbvio. Por favor me ajude com isso.

mongodb
  • 4 4 respostas
  • 96797 Views

4 respostas

  • Voted
  1. Best Answer
    Philipp
    2013-11-22T04:59:39+08:002013-11-22T04:59:39+08:00

    Um conjunto de réplicas significa que você tem várias instâncias do MongoDB que espelham todos os dados umas das outras. Um conjunto de réplicas consiste em um Mestre (também chamado de "Primário") e um ou mais Escravos (também conhecido como Secundário). As operações de leitura podem ser atendidas por qualquer escravo, portanto, você pode aumentar o desempenho de leitura adicionando mais escravos ao conjunto de réplicas (desde que seu aplicativo cliente seja capaz de usar membros de conjunto diferentes). Mas as operações de gravação sempre ocorrem no mestre do conjunto de réplicas e são propagadas para os escravos, portanto, as gravações não serão mais rápidas quando você adicionar mais escravos.

    Os conjuntos de réplicas também oferecem tolerância a falhas. Quando um dos membros do conjunto de réplicas fica inativo, os outros assumem. Quando o mestre cair, os escravos elegerão um novo mestre. Por essa razão , sugere-se que a implantação produtiva sempre use o MongoDB como um conjunto de réplicas de pelo menos três servidores, dois deles contendo dados (o terceiro é um "árbitro" sem dados que é necessário para determinar um novo mestre quando um dos escravos cai).

    Um cluster fragmentado significa que cada fragmento do cluster (que também pode ser um conjunto de réplicas) cuida de uma parte dos dados. Cada solicitação, tanto de leitura quanto de gravação, é atendida pelo cluster em que os dados residem. Isso significa que o desempenho de leitura e gravação pode ser aumentado adicionando mais shards a um cluster. Qual documento reside em qual estilhaço é determinado pela chave de estilhaço de cada coleção. Ele deve ser escolhido de forma que os dados possam ser distribuídos uniformemente em todos os clusters e que fique claro para as consultas mais comuns onde a chave de fragmentação reside (exemplo: quando você consulta com frequência por user_name, sua chave de fragmentação deve incluir o campo user_namepara que cada consulta possa ser delegada a apenas um fragmento que possui esse documento).

    A desvantagem é que a tolerância a falhas sofre. Quando um fragmento do cluster fica inativo, todos os dados nele ficam inacessíveis. Por esse motivo, cada membro do cluster também deve ser um conjunto de réplicas. Isso não é necessário. Quando você não se importa com a alta disponibilidade, um shard também pode ser uma única instância mongod sem replicação . Mas para uso em produção, você deve sempre usar replicação .

    Então, o que isso significa para o seu exemplo?

                                Sharded Cluster             
                 /                    |                    \
          Shard A                  Shard B                  Shard C
            / \                      / \                      / \
    +-------+ +---------+    +-------+ +---------+    +-------+ +---------+
    |Primary| |Secondary|    |Primary| |Secondary|    |Primary| |Secondary|
    |  25GB |=| 25GB    |    | 25 GB |=| 25 GB   |    | 25GB  |=| 25GB    |   
    +-------+ +---------+    +-------+ +---------+    +-------+ +---------+
    

    Quando você deseja dividir seus dados de 75 GB em 3 fragmentos de 25 GB cada, você precisa de pelo menos 6 servidores de banco de dados organizados em três conjuntos de réplicas. Cada conjunto de réplicas consiste em dois servidores que possuem os mesmos 25 GB de dados.

    Você também precisa de servidores para os árbitros dos três conjuntos de réplicas, bem como o roteador mongos e o servidor de configuração para o cluster. Os árbitros são muito leves e só são necessários quando um membro do conjunto de réplicas fica inativo, então eles geralmente podem compartilhar o mesmo hardware com outra coisa. Mas o roteador e o servidor de configuração Mongos devem ser redundantes e em seus próprios servidores.

    • 172
  2. sysadmin1138
    2013-11-02T03:21:25+08:002013-11-02T03:21:25+08:00
    • A fragmentação particiona o conjunto de dados em partes discretas.
    • A replicação duplica o conjunto de dados.

    Essas duas coisas podem empilhar, pois são diferentes. Usar ambos significa que você fragmentará seu conjunto de dados em vários grupos de réplicas. Dito de outra forma, você replica shards; um conjunto de dados sem shards é um único 'shard'.

    Um cluster Mongo com três shards e 3 réplicas teria 9 nós.

    • 3 conjuntos de réplicas de 3 nós.
    • Cada conjunto de réplicas contém um único estilhaço.
    • 28
  3. haper
    2013-11-11T23:47:45+08:002013-11-11T23:47:45+08:00

    Ao fragmentar , você divide sua coleção em várias partes.
    Replicar seu banco de dados significa fazer espelhos de seu conjunto de dados.

    • 12
  4. Ashish Kumar
    2017-03-09T17:53:30+08:002017-03-09T17:53:30+08:00

    Em termos de funcionalidade entregue. A fragmentação fornece escalabilidade e paralelismo. A replicação fornece disponibilidade

    • 7

relate perguntas

  • Mongo Map-Reduce ou Sharding?

  • Configurando o Mongo com clustering

  • Diferença entre as chamadas find e findone do MongoDB

  • A fragmentação é eficaz para coleções pequenas?

  • Bons recursos para operar/administrar o MongoDB

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve