quinta-feira, 29 de maio de 2014

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 .

Hoje existem muitas ferramentas que permitem gerenciar o MongoDB. Pessoalmente  ainda faço parte da velha guarda que prefere administrar via linha de comando. Uma delas é o MongoVUE que é na primeira análise é uma aplicação de desktop para windows muito fácil de usar. Há uma versão paga que custa algo em torno de US$ 35 e uma versão gratuita. Como não poderia ser diferente, a versão gratuita é limitada em matéria de recursos, porem para o nosso propósito é mais do que suficiente. Vamos em frente e faça o download aqui Observação: Durante o processo de instalação certifique-se de permitir a exceção no Firewall do Windows. Após instalar, ao executar você verá o painel de conexões disponíveis mongodb5

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() );
}
}
}


1

 

O que há de novo no MongoDB 2.6.1?


 

 

 

A nova release liberada no ultimo dia 5 de Maio de 2014 traz as seguintes alterações que afetam tanto as versões Standart Enterprise Edition, são elas:

Outras Correções:

Estabilidade



  • Falha de banco de dados de reparação pode apagar arquivos de banco de dados - SERVER-13739


Aggregation Enhancements


O aggregation pipeline adiciona a capacidade de retornar conjuntos de resultados de qualquer tamanho, ou retornando um cursor ou escrever a saída para uma coleção. Além disso, o  aggregation pipeline suporta variáveis ​​e adiciona novas operações para lidar com conjuntos de dados e redigir dados.

  • O db.collection.aggregate () agora retorna um cursor, que permite que o aggregation pipeline retornae conjuntos de resultados de qualquer tamanho.

  • Aggregation pipelines agora suportam uma operação explain para auxiliar a análise de operações de agregação.

  • Aggregation agora pode usar um processo de classificação baseado em discos externos mais eficientes.



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.

Blog Archive

SmarttNet Solution Provider. Tecnologia do Blogger.

Postagens populares

Twitter MongoDBBrazil

Total de visualizações de página