fatia MongoDB
Slices
Há um outro conjunto MongoDB dentro, cortando tecnologia, uma grande quantidade de dados para atender a crescente demanda por MongoDB.
Quando MongoDB para armazenar grandes quantidades de dados, uma máquina pode ser insuficiente para armazenar os dados, pode ser insuficiente para fornecer uma leitura aceitável e escrever rendimento. Neste ponto, pode-se dividir os dados em várias máquinas, de modo que o sistema de base de dados pode armazenar e processar mais dados.
Por slice
- Copiar tudo escrever operações para o nó primário
- Atrasar dados sensíveis na query master
- Um único conjunto de cópias está limitado a 12 nós
- Quando o enorme volume de pedidos aparece quando a memória.
- escassez de disco local
- expansão vertical é caro
fatia MongoDB
A figura a seguir mostra o uso da fatia estrutura de cluster na distribuição MongoDB:
A imagem acima tem três componentes principais:
- Shard:
Usado para armazenar o bloco de dados real, o ambiente real de produção, uma função de servidor fragmento pode definir algumas máquinas Relica definir um compromisso para evitar o ponto único host de falha
- Configuração do servidor:
instância mongod, armazena toda a ClusterMetadata, incluindo as informações pedaço.
- Consulta Routers:
A extremidade dianteira do percurso, pelo que o acesso do cliente, e todo o aglomerado parecido com um banco de dados único aplicações front-end pode transparente usar.
Exemplos de fragmentação
portas de tecido fatia são distribuídos da seguinte forma:
Shard Server 1:27020 Shard Server 2:27021 Shard Server 3:27022 Shard Server 4:27023 Config Server :27100 Route Process:40000
Passo um: Iniciar Shard Servidor
[root@100 /]# mkdir -p /www/mongoDB/shard/s0 [root@100 /]# mkdir -p /www/mongoDB/shard/s1 [root@100 /]# mkdir -p /www/mongoDB/shard/s2 [root@100 /]# mkdir -p /www/mongoDB/shard/s3 [root@100 /]# mkdir -p /www/mongoDB/shard/log [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork ptpt [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork
Segundo Passo: Comece o servidor de configuração
[root@100 /]# mkdir -p /www/mongoDB/shard/config [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork
Nota: Aqui podemos começar como serviço MongoDB comum como começar, não há necessidade de adicionar parâmetros -shardsvr e configsvr. Porque o papel desses dois parâmetros é mudar a porta inicial, para que possamos ser a porta de auto-designado.
Terceiro Passo: Comece a rota de processo
/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500
parâmetros de inicialização Mongos, chunkSize este é usado para especificar o tamanho do pedaço, a unidade é MB, o tamanho padrão é de 200 MB.
Passo Quatro: Configurar Sharding
Em seguida, usamos MongoDB Shell Inicie a sessão no mongos, adicionar nós Shard
[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000 MongoDB shell version: 2.0.7 connecting to: 127.0.0.1:40000/admin mongos> db.runCommand({ addshard:"localhost:27020" }) { "shardAdded" : "shard0000", "ok" : 1 } ptptpt mongos> db.runCommand({ addshard:"localhost:27029" }) { "shardAdded" : "shard0009", "ok" : 1 } mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库 { "ok" : 1 } mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}}) { "collectionsharded" : "test.log", "ok" : 1 }
Quinto passo: No código de programa sem muita mudança, uma ligação directa de acordo com o banco de dados mongo comum como a interface de acesso de banco de dados para conectar 40.000