banco de dados MongoDB
A, MongoDB saber
MongoDB é uma fonte C desenvolvimento da linguagem aberta, multi-plataforma, banco de dados NoSQL orientado a documentos
O que é NoSQL?
Os dados não são armazenados no modelo relacional é baseado, não exige um formato de tabela fixa. banco de dados não-relacional como um banco de dados relacional suplemento, na era do desenvolvimento cada vez mais rápida do site desempenha um eficiente e de alto desempenho, NoSQL para armazenar dados muito grande escala
Comumente usado banco de dados não-relacional: MongoDB, Memcache Redis, HBase
As vantagens de bancos de dados não relacionais: 1. A demanda em alta simultâneo de leitura e banco de dados de gravação
2. Alta eficiência do armazenamento de dados em massa e acesso
Alta escalabilidade e alta disponibilidade requisitos 3. Banco de Dados
definição MangoDB
MongoDB é um produto com função de entre bases de dados relacionais e bases de dados não relacionais, funções de base de dados não relacionais entre o mais rico e mais, como uma base de dados relacional
Ele fornece aplicativos escaláveis da Web para soluções de armazenamento de dados de alto desempenho, aplicados principalmente para o cache de dados, cena local de armazenamento distribuído e dados de formato de documento JSON para grandes quantidades de dados , alta concorrência , baixos transacionais aplicações de Internet
vantagens e desvantagens MongoDB
Vantagens: Flexibilidade altamente expansível, de computação distribuído, de baixo custo, arquitectura, os dados de semi-estruturado, a relação não complicada
MongoDB oferece replicação, alta disponibilidade e fragmentação automática, apoiar uma rica expressões de consulta, suporta uma variedade de linguagens de programação, tais como Ruby, Python, Java, C ++, PHP, C #, etc.
Contras: não padronizado, função de pesquisa limitada
MongoDB é executado dois conceitos : coleta (coleta) e documentos (documentos)
MongoDB conceito mesa substituído a recolha de dados de conceito em um documento
Dois, MongoDB para Linux instalação
1. Baixe e instale MongoDB dependências do pacote de instalação
yum -y install openssl-devel
tar zxf mongodb-linux-x86_64-rhel62-3.2.10.tgz
mv mongodb-linux-x86_64-rhel62-3.2.10 / usr / / mongodb locais
2. Criar do MongoDB diretório de armazenamento de dados / Dados / mongodb1 , diretório log / dados / registros , arquivos de log e adicionar autoridade
Note-se que alguns dos métodos mais UNIX-like sistemas operacionais, incluindo Linux e OS X, prevê limite básico para cada processo e cada usuário usando tópicos, arquivos e conexões de rede e outros recursos do sistema:
Mkdir -p / dados / mongodb1
Mkdir -p / dados / logs / mongodb
tocar /data/logs/mongodb/mongodb1.log
chmod -R 777 /data/logs/mongodb/mongodb1.log
Quando MongDB frequentemente visitados no estado, se o shell para iniciar o processo ocupada recurso é muito baixo, isso causará um erro não pode conectar MongoDB, você precisa conjunto
sistemas Linux processar um número máximo padrão de arquivos abertos é 1024 vezes, valores padrão para esses limites são muito pequenas, que podem causar uma série de problemas durante a operação normal MongoDB
-u de 25.000 ulimit (número único processo de arquivos abertos)
-n de 25.000 ulimit (processo aberto / rosca)
3. Criar arquivo de configuração MangoDB e definir os parâmetros de arranque
vim /usr/local/mongodb/bin/mongodb1.conf
port=27017 \\默认服务端口号
dbpath=/data/mongodb1 \\数据存储目录
logpath=/data/logs/mongodb/mongodb1.log \\日志文件
logappend=true \\使用追加的方式写日志
fork=true \\后台运行
maxConns=5000 \\最大同时连接数,默认是2000
storageEngine=mmapv1 \\指定存储引擎为内存映射文件
4. Defina os parâmetros do kernel
echo "0"> / proc / sys / vm / zone_reclaim_mode
sysctl -w vm.zone_reclaim_mode = 0
echo "nunca"> / sys / kernel / mm / transparent_hugepage / habilitado
echo "nunca"> / sys / kernel / mm / transparent_hugepage / defrag
5. iniciar e parar MongoDB
启动: / usr / local / mongodb / bin / mongod --config /usr/local/mongodb/bin/mongodb1.conf
停止: / usr / local / mongodb / bin / mongod --config /usr/local/mongodb/bin/mongodb1.conf --shutdown
Múltiplas instâncias de MongoDB
MongoDB para criar um novo diretório de armazenamento de dados / Dados / mongodb2 , arquivos de log e permissões add
Mkdir / dados / mongodb2
tocar /data/logs/mongodb/mongodb2.log
chmod -R 777 /data/logs/mongodb/mongodb2.log
No diretório de armazenamento do arquivo de configuração principal para criar novos arquivos de configuração primárias, comparando a primeira instância dos seguintes parâmetros podem ser modificados arquivo de configuração (você precisa criar várias instâncias de cópia de editar vários nomes diferentes)
vim /usr/local/mongodb/bin/mongodb2.conf
porto = 27018
dbpath = / dados / mongodb2
logpath = / dados / logs / mongodb / mongodb2.log
Inicie a instância (iniciar da mesma forma com a primeira instância)
Três, base MongoDB
estrutura de armazenamento MongoDB
estrutura lógica composta principalmente de um (Collection) recolha , o documento (o documento) , banco de dados (banco de dados) composto de três partes, que é o conceito central do documento, que é a unidade de armazenamento MongoDB armazenamento lógico menor
★ coleção:
nome legal da coleção: um nome de coleção não pode ser uma string vazia ""
2. O nome da coleção não pode conter o \ 0 caracteres (caractere nulo), esse personagem representa o fim do nome da coleção.
3. O nome da coleção não pode ser "sistema." No início, que é reservado para o sistema de coleta do prefixo.
4. nome da coleção criada pelo usuário não pode conter caracteres reservados, alguns motoristas não suporte incluídos no conjunto estavam lá, porque esta é a coleção contém algum personagem gerado pelo sistema, a menos que queira acessar esta coleção criada pelo sistema, ou mil $ milhões não vai aparecer no nome
★ documento:
Documento é um conjunto de chaves (chave de valor) par (isto é BSON), não necessidade documento MongoDB definir o mesmo campo, e o mesmo tipo de campo de dados necessidade não ser idênticas, o que é muito diferente a partir de uma base de dados relacional, igualmente característica muito proeminente MongoDB
Note-se que: 1. O documento de pares de chave / valor são ordenados
2. O valor do documento pode ser não só o interior da string entre aspas duplas, ele também pode ser de vários outros tipos de dados (ou mesmo toda incorporado o documento)
3.MongoDB para distinguir os tipos e sensível
documento 4.MongoDB não pode ter chaves duplicadas
Os documentos chaves são strings , com poucas exceções, a chave pode ser qualquer caracteres UTF-8
estrutura de armazenamento físico:
estrutura de armazenamento de dados: arquivo namespace (.NS final do arquivo) arquivo de dados (.0,1,2,3 ...)
Log estrutura de armazenamento: arquivos de log de jornal: para a proteção de recuperação de falhas MongDB
operação de cópia oplog arquivo de log: só aparece após a abertura principal da cópia
log de consultas lentas: pode precisar abrir depois
★ banco de dados:
Inicial banco de dados embutido: admin: admin banco de dados Main Library armazenar informações de conta.
local: banco de dados local nunca é para ser copiado a partir do nó, ele pode ser usado para armazenar qualquer conjunto de servidores está limitado a um único local,
config: ambiente de cluster de banco de dados de configuração para a fragmentação, armazenar metadados pedaços de informação relacionados.
teste: MongoDB padrão criou uma biblioteca de teste
Tipo de dados MongoDB
Cordas : dados de cadeia armazenada tipo de dados comum, no MongoDB, string UTF-8 codificado é válido
Integer : valor inteiro para armazenar um valor, de acordo com o servidor você está empregado, pode ser dividido em 32-bit ou um 64 bits
booleana : valor booleano, para armazenar o booleano (verdadeira / falsa)
dupla : dupla precisão valor de ponto flutuante, para o armazenamento de valores de ponto flutuante
Min / Max Chaves : um valor mínimo e o BSON JSON (binário) elemento e valores máximos da proporção relativa
série : matriz ou lista para um ou mais valores são armazenados como uma chave
timestamp : timestamp, modificar ou adicionar registros documentar um momento específico
de objeto : documentos incorporados para
nulo : Cria um valor vazio
Símbolo : símbolos, substancialmente idênticos aos do tipo string tipo de dados, mas a diferença é, é geralmente usado com tipos especiais de símbolos da linguagem
a data : data e hora, o formato de UNIX para armazenar a data ou a hora atual. Você pode especificar o seu próprio data e hora: criar um objeto Date, passando informações de data
Objeto ID : Object ID, utilizado para criar o documento ID
Binary Data : dados binários para armazenar dados binários
Código : Digite o código para o documento código JavaScript é armazenado
expressão regular: Tipos de expressão regular. Usado para armazenar expressões regulares
operacional subjacente do MongoDB
Log local: / usr / local / MongoDB / bin / mongo (27017 padrão porta login, teste de banco de dados, nenhuma senha de login padrão)
Telnet: MongoDB: // Zhangsan: [email protected]: 27017
Ver o banco de dados:> Mostrar dbs
Exibe o usuário:> Mostrar os Usuários
bases de dados de comutação:> nome do banco de uso (se o banco de dados não existir, crie um banco de dados, ou mude para o banco de dados especificado)
exibição de comando operação de banco de dados:> db.help ()
Ver a coleção:> Mostrar as coleções
Exibindo comando operação de coleta:> . Db nome da coleção .help ()
Encontrar Documentação:> nome da coleção db .find ().
Criar uma coleção:> db.createCollection (nome, Opções)
Opções parâmetros:
tampado (booleano) :( opcional) Se for verdade, então, criar um conjunto de, conjunto fixo fixo é uma coleção com um tamanho fixo, quando se atinge o valor máximo, ele substituirá automaticamente os documentos mais antigos, quando o valor é verdadeiro deve ser o tamanho parâmetro especificado
autoIndexId (Boolean) :( opcional) como verdadeiro, o índice é criado o padrão de campo automaticamente _id false
tamanho (valor) :( opcional) especificar um conjunto de máximo fixado (em bytes metro), se o tampado é verdade, mas também precisa especificar o campo
max (valor) :( opcional) Especifica o número máximo de documentos contidos no conjunto de fixo
Criar um conjunto fixo de teste, todo o espaço de recolha 6142800 KB, o número máximo de documentos para 10000
> Db.createCollection ( "test", {tampado: true, autoIndexId: true, size: 6142800, max: 10000})
A coleção é definido para se tornar um conjunto fixo de coleta de dados não podem ser modificados fixo , apenas para descobrir - suprimido - e, em seguida, inserir , criar uma coleção que é definido quando o parâmetro tampado para true
Inserir um documento para criar automaticamente uma coleção:
> Db.test.insert ({ "name": "Zhangsan"}
Criar um documento:
gerar automaticamente o _id:> . DB collectionname .Colocar ({ "chave": " valor"})
Você pode especificar manualmente _id:> Db nome da coleção .Save (documento).
Quatro, MongoDB manutenção de rotina
MongoDB Backup and Recovery Manager
Dados Ferramenta de Exportação: mongoexport
MongoDB é um instrumento de coleta de mongoexport podem ser exportados como arquivos JSON ou CSV
mongoexport -d dbname -c collectionname -o arquivo --type json / CSV -f campo
Importação de dados da ferramenta: mongoimport
mongoimport -d nome_do_bd -c collectionname --file nome --type json / csv -f campo
-d: especifica o nome da base de dados
-c Especifica o nome da coleção de coleção
-f Especifica que colunas para exportação
-o: Especifica o nome do arquivo que você deseja exportar
q: Especifica os critérios de filtragem para os dados de exportação
Nota: Na importação MySQL tempo , antes de exportação MySQL quando o banco de dados add opções, importação quando você não pode criar
backup de banco de dados MongoDB e recuperação: mongodump
Backup: mongodump dbhost -d dbname -h -o dir
Recuperação: mongorestore dbhost -d dbname -h dir -dir
-h: MongoDB endereço IP do servidor está localizado (especificar o número da porta pode ser adicionado mais tarde)
-d Especifica o backup da instância de banco de dados
-o: especifica a localização da base de dados armazenada no backup (o diretório a ser criado com antecedência, diretório de teste os dados de backup são armazenados automaticamente criado no diretório)
Copie o banco de dados MongoDB banco de dados
> Db.copyDatabase ( "db1", "DB2", "localhost")
Um conjunto de clones (a partir da cópia remoto para o conjunto actual de exemplos exemplo MongoDB MongoDB, o mesmo nome é conjunto)
> Db.runCommand ({ "cloneCollection": "abc.test", "de": "192.168.100.7:27017"})
Gestão de Segurança MongoDB
Restrições de escuta endereço IP ea porta (definido no arquivo de configuração)
vim /usr/local/mongodb/conf/mongodb.conf
= 192.168.0.111 bind_ip \\ só permitir o acesso a este endereço de IP
= 27017 Porto \\ só permitem o acesso ao número da porta
Autorizado a iniciar o login userAdminAnyDatabase (MongoDB senha primeiro padrão não é necessário, nem qualquer usuário)
1. Faça o login no banco de dados, mude para o administrador da biblioteca
> Uso administrador
2. Crie um usuário administrativo
> Db.createUser ({user: "admin", pwd: "123456", os papéis: [{papel: "userAdminAnyDatabase", db: "admin"}]})
papéis: as funções de utilizador especificadas , pode ser uma matriz vazia para a nova função de utilizador conjunto vazio, em papéis no campo, pode especificar o papel embutida e funções definidas pelo utilizador
Funções de (built-in parte):
papéis de banco de dados do usuário: ler, READWRITE;
funções de administração de banco de dados: dbadmin, dbowner, useradmin
funções de gerenciamento de cluster: clusterAdmin, clusterManager, clusterMonitor, hostManager
backup e papel recuperação: backup, restauração
todas as funções de banco de dados: readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase
função de superusuário: raiz
suplementos: existem vários papel direto ou indireto fornece acesso de usuário do sistema super (dbowner, useradmin, userAdminAnyDatabase)
papéis internos: __ sistema
dbadmin : permite aos usuários executar as funções de gerenciamento de banco de dados especificados, como indexação para criar, apagar, visualizar estatísticas ou system.profile acesso
useradmin : permitir que um usuário de escrita para system.users, você pode encontrar especificar o banco de dados para criar, excluir e gerenciar usuários
clusterAdmin : admin só está disponível na base de dados, o usuário dá toda função de correlação privilégios fragmentação e conjuntos de replicações
3. Comece a autenticação de usuário
/ Usr / local / mongodb / bin / mongod -f /usr/local/mongodb/conf/mongodb.conf --auth
Ou editar o arquivo de configuração: vim /usr/local/mongodb/conf/mongodb.conf
Adicionar auth = true
Ver usuário existente:> Mostrar os Utilizadores ou> db.system.users.find ()
4. MongoDB Log, usando o login de administrador biblioteca de verificação do usuário administrador
> Uso administrador
> Db.auth ( "admin", "123456")
Com usuário administrador administrativo para criar o nome de usuário de banco de dados e senha adicional
> Teste de uso
> Db.createUser ({user: "TestUser", pwd: "123456", os papéis: [{papel: "READWRITE", db: "teste"}]})
更新用户:> db.updateUser ( 'testuser', {pwd: "111111", os papéis: [{papel: "READWRITE", db: "teste"}]})
Excluir usuário:> db.dropUser ( "testuser")
Nota: com permissões de usuário administrativo usuário administrador pode excluir um usuário após o desembarque
Gestão de processos
Processar o ser operação de consulta realizada:> db.currentOp ()
Encerrar o processo:> db.killOp ( "shard3: 466 404 288")
Monitoramento MongoDB
1. Banco de Dados Command View
Ver base de dados informações de status exemplo:> db.serverStatus ()
Ver estatísticas de banco de dados atuais:> db.stats ()
Ver uma coleção de estatísticas:> db.users.stats ()
Ver o tamanho da coleção:> db.users.dataSize ()
2. ser monitorados (editar o arquivo de configuração) através da web: vim /usr/local/mongodb/conf/mongodb.conf
Adicionar httpinterface = true
Por 28017: http: // localhost para acesso à Web
3. ferramentas de monitoramento tripartidas: Nagios
Suplementares instalar MongoDB no Windows:
início mongo.exe
instalação do software de visualização MongoDB