Mostrando postagens com marcador Tutoriais. Mostrar todas as postagens
Mostrando postagens com marcador Tutoriais. Mostrar todas as postagens

domingo, 10 de agosto de 2014



Um operador de comparação compara duas expressões e documentos obtidas da coleção MongoDB. Neste post, vamos discutir sobre os operadores de comparação e se uso.





No MongoDB os operadores condicionais são:

(>) Maior que -> $gt

(<) Menor que -> lt$

(> =) Maior ou igual a -> $gte

(<=) Menor ou igual a -> $lte

O nome de nosso banco de dados é "myinfo 'e o nome da coleção é" testtable'. Abaixo segue nossa coleção (Collection):

{ "_id" : ObjectId("528f34950fe5e6467e58ae77"), "user_id" : "user1", "password" : "1a2b3c", "sex" : "Male", "age" : 17, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "CONSULTANT", "interest" : "MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "community_moder_id" : [ "MR. Alex", "MR. Dang", "MR Haris" ], "community_members" : [ 700, 200, 1500 ], "friends" : { "valued_friends_id" : [ "kumar", "harry", "anand" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f34fa0fe5e6467e58ae78"), "user_id" : "user2", "password" : "11aa1a", "sex" : "Male", "age" : 24, "date_of_join" : "17/10/2009", "education" : "M.B.A.", "profession" : "MARKETING", "interest" : " MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "co mmunity_moder_id" : [ "MR. Roy", "MR. Das", "MR Doglus" ], "community_members" : [ 500, 300, 1400 ], "friends" : { "valued_friends_id" : [ "pal", "viki", "john" ], "ban_friends_id" : [ "jalan", "mono j", "evan" ] } } } { "_id" : ObjectId("528f35450fe5e6467e58ae79"), "user_id" : "user3", "password" : "b1c1d1", "sex" : "Female", "age" : 19, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "IT COR.", "interest" : "AR T", "extra" : { "community_name" : [ "MODERN ART", "CLASSICAL ART", "WESTERN ART" ], "community_mo der_id" : [ "MR. Rifel", "MR. Sarma", "MR Bhatia" ], "community_members" : [ 5000, 2000, 1500 ], "friends" : { "valued_friends_id" : [ "philip", "anant", "alan" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f35860fe5e6467e58ae7a"), "user_id" : "user4", "password" : "abczyx", "sex" : "Female", "age" : 22, "date_of_join" : "17/8/2009", "education" : "M.B.B.S.", "profession" : "DOCTOR", "interest" : "SPORTS", "extra" : { "community_name" : [ "ATHELATIC", "GAMES FAN GYES", "FAVOURIT GAMES" ], "community_moder_id" : [ "MR. Paul", "MR. Das", "MR Doglus" ], "community_members" : [ 2500, 2200, 3500 ], "friends" : { "valued_friends_id" : [ "vinod", "viki", "john" ], "ban_friends_id" : [ "jalan", "monoj", "evan" ] } } }

MongoDB (>) maior que - Operador - $gt

Se quisermos buscar documentos da coleção "testtable", que contém o valor de "age" é maior do que 22, o seguinte comando MongoDB pode ser usado:

>db.testtable.find({age : {$gt : 22}}).pretty();

db.find () é compando que exibe os documentos em um formato não estruturado, mas para exibir os resultados de uma forma formatado, basta adicionar o comando pretty().

Equivalente ao comando SQL

SELECT * FROM testtable WHERE age >22;

Resultado 

{ "_id" : ObjectId("528f34fa0fe5e6467e58ae78"), "user_id" : "user2", "password" : "11aa1a", "sex" : "Male", "age" : 24, "date_of_join" : "17/10/2009", "education" : "M.B.A.", "profession" : "MARKETING", "interest" : " MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "co mmunity_moder_id" : [ "MR. Roy", "MR. Das", "MR Doglus" ], "community_members" : [ 500, 300, 1400 ], "friends" : { "valued_friends_id" : [ "pal", "viki", "john" ], "ban_friends_id" : [ "jalan", "mono j", "evan" ] } } }

MongoDB (> =) maior ou igual - Operador  - $gte

Se quisermos buscar documentos da coleção "testtable", que contém o valor de "age" maior ou igual a 22, o seguinte comando MongoDB pode ser usado:

>db.testtable.find({age : {$gte : 22}}).pretty();

db.find () é o comando que exibe os documentos em um formato não estruturado, mas para exibir os resultados de uma forma formatado, basta adicionar o comando pretty().

Equivalente ao comando SQL

SELECT * FROM testtable WHERE age >=22;

Resultado 

{ "_id" : ObjectId("528f34fa0fe5e6467e58ae78"), "user_id" : "user2", "password" : "11aa1a", "sex" : "Male", "age" : 24, "date_of_join" : "17/10/2009", "education" : "M.B.A.", "profession" : "MARKETING", "interest" : " MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "co mmunity_moder_id" : [ "MR. Roy", "MR. Das", "MR Doglus" ], "community_members" : [ 500, 300, 1400 ], "friends" : { "valued_friends_id" : [ "pal", "viki", "john" ], "ban_friends_id" : [ "jalan", "mono j", "evan" ] } } } { "_id" : ObjectId("528f35860fe5e6467e58ae7a"), "user_id" : "user4", "password" : "abczyx", "sex" : "Female", "age" : 22, "date_of_join" : "17/8/2009", "education" : "M.B.B.S.", "profession" : "DOCTOR", "interest" : "SPORTS", "extra" : { "community_name" : [ "ATHELATIC", "GAMES FAN GYES", "FAVOURIT GAMES" ], "community_moder_id" : [ "MR. Paul", "MR. Das", "MR Doglus" ], "community_members" : [ 2500, 2200, 3500 ], "friends" : { "valued_friends_id" : [ "vinod", "viki", "john" ], "ban_friends_id" : [ "jalan", "monoj", "evan" ] } } }

MongoDB (<) menor que - Operador - $lt

Se quisermos buscar documentos da coleção "testtable", que contém o valor de "age" inferior a 19, o seguinte comando MongoDB pode ser usado:

>db.testtable.find({age : {$lt : 19}}).pretty();

Resultado
{ "_id" : ObjectId("528f34950fe5e6467e58ae77"), "user_id" : "user1", "password" : "1a2b3c", "sex" : "Male", "age" : 17, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "CONSULTANT", "interest" : "MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "community_moder_id" : [ "MR. Alex", "MR. Dang", "MR Haris" ], "community_members" : [ 700, 200, 1500 ], "friends" : { "valued_friends_id" : [ "kumar", "harry", "anand" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } }

MongoDB (<=) menor ou igual ao operador - $lte

Se quisermos buscar documentos na coleção "testtable" os quais contém o valor de "age" é menor ou igual a 19, o comando seguinte mongodb pode ser usado:

>db.testtable.find({age : {$lte : 19}}).pretty();

db.find () é o comando que exibe os documentos em um formato não estruturado, mas para exibir os resultados de uma forma formatado, basta adicionar o comando pretty().

Equivalente ao comando SQL
SELECT * FROM testtable WHERE age <=19;

Resultado
{ "_id" : ObjectId("528f34950fe5e6467e58ae77"), "user_id" : "user1", "password" : "1a2b3c", "sex" : "Male", "age" : 17, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "CONSULTANT", "interest" : "MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "community_moder_id" : [ "MR. Alex", "MR. Dang", "MR Haris" ], "community_members" : [ 700, 200, 1500 ], "friends" : { "valued_friends_id" : [ "kumar", "harry", "anand" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f35450fe5e6467e58ae79"), "user_id" : "user3", "password" : "b1c1d1", "sex" : "Female", "age" : 19, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "IT COR.", "interest" : "AR T", "extra" : { "community_name" : [ "MODERN ART", "CLASSICAL ART", "WESTERN ART" ], "community_mo der_id" : [ "MR. Rifel", "MR. Sarma", "MR Bhatia" ], "community_members" : [ 5000, 2000, 1500 ], "friends" : { "valued_friends_id" : [ "philip", "anant", "alan" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } }

Consulta MongoDB utilizando (<) e (>)  operator - $lt e $gt 

Se quisermos buscar documentos do coleção "testtable", que contém o valor de "age" é maior que 17 e menor que 24, o seguinte comando MongoDB pode ser usado:

>db.testtable.find({age : {$lt :24, $gt : 17}}).pretty();

db.find () é o comando que exibe os documentos em um formato não estruturado, mas para exibir os resultados de uma forma formatado, basta adicionar o comando pretty().

Equivalente ao comando SQL

SELECT * FROM testtable WHERE age <24 and age>17;

Resultado
{ "_id" : ObjectId("528f35450fe5e6467e58ae79"), "user_id" : "user3", "password" : "b1c1d1", "sex" : "Female", "age" : 19, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "IT COR.", "interest" : "AR T", "extra" : { "community_name" : [ "MODERN ART", "CLASSICAL ART", "WESTERN ART" ], "community_mo der_id" : [ "MR. Rifel", "MR. Sarma", "MR Bhatia" ], "community_members" : [ 5000, 2000, 1500 ], "friends" : { "valued_friends_id" : [ "philip", "anant", "alan" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f35860fe5e6467e58ae7a"), "user_id" : "user4", "password" : "abczyx", "sex" : "Female", "age" : 22, "date_of_join" : "17/8/2009", "education" : "M.B.B.S.", "profession" : "DOCTOR", "interest" : "SPORTS", "extra" : { "community_name" : [ "ATHELATIC", "GAMES FAN GYES", "FAVOURIT GAMES" ], "community_moder_id" : [ "MR. Paul", "MR. Das", "MR Doglus" ], "community_members" : [ 2500, 2200, 3500 ], "friends" : { "valued_friends_id" : [ "vinod", "viki", "john" ], "ban_friends_id" : [ "jalan", "monoj", "evan" ] } } }

terça-feira, 5 de agosto de 2014

Neste tutorial, você vai aprender a implantar uma réplica MongoDB definida para VMs CentOS no Windows Azure e acessá-lo de fora. A seguir estão as tarefas de conseguir isso:

Assine recurso de visualização "máquinas virtuais e redes virtuais". Veja opções de implantação. 
1) Configurar Afinidade Grupo 
2) Criar e configurar as máquinas virtuais 
3) Instalar e executar o MongoDB 
4) Configure o conjunto de réplica

Configurar Afinidade Grupo

O grupo de afinidade precisa ser configurado a partir do portal antigo

1. No novo portal de visualização de Gerenciamento Azure, clique no seu nome de usuário no canto superior direito da tela, em seguida, "Portal Anterior" para mudar para o portal antigo.
2.Uma vez no portal antigo, clique em "Serviços Hospedados, Contas de Armazenamento e CDN"
3.Selecione "Grupos de Afinidade" e depois "Novo Grupo de Afinidade"
4.Na caixa de diálogo "Criar um novo grupo de afinidade", digite um nome de grupo de afinidade, como "mongoaffinitygroup" e escolha um local. Escolha um dos centros de dados Azure mais recentes, como “West US,” “East US” ou “West Europe.”.

Criar e configurar as máquinas virtuais 

Para criar um conjunto de réplicas MongoDB com 3 nós, você irá criar 3 Instances VMs. Para esta etapa, faça o login para o novo portal de visualização, ou a partir do portal antigo, clique em "Visite o Portal Anterior" na parte inferior da página

Criando as Instances

Instance 1

1.No portal, clique em New->Virtual Machine->From Gallery

2.Na página Seleção de OS das VMs, escolha "OpenLogic CentOS 6.2" e clique na próxima seta para continuar

3.Na página de configuração da VM, especifique valores para os parâmetros


- Virtual Machine Name - "mongodbrs1" 
- Novo nome de usuário - ". Mongouser" Este usuário será adicionado ao "sudoers" arquivo de lista 
- Nova caixa de Senha - digite uma senha forte que está de acordo com as especificações do Azure 
- Digite novamente a senha para confirmar 
- Tamanho - Escolha o tamanho apropriado da lista drop-down. Para qualquer coisa, mas instâncias de 
   teste pequenos, escolha um tamanho maior do que médio 
- Deixe "Upload SSH key for Authentication" desmarcada

Clique na seta Next para continuar


4.Na página da VM, especifique valores para os parâmetros necessários


- Selecione "Standalone Virtual Machine" 
- DNS - um prefixo DNS válido por exemplo, "mongodbrs" 
- Storage Account box – escolha a opção "Use Automatically Generated Storage Account" 
- Na caixa "Region/Affinity Group/Virtual Network", selecione o grupo de afinidade criado anteriormente 
  "mongoaffinitygroup"


Clique na seta Next para continuar

5. Na página Opções da VM selecionar "None for Availability Set"
6.Clique no check box para criar a instância VM

Instance 2

Processo semelhante a criação da primeira instância.


1. No portal, clique em  click New->Virtual Machine->From Gallery
2. Na página Seleção de OS para a VM, escolha "OpenLogic CentOS 6.2" e clique em NEXT para continuar 
3. Na página de configuração da VM, especifique valores para os parâmetros 

- Virtual Machine Name - "mongodbrs2" 
- Novo nome de usuário - ". Mongouser" Este usuário será adicionado ao "sudoers" arquivo de lista 
- Nova caixa de Senha - digite uma senha forte que está de acordo com as especificações do Azure 
- Digite novamente a senha para confirmar 
- Tamanho - Escolha o mesmo tamanho de uma instância 
- Deixe "cUpload SSH key for Authentication" desmarcada 

Clique em NEXT para continuar 

4. Na página Modo de VM, especifique valores para os parâmetros necessários 

- Selecione "Connect to Existing Virtual Machine" 
- No menu suspenso escolher o host criado no exemplo 1, neste caso, "mongodbrs1" 
- Conta caixa de armazenamento - escolha a opção "Use Automatically Generated Storage Account" 
- Em "Region/Affinity Group/Virtual Network" deve estar automaticamente ajustado para 
  "mongoaffinitygroup"

Clique em NEXT para continuar 



5.Na página Opções da VM selecionar "None for Availability Set"
6.Marque o box para criar a VM Instance

Instance 3

Processo semelhante para a criação de instância 2., apenas escolha "mongodbrs3" para ser o nome de máquina virtual no passo 3.

Configurando Endpoints
 
Uma vez que as máquinas virtuais estão conectadas você precisa configurar os parâmetros para: 

- Permitir conexão remota 
- Permitir tráfego MongoDB

Instance 1

1. No portal de gerenciamento, clique em máquinas virtuais e clique no nome da instância 1, "mongodbrs1" 2. Agora clique em endpoints 
3.O endpoint ssh deve ser criado automaticamente. Certifique-se que este endpoint esteja definido da seguinte forma:  

- Protocolo - tcp 
- Public Port - 22 
- Porto privado - 22 
- Balanceamento de carga - No

4.Criar um novo Endpoint para MongoDB, clicando em "Add Endpoint" na parte inferior da tela
5.Certifique-se que a opção  "Add Endpoint" está selecionado e clique na seta para ir para a próxima tela


6. Especifique os delathes para o endpoint como abaixo:

- Name : MongoDB-Port
- Protocol : TCP
- Public Port : 27018
- Private Port : 27018

Clique no check box para criar endpoint

A instância deve ter agora endpointss, 1 para SSH e 1 para MongoDB


Precisamos configurar os Endpoints, por exemplo 2 semelhante ao exemplo 1: 

1.No portal de gerenciamento, clique em "virtual machines" e clique no nome da instância 2 
2.Agora clique em "endpoints" 
3.O endpoint ssh deve ser criado automaticamente. Certifique-se de que: 

- Name – SSH
- Protocol – TCP
- Private Port – 22
-  Load Balanced – No

4.Agora clique em Edit Endpoint na parte inferior da tela e defina "Public Port" a 23. Clique no botão "check mark" para atualizar 
5.Criar um novo Endpoint para MongoDB, clicando em "Add Endpoint" na parte inferior da tela 
6.Certifique-se que "Add Endpoint" está selecionado e clique na seta para a direita para ir para a próxima tela
7.Especifique os detalhes do Endpoint como a seguir:

-Name : MongoDB-Port
-Protocol : TCP
-Public Port : 27019
-Private Port : 27019
-Clique em "check mark" para criar o endpoint

A instância deve ter agora dois Endpoints, 1 para SSH e 1 para MongoDB

Instance 3

Criar endpoints para o exemplo 3 semelhante ao exemplo 2, com as seguintes alterações: 

- Na etapa 4, definir a porta pública para 24 
- No passo 7, estabelecer as portas públicas e privadas para ser 27020

A instância deve ter agora dois Endpoints, 1 para SSH e 1 para MongoDB


Update de SO

Utilize este passo opcional para atualizar o sistema operacional em cada uma de suas instâncias VM. Uma vez que os parâmetros da máquina ter sido configurada acima, você precisa se logar em máquinas para atualizá-los. Mais informações sobre este podem ser encontradas em Como Fazer logon em uma máquina virtual rodando Linux.

Use o nome de usuário e senha que você usou ao criar as instâncias de máquinas virtuais.

Uma vez que você estiver conectado à máquina, atualize o sistema operacional executando: sudo yum update e seguir as instruções. Isso pode levar algum tempo.

Ao conectar a instâncias 2 e 3, lembre-se de usar as portas 23 e 24, e não a porta ssh padrão de 22.


Set Up Disks

Uma vez que as instâncias são atualizadas, então você pode anexar um disco de dados para cada uma das instâncias. Os discos de dados irá armazenar os dados reais MongoDB como parte de - dbpath. Mais informações sobre discos de dados Azure pode ser encontrada em Conceitos disco de dados.

Para configurar o disco de dados siga os passos descritos abaixo para cada uma das instâncias que você criou:
1.Anexar um disco vazio de pelo menos 10 GB para a instância, conforme descrito em Como: Anexar um disco vazio <http://www.windowsazure.com/en-us/manage/windows/how-to-guides/attach-a disco / # attachempty>.
2.Inicializar o disco de dados, seguindo os passos descritos em Como inicializar um novo disco de dados em Linux.
3.Após montado o disco, criar um diretório de dados por:
   - Faça logon na instância
   - Em seguida, execute sudo chown `id-u`/mnt/datadrive / para fazer a mongouser o proprietário do
     diretório de dados
   - Execute o seguinte comando: mkdir -p /mnt/datadrive/data

Instalar e executar o MongoDB

Como parte desta etapa, você irá usar o MongoDB oficial, Inc. que fornece pacotes para instalar, configurar e executar MongoDB como um serviço usando YUM. Você deseja instalar como um serviço uma vez que este seria garantir que mongod é iniciado na reinicialização da máquina também. Para mais informações consulte: manual: Instalar MongoDB no RedHat Enterprise, CentOS, Fedora ou </ tutorial / install-mongodb-on-redhat-centos-ou-fedora-linux />.

Instalar o MongoDB

Configurar o MongoDB

Os pacotes instalados no passo anterior configuraram o MongoDB usando o arquivo /etc/mongod.conf em conjunto com o script de controle. Você pode encontrar o script de inicialização em /etc/rc.d /init.d / mongod. Como parte deste passo, você irá editar o arquivo mongod.conf para definir os parâmetros apropriados. Se os parâmetros são comentados, certifique-se de descimentá-los.

Instance 1

1.Conecte-se à instância usando ssh ou PuTTY
2.Como sudo, edite o /etc/mongod.conf para definir os seguintes parâmetros:
port = 27018
dbpath = /mnt/datadrive/data
logpath = /mnt/datadrive/mongod.log
replSet = mongors
3.Salve o arquivo de configuração

Instance 2

1.Conecte-se à instância usando ssh ou PuTTY, lembrando a porta SSH para este nó foi alterada a partir do padrão de 22
2.Como sudo, edite o /etc/mongod.conf para definir os seguintes parâmetros:
port = 27019
dbpath = /mnt/datadrive/data
logpath = /mnt/datadrive/mongod.log
replSet = mongors
3.Salve o arquivo de configuração

Instance 3

1.Conecte-se à instância usando ssh ou PuTTY, lembrando a porta SSH para este nó foi alterada a partir do padrão de 22
2.Como sudo, edite o /etc/mongod.conf para definir os seguintes parâmetros:

port = 27020
dbpath = /mnt/datadrive/data
logpath = /mnt/datadrive/mongod.log
replSet = mongors
3.Salve o arquivo de configuração

Inicie o MongoDB

Depois que os arquivos de configuração foram editados, iniciar o processo de banco de dado "mongod" em cada instância por:

1.Faça logon na instância
2.Execute o seguinte comando para iniciar o processo:
mongod --config /etc/mongod.conf
Isto deve iniciar o processo de mongod

Verifique se o mongod iníciou, pelo arquivo de log usando o comando:
tail --f /mnt/datadrive/mongod.log
A mensagem "waiting for connectionss" no arquivo de log indica que o mongod está instalado e funcionando e esperando por conexões de client. Isso pode demorar um pouco como mongod pré-aloca seus arquivos de diário (Journal)

Configure o conjunto de réplica

Neste momento, você deve ter o mongod executando em todos os 3 nós de suas instâncias. Agora você pode configurar as 3 instâncias como um conjunto de réplicas através da ligação a um dos 3 de dentro ou de fora Azure.

Conecte-se ao processo de execução mongod usando o mongo shell:

1.Se estiver conectado à instância VM digite o seguinte comando, onde a porta é 27018, para instance 1, 27019, para a instance 2 e 27020, para a instance 3:
mongo --port <port number>
2.Se a conexão com o processo de mongod em Azure é a partir de sua máquina local use o seguinte comando:
mongo --host mongodbrs.cloudapp.net --port <port number>
3.No shell mongo digite o seguinte:
> conf = {
   _id : “mongors”,
   members : [
     {_id:0, host:”mongodbrs.cloudapp.net:27018"},
     {_id:1, host:”mongodbrs.cloudapp.net:27019"},
     {_id:2, host:”mongodbrs.cloudapp.net:27020"}]}
> rs.initiate(conf)

4.Isto irá iniciar a inicialização da réplica MongoDB
5.Digite o comando rs.status () para verificar o status do conjunto de réplicas. Após a inicialização bem-sucedida, você deve ver uma das três instances, sendo o "principal" do conjunto e os outros 2 sendo as "Secundárias"

Você já iniciou com sucesso o conjunto de réplicas

Resumo

Neste tutorial você aprendeu como criar um conjunto de máquinas virtuais CentOS em Windows Azure, implantar MongoDB para elas e criar um conjunto de réplicas delas. Você pode acessar este conjunto de qualquer lugar usando a string de conexão
mongodb://mongodbrs.cloudapp.net:27018, .cloudapp.net:27019, .cloudapp.net:27020/?replicaSet=mongors"
Fonte MongoDB


quinta-feira, 29 de maio de 2014

mongodb-hadoop-connector


MongoDB e Hadoop são uma combinação poderosa e pode ser usado em conjunto para fornecer análises complexas e processamento de dados armazenados no MongoDB. O guia a seguir mostra como você pode começar a trabalhar com o MongoDB Conector para Hadoop. Uma vez que você se familiarizar com o conector, você pode usá-lo para puxar seus dados MongoDB nos Jobs do Hadoop Map-Reduce, processar os dados e retornar resultados para uma coleção MongoDB.


Para iniciar, precisamos ver alguns prerequisitos básicos :

mongo_mem-monthPrimeiro uma pergunta simples a todos usuários de MongoDB: "Vocês conseguem me dizer o quanto de memória cada coleção (Collection) está consumindo?" Como já era esperado, a maioria das respostas será "Não" e foi por isso que a equipe de engenharia da Wish, desenvolveu o MongoMem que permite aos desenvolvedores do MongoDB localizar com precisão as coleções que necessitam uma otimização de memória em caráter de urgência em vez de ficar procurando os problemas baseados apenas na intuição. De acordo com a visão da equipe da Wish, a necessidade do MongoMem era clara.



"Antigamente usávamos muito mais memoria do que realmente deveria usar, estávamos correndo as cegas para decidir onde deveria ser otimizado. Depois de várias otimizações frustradas, as quais não fizeram diferença alguma, nós decidimos que realmente necessitávamos de melhores informações e assim o MongoMem nasceu." 


Uma visão geral da equipe da Wish entra em detalhes sobre como funciona o MongoMem onde chamadas mincore e o comando collStats fazem a maioria do trabalho, o que você pode fazer com ele e até mesmo detalhes de alguns dos planos para o futuro da MongoMem. No geral, porém, é uma pequena ferramenta bastante simples:

Para cada coleção, temos:

  • Número de MB na memória

  • Número de MB no total

  • Percentagem da coleção que está na memória


Você pode encontrar MongoMem no GitHub (com as instruções de uso), então se você está procurando algumas dica sobre como evitar que MongoDB  exagere na memória, isso pode ser uma ferramenta muito útil para você.

Knee Curve_2NoSQL,  nos últimos anos passou de um simples zum zum zum para uma realidade atual.


Portanto, como, onde e quando devemos utiliza-lo é a grande questão para muitos gestores que ainda não conseguiram assimilar a nova tendência.


Como profundo conhecedor de ambos (NoSQL e RDBMS) irei listar abaixo um resumo de melhores práticas onde cada tipo será melhor utilizado.





python-logoPython é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Atualmente possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation. Apesar de várias partes da linguagem possuírem padrões e especificações formais, a linguagem como um todo não é formalmente especificada. O padrão de fato é a implementação CPython.


A seguir você vai aprender como instalar o Python e ativar o suporte para idioma no MongoDB .

quinta-feira, 22 de maio de 2014

Sharding


Sharding é o processo de armazenamento de registros de dados em várias máquinas e é a abordagem do MongoDB para atender as demandas de crescimento de dados. À medida que o tamanho dos dados aumenta, uma única máquina pode não ser suficiente para armazenar os dados, nem fornecer uma leitura e gravação com rendimento aceitável. O Sharding resolve o problema com escala horizontal. Com sharding, você adiciona mais máquinas para suportar o crescimento de dados e as demandas de operações de leitura e escrita.

Por que Sharding?



  • Na replicação todas as gravações são feitas no nó principal (Master)

  • Consultas sensíveis à latência continuam sendo feitas no nó principal

  • Conjunto de réplicas possuem limitações de 12 nós

  • A memória pode não ser suficiente quando o dataset ativo for muito grande

  • Disco local não possui espaço suficiente

  • A escala vertical é muito cara


Sharding no MongoDB


sharding

No diagrama acima, existem três componentes principais que são descritos abaixo:

  • Shards: Shards (fragmentos) são usados ​​para armazenar dados. Eles fornecem alta disponibilidade e consistência dos dados. Em um ambiente de produção cada fragmento é um conjunto de réplicas separado.

  • Config Servers: Config Servers armazenam os metadados do cluster. Estes dados contém um mapeamento dos dados do conjunto de cluster para os shards. O roteador consulta e usa os metadados para direcionar operações de shards específicos. Em um ambiente de produção,  Sharded Clusters possuem exatamente 3 servidores de configuração.

  • Query Routers: Query Routers são basicamente mongos instances que fazem a interface com os aplicativos clients e operações diretas com o shard apropriado. Os processos de consulta e de roteamento visa operações para os shards e retornar resultados para os clients. Um  Sharded Cluster pode conter mais do que um roteador de consulta ( Query Router) para dividir a carga de solicitações do client. Um client envia as solicitações para um roteador consulta. Geralmente um Sharded Cluster possue muitos roteadores consulta.


 

quarta-feira, 21 de maio de 2014

MongoDB Overview


MongoDB é um banco de dados multi-plataforma orientado ao documento que fornece alta performance, alta disponibilidade e fácil escalabilidade. MongoDB funciona no conceito de coleções de documentos.



Banco de Dados


Banco de dados é um recipiente físico para coleções. Cada banco de dados tem o seu próprio conjunto de arquivos no sistema de arquivos. Um único servidor MongoDB normalmente tem vários bancos de dados.



Coleções (Collection)


Collection é um grupo de documentos MongoDB. É o equivalente de uma tabela de RDBMS. Uma coleção existe dentro de um único banco de dados. Coleções não impõem um esquema. Documentos dentro de uma coleção pode ter diferentes campos. Normalmente, todos os documentos em uma coleção são propositalmente  semelhantes ou afins.



Documento


Um documento é um conjunto de pares de valores-chave. Documentos têm esquema dinâmico. Esquema dinâmico significa que os documentos na mesma coleção não precisam ter o mesmo conjunto de campos ou estrutura e campos comuns em documentos de uma coleção podem conter diferentes tipos de dados.


Exemplo:


O exemplo abaixo mostra a estrutura do documento de um blog onde uma simples vírgula separa o par valor da chave.



{
_id
:ObjectId(7df78ad8902c)
title
:'MongoDB - Guia Rapido',
description
:'MongoDB - Guia Rapido',by:'MongoDBWise',
url
:'http://www.mongodbwise.worpress.com',
tags
:['mongodb','database','NoSQL'],
likes
:100,
comments
:[{
user
:'user1',
message
:'My first comment',
dateCreated
:newDate(2014,5,21,2,15),
like
:0},{
user
:'user2',
message
:'My second comments',
dateCreated
:newDate(2014,5,21,7,45),
like
:5}]}


terça-feira, 20 de maio de 2014

mongolink-256Instalação


Antes de começar a usar o MongoDB com nossos programas em Java, precisamos ter certeza de que temos informações MongoDB Java Driver JDBC e configurar sua máquina.


Você pode verificar no Java tutorial como instalar o Java em sua máquina. Agora, vamos verificar como configurar o MongoDB JDBC driver.




  1. Você precisa baixar o arquivo  mongo.jar. Certifique-se de baixar a ultima versão do mesmo.

  2. Você precisa incluir o mongo.jar em seu classpath.


Conecte-se ao banco de dados


Para conectar banco de dados, você precisa especificar o nome do banco de dados, se não existir, então será criado automaticamente pelo MongoDB.

Trechos do código para se conectar ao banco de dados seria a seguinte:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;

public class MongoDBJDBC{
public static void main( String args[] ){
try{
// To connect to mongodb server
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// Now connect to your databases
DB db = mongoClient.getDB( "test" );
System.out.println("Connect to database successfully");
boolean auth = db.authenticate(myUserName, myPassword);
System.out.println("Authentication: "+auth);
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}


sábado, 17 de maio de 2014

3-nodereplicaset

 

 

Neste artigo vamos ver como implementar uma replicação MongoDB em 3 passos de maneira bem simples.



Para começar, vamos seguir os passos a seguir:

  1. Criar os diretórios de dados

  2. Criar o conjunto de replicação e as instâncias

  3. Configure os nós primário, secundario e um árbitro


Passo 1) Crie os diretórios de dados


Comece criando um diretório de dados para cada membro do conjunto de réplica, um para o primário,outro para o secundário e também adicionar um árbitro. O árbitro não replica os dados, mas escolhe um novo primário, caso haja uma interrupção do primário existente.
mkdir /mongodb/0/node1
mkdir /mongodb/0/node2
mkdir /mongodb/0/arbiter

Passo 2) Criar o conjunto de replicação e as instâncias


Em seguida, comece  cada membro como um mongod separado. Desde que você esteja rodando cada processo na mesma máquina, é provavelmente mais fácil de começar cada mongod em uma janela de terminal separado:
mongod --replSet cadastro --dbpath /mongodb/0/node1 --port 40001 --smallfiles
mongod --replSet cadastro --dbpath /mongodb/0/node2 --port 40002 --smallfiles
mongod --replSet cadastro --dbpath /mongodb/0/arbiter --port 40003 --smallfiles


sexta-feira, 16 de maio de 2014

Hoje veremos o que as vezes ocorre quando enfrentamos um desligamento ou  até mesmo um reboot em um servidor MongoDB.

Ao tentar subir os serviços do MongoDB surge o seguinte erro
old lock file: /data/db/mongod.lock.  probably means unclean shutdown recommend removing file and running --repair see: http://dochub.mongodb.org/core/repair for more information

Este erro ocorre também quando encerramos o MongoDB de maneira errada, como por exemplo, um Kill no processo mongod, quando a maneira correta seria executar o comando db.shutdownServer() no console.

Como resolver este problema:

Você deve ir ao diretório /data/db caso tenha efetuado uma inicialização default e localizar o arquivo mongod.lock. 
-rwxr-xr-x. 1 mongod mongod 5 May 16 13:26 mongod.lock

Caso o diretório não exista, calma, execute um find
[root@Mongo01 /]# find / -name mongod.lock
/var/lib/mongo/mongod.lock

Pronto, agora verifique o tamanho do arquivo
-rwxr-xr-x.  1 mongod mongod        5 May 16 13:26 mongod.lock

Se o arquivo mongod.lock  no diretório especificado pelo dbpath,  seja /data/db por padrão ou outro de sua preferêrncia, não for um arquivo de zero bytes, então o mongod irá se recusas a iniciar.

Como você pode ver acima, o arquivo não está com 0 Bytes, portanto, podemos proceder de duas maneiras :

  1. Deletar o arquivo mongod.lock


Para limpar seus arquivos de dados sem preservar os arquivos originais, não utilize a opção-repairpath


a.Remova o arquivo de bloqueio obsoleto



rm /data/db/mongod.lock

Substitua /data/db com seu dbpath onde estão os arquivos de dados do MongoDB.


Atenção: Depois de remover o arquivo mongod.lock você deve executar o processo de reparação (-repair) de antes de usar o banco de dados.


b. Inicie o MongoDB utilizando o comando -repair para ler os arquivos de dados já existentes


mongod --dbpath /data/db --repair

Quando isso for concluído, os arquivos de dados reparados irão substituir os arquivos de dados originais no diretório /data/db.

c.Inicie o mongod usando a seguinte a seguinte linha de comando para apontar o dbpath para /data/db:
mongod --dbpath /data/db



2. Restaurando o MongoDB através do -repair

a. Crie um novo diretório para o dbpath
mongod –dbpath /data/db –repair –repairpath /data/db0

Com isso o Mongo irá  criar um novo diretório e mover o arquivo de bloqueio antigo / reparado para o novo diretório. Para evitar problemas com permissões. você pode criar manualmente o novo diretório:
sudo mkdir /data/db/db0

Após executar o repair, você pode acompanhar o feedback na linha de comando
[root@Mongo01 mongo] sudo mongod –dbpath /data/db –repair –repairpath /data/db0
Sun Jan  6 22:33:30 Mongo DB : starting : pid = 16652 port = 27017 dbpath = /data/db master = 0 slave = 0  32-bit

Sun Jan  6 22:33:30 finished checking dbs
Sun Jan  6 22:33:30  dbexit:
Sun Jan  6 22:33:30      shutdown: going to close listening sockets…
Sun Jan  6 22:33:30      shutdown: going to flush oplog…
Sun Jan  6 22:33:30      shutdown: going to close sockets…
Sun Jan  6 22:33:30      shutdown: waiting for fs preallocator…
Sun Jan  6 22:33:30      shutdown: closing all files…
Sun Jan  6 22:33:30      closeAllFiles() finished
Sun Jan  6 22:33:30      shutdown: removing fs lock…
Sun Jan  6 22:33:30  dbexit: really exiting now

 

Pronto, seu ambiente está novamente operacional.

quinta-feira, 15 de maio de 2014

Como sabemos MongoDB usa javascript interface para os comandos de shell. Assim, podemos usar este recurso de uma ótima maneira escrevendo comandos de um MongoDB (shell)  em um javascript (js arquivo.) e por fim, executar em um único lugar.
Vamos ver  um exemplo bem simples.
print('===== Script =====');
print(db.getCollectionNames()); // prints all collection names in respective database
print(db.myCollection.count()); // prints the count of myCollection collection.

 

Comando para executar o Shell no script
mongo 127.0.0.1/my-profile-db --username='username' --password='pwd' mongodb-script.js

mongodb-script.js é o script shell.
Basicamente, este é apenas um comando normal de conexão mongodb para executar o script após conectar.
mo_icon_big_thumb_171574 (1)

 

 

 

Neste post, vamos aprender como usar javascript como MongoDB shell script para exportar (campos de) uma coleção.


Geralmente, para exportar dados de uma coleção MongoDB, usamos o seguinte comando -



mongoexport -vvvv --host 127.0.0.1 --db my-db --username='usr' --password='pwd' --collection profiles --csv --out /home/data/usernames.csv -f 'username'

Definitivamente eu prefiro a forma acima mencionada. Mas vamos considerar que você tem milhões ou bilhões de registros em uma coleção MongoDB. E você deseja exportar todos estes.
Provavelmente, dependendo da configuração dos seus servidores ou até mesmo de seu desktop, este processo poderá levar horas ou até mesmo travar. Foi então que a uma solução alternativa para contornar esta situação veio a tona: Criar um script que irá criar vários blocos de dados ao exportar.



var size = 1000000;
var maxCount = 1;
for (x=0;x<maxCount;x=x+1)
{
var recToSkip = x*size;
db.profiles.find().skip(recToSkip).limit(size).forEach( function(record){
var username = record.username;
print(record.username);
})
}

E claro para executar o script (se acima javascript está em arquivo chamado - 'usernames.js')


isso só vai travar. Bem, eu não sei o que acontece no seu computador, mas na minha máquina foi apenas preso por horas e, em seguida, I terminou o processo. E veio com solução scripting - onde eu criei vários arquivos (blocos) dos dados exportados.


mongo 127.0.0.1/my-db --username='username' --password='pwd'export-usernames.js > output.txt

O comando shell acima irá prestar toda a saída (de exportação-usernames.js) para o arquivo output.txt. Calma, eu tenho plena consciência de que se trata de um único arquivo onde você receberá todos os dados exportados. Mas se você quiser dividir isso , basta escrever seu script para que faça o wrapper ou executar várias vezes. Isto é com você.

quarta-feira, 14 de maio de 2014

mongodb

Neste tutorial, vamos mostrar os conceitos e fatos importantes sobre


Databases, Documents e collections no MongoDB.


 

 

 

DATABASES


Em um servidor MongoDB é possível executar vários bancos de dados. O Banco de dados padrão do MongoDB é chamado 'db', que é armazenado dentro da pasta de dados.

O MongoDB pode criar bancos de dados em tempo real, portanto não é necessário criar um banco de dados antes de começar a trabalhar com ele.

Execute no prompt do OS, o comando "mongo" para ter acesso ao console:
[root@Mongo01 ~]# mongo
MongoDB shell version: 2.6.1
connecting to: test
>

segunda-feira, 5 de maio de 2014

Neste artigo vamos mostrar como você pode instalar o MongoDB no Centos 6.5 em um ambiente virtual (VirtualBox).

[caption id="attachment_101" align="aligncenter" width="620"]mongovirtual MongoDB (VirtualBox)[/caption]


[slideshare id=34295374&style=border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px; max-width: 100%;&sc=no]
[slideshare id=18007515&style=border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px; max-width: 100%;&sc=no]
[slideshare id=34294642&style=border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px; max-width: 100%;&sc=no]

domingo, 4 de maio de 2014

MongoDB é uma ferramenta fantástica para usar em análises em tempo real, porque você pode fazer um pré-join de múltiplas fontes de dados, documentos aninhados e em seguida, consultar esses documentos extremamente rápido. Às vezes, os sistemas utilizados para alimentar o MongoDB estão dentro de um banco de dados Oracle. Então, como é que você pode manter os dados MongoDB consistentes com Oracle e sincronizados em tempo quase real? Oracle Streams Advanced Queuing!


Há toneladas de sistemas Open Source  e proprietary queuing que poderiam ser usados​​, então por que escolher Advanced Queuing (AQ a partir de agora)? O suporte a transações. Com AQ, o enfileiramento e de  operações queue acontecem na mesma transação como qualquer outro DML que seu aplicativo Oracle está realizando tornando-se uma maneira muito simples de apenas enfileirar mensagens  para unidades de trabalho comprometidos.


O restante deste artigo percorre um exemplo usando uma tabela muito simples de clientes. Queremos documentos no MongoDB atualizados assim que os dados no Oracle forem comitados. O fluxo de dados será algo parecido com isto:


untitled

 

Como configurar um cluster MongoDB NoSQL em um sistema baseado em x86 com Oracle Solaris Zones eo Service Management Facility Oracle Solaris 11 e uma ferramenta de análise DTrace.

Este artigo começa com uma breve visão geral do MongoDB e segue com um exemplo de criação de um cluster MongoDB três nós em um sistema baseado em x86. Como pré-requisito, você deve ter uma compreensão básica do Oracle Solaris Zones e administração de redes.

Sobre o MongoDB e Oracle Solaris Zones


MongoDB é um banco de dados orientado a documentos open source NoSQL que armazena dados estruturados como JavaScript Object Notation (JSON)-como documentos com esquemas dinâmicos. Isso permite um rápido desenvolvimento desde os esquemas de banco de dados podem ser modificados rapidamente aplicações evoluir sem a necessidade de desligar o banco de dados. Além disso, MongoDB suporta replicação master-slave, utilizando um conjunto de replicação, e também fornece escalabilidade horizontal com o recurso sharding, que permite distribuir os dados (com base em uma chave caco) em vários servidores MongoDB.

Categories

2.6 (1) 2.6.1 (1) Aggregate (2) Apache Hadoop (1) Aplicativos (1) AQ (1) Backup (1) Capacity Planning (1) Capped Collections (1) Cassandra vs MongoDB (1) Centos (1) Cloud (1) Cluster (1) Collections (2) Comparativo (1) Conectors (1) Consultas (1) Convert (1) CSV (1) Database (1) DEQUEUE (1) DML (1) Documents (1) Drivers (1) Export (2) Functions (1) Gradle (1) Group (1) Hadoop (2) Hive (1) IKM (1) Import (2) Instalação (1) Install (1) Java (6) JSON (9) lock (1) Mac (1) Mac OS X (1) Map Reduce (2) Memória (1) MongoDB (35) mongoexport (3) mongoimport (1) MongoMem (1) MySQL (1) news (1) NoSQL (1) Nuvem (1) ODI (3) Optimization (1) Oracle (4) Oracle AQ (1) Oracle Solaris (1) Oracle Streams (1) OraclexMongodb (2) OS X (1) Python (1) Python Software Foundation (1) Queue (1) RDBMS (1) repair (1) Replica Set (3) Review (1) Scripts (2) Shard (1) Shell (2) Slides (1) Solaris (1) SQL Server (1) Tools (2) Trial (2) Tutoriais (24) VirtualBox (1)

Blog Archive

SmarttNet Solution Provider. Tecnologia do Blogger.

Postagens populares

Twitter MongoDBBrazil

Total de visualizações de página