MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Crie um cluster de banco de dados na nuvem com o MongoDB Atlas


Há anos, o MongoDB tem sido o banco de dados NoSQL obrigatório para indivíduos e empresas que criam aplicativos de grande escala. É de código aberto, facilmente escalável e oferece alta disponibilidade. Ele também suporta consultas muito complexas e controle de simultaneidade refinado.

No entanto, tarefas necessárias, como instalar o banco de dados, ajustá-lo para manter o desempenho ideal por longos períodos e protegê-lo, tendem a exigir muito esforço especializado e dedicado.

Felizmente, existe uma alternativa mais fácil: MongoDB Atlas, uma versão totalmente gerenciada do banco de dados em nuvem.

Com o MongoDB Atlas, você pode criar um cluster MongoDB em qualquer grande provedor de nuvem de sua escolha e começar a usar esse cluster em questão de minutos. Usando a interface de usuário baseada em navegador do Atlas, você também pode configurar intuitivamente o cluster e monitorar seu desempenho.

Neste tutorial, mostrarei como criar um cluster de nível gratuito do MongoDB Atlas e usá-lo em um aplicativo Python.

Pré-requisitos


Antes de continuar, certifique-se de ter o seguinte instalado e configurado em seu computador:
  • Python 3.4 ou superior
  • pip 18.0 ou superior

1. Criando um cluster


Para poder usar os serviços de nuvem do MongoDB, você precisará de uma conta do MongoDB Atlas. Para criar um, vá para a página inicial e pressione o botão Começar gratuitamente botão.

Depois de preencher o pequeno formulário de inscrição, você será redirecionado para o assistente de criação de cluster. Em sua primeira seção, você terá que escolher o provedor de nuvem e a região de sua preferência.


Para minimizar a latência da rede, o ideal é escolher uma região mais próxima do seu computador. Por enquanto, no entanto, como estamos criando um cluster de nível gratuito, certifique-se de que a região selecionada tenha um nível gratuito disponível. Além disso, se você estiver usando uma VM do Google Cloud ou uma instância do Amazon EC2 como seu ambiente de desenvolvimento, selecione primeiro o provedor de nuvem correspondente.

No Nível de cluster seção, selecione o M0 opção para criar seu cluster de nível gratuito. Ele oferece 512 MB de espaço de armazenamento, uma versão recente do MongoDB com WiredTiger como mecanismo de armazenamento, um conjunto de réplicas de três nós e generosos 10 GB de largura de banda por semana.

Por fim, dê um nome significativo ao cluster e pressione o botão Criar cluster botão.

O MongoDB Atlas agora levará cerca de cinco minutos para configurar seu cluster.

2. Configurando o cluster


Antes de começar a usar o cluster, você precisará fornecer alguns detalhes relacionados à segurança, então mude para a seção Segurança aba.

Primeiro, em Usuários do MongoDB seção, você deve criar um novo usuário para você pressionando o botão Adicionar novo usuário botão. Na caixa de diálogo exibida, digite o nome de usuário e a senha desejados, selecione Ler e gravar em qualquer banco de dados privilégio e pressione o botão Adicionar usuário botão.

Em seguida, na Lista de permissões de IP seção, você deve fornecer uma lista de endereços IP dos quais você acessará o cluster. Por enquanto, basta fornecer o endereço IP atual do seu computador.

Pressione o botão Adicionar endereço IP botão para criar uma nova entrada de endereço IP. Na caixa de diálogo exibida, pressione o botão Adicionar endereço IP atual botão para preencher automaticamente a Entrada da lista de permissões campo. Além disso, se você não tiver um endereço IP estático, é uma boa ideia marcá-lo como uma entrada temporária marcando a opção Salvar como lista de permissões temporária opção. Por fim, pressione Confirmar para adicionar a entrada.

3. Obtendo a string de conexão


Você precisará de uma cadeia de conexão válida para se conectar ao cluster a partir do aplicativo. Para obtê-lo, acesse a Visão geral guia e pressione o botão Conectar botão.

Na caixa de diálogo que se abre, selecione Conectar seu aplicativo e pressione a opção Estou usando o driver 3.6 ou posterior botão. Agora você deve conseguir ver sua string de conexão. Ele não terá sua senha real, então você terá que colocá-la manualmente. Depois de fazer isso, anote a string para poder usá-la mais tarde.

4. Instalando o driver Python


Para poder interagir com seu cluster MongoDB Atlas programaticamente, você deve ter um driver MongoDB instalado em seu computador. Para a linguagem de programação Python, o PyMongo é o driver mais popular disponível atualmente. A maneira recomendada de instalá-lo em seu computador é usar o pip módulo como mostrado abaixo:
python3 -m pip install pymongo --user

Você deve ter notado que sua string de conexão do MongoDB Atlas é um mongodb+srv:// URI. Para permitir que o driver funcione com registros DNS SRV, você também deve instalar o dnspython módulo. Veja como:
python3 -m pip install dnspython --user

5. Conectando-se ao cluster


Agora você pode usar seu cluster MongoDB de qualquer aplicativo Python. Para me acompanhar, crie um novo script Python e abra-o usando qualquer editor de código.

Dentro do script, para poder interagir com o cluster, você precisará de uma instância do MongoClient aula. Como único argumento para seu construtor, passe sua string de conexão.
import pymongo



my_client = pymongo.MongoClient(

    'mongodb+srv://alice:[email protected]/test?retryWrites=true'

)

O construtor acima retorna imediatamente e não gerará nenhum erro. Portanto, para verificar se você estabeleceu uma conexão com sucesso, sugiro que tente realizar uma operação no cluster. Uma chamada para o server_info() O método, que fornece vários detalhes sobre sua instância do MongoDB, será suficiente.

Se não houver erros em sua string de conexão, a chamada para o server_info() método terá sucesso. No entanto, se o nome de usuário ou a senha especificados estiverem incorretos, você encontrará um OperationFailure erro. O código a seguir mostra como pegá-lo:
try:

    print("MongoDB version is %s" % 

            my_client.server_info()['version'])

except pymongo.errors.OperationFailure as error:

    print(error)

    quit(1)

Agora você pode ir em frente e tentar executar seu script.

6. Inserindo Documentos


A string de conexão padrão que você obtém da interface web do MongoDB Atlas menciona um banco de dados chamado test . Vamos continuar usando o mesmo banco de dados. Veja como você pode obter uma referência a ele:
my_database = my_client.test

Um banco de dados MongoDB é composto por uma ou mais coleções, que nada mais são do que grupos de documentos BSON (abreviação de JSON binário). Seu cluster de nível gratuito no MongoDB Atlas pode ter no máximo 500 coleções.

Para um exemplo realista, vamos criar uma nova coleção chamada foods . Com o PyMongo, você não precisa chamar explicitamente nenhum método para fazer isso. Você pode simplesmente referenciá-lo como se já existisse.
my_collection = my_database.foods

Vale a pena mencionar que o código acima não cria os foods coleta imediatamente. Ele é criado somente depois que você adiciona um documento a ele. Então vamos agora criar e adicionar um novo documento contendo dados nutricionais sobre um alimento.

Usando o insert_one() é a maneira mais simples de adicionar um documento a uma coleção. Para especificar o conteúdo do documento, você passa um dicionário Python para o método. O código de exemplo a seguir mostra como:
my_collection.insert_one({

    "_id": 1,

    "name": "pizza",

    "calories": 266,

    "fats": {

        "saturated": 4.5,

        "trans": 0.2

    },

    "protein": 11

})

Adicionar documentos um de cada vez pode ser ineficiente. Com o insert_many() método, você pode adicionar vários documentos à sua coleção de uma só vez. Ele espera uma matriz de dicionários como entrada. O código a seguir adiciona mais dois documentos à coleção:
my_collection.insert_many([

    {

        "_id": 2,

        "name": "hamburger",

        "calories": 295, "protein": 17,

        "fats": { "saturated": 5.0, "trans": 0.8 },

    },

    {

        "_id": 3,

        "name": "taco",

        "calories": 226, "protein": 9,

        "fats": { "saturated": 4.4, "trans": 0.5 },

    }

])

O _id campo que você vê nos documentos acima é um campo que é usado como chave primária pelo MongoDB. Como tal, é imutável e deve estar presente em todos os documentos do MongoDB. Se você esquecer de incluí-lo ao criar seu documento, o PyMongo o adicionará automaticamente e atribuirá um valor exclusivo gerado automaticamente a ele.

7. Executando consultas


Depois de adicionar alguns documentos à sua coleção, você pode executar consultas chamando o método find() método, que retorna um Cursor objeto sobre o qual você pode iterar. Se você não passar nenhum argumento para ele, find retorna todos os documentos da coleção.

O código a seguir mostra como imprimir os nomes de todos os alimentos presentes em nossa coleção:
my_cursor = my_collection.find()



for item in my_cursor:

    print(item["name"])



# Output is:

#   pizza

#   hamburger

#   taco

Se você quiser o find() para retornar apenas os documentos que correspondem a critérios específicos, você deve passar um dicionário Python para ele. Por exemplo, se você deseja encontrar o documento cujo name campo está definido como "pizza", você pode usar o seguinte código:
my_cursor = my_collection.find({

    "name": "pizza"

})

Para consultas mais complexas, você pode usar os operadores de consulta nomeados intuitivamente do MongoDB nos dicionários que você passa para o find() método. Por exemplo, o código a seguir mostra como usar o $lt operador para encontrar documentos cujas calories campo está definido para um valor menor que 280:
my_cursor = my_collection.find({

    "calories": { "$lt": 280 }

})



for item in my_cursor:

    print("Name: %s, Calories: %d" % 

        (item["name"], item["calories"]))



# Output is:

#   Name: pizza, Calories: 266

#   Name: taco, Calories: 226

Usando a notação de ponto, você também pode usar campos aninhados em suas consultas. O código a seguir mostra como encontrar documentos cujo trans campo, que está dentro do fats campo, é definido como um valor maior ou igual a 0,5:
my_cursor = my_collection.find({

    "fats.trans": { "$gte": 0.5 }

})



for item in my_cursor:

    print("Name: %s, Trans fats: %.2f" % 

        (item["name"], item["fats"]["trans"]))



# Output is:

#   Name: hamburger, Trans fats: 0.80

#   Name: taco, Trans fats: 0.50

8. Atualizando e excluindo documentos


Muito semelhante ao insert_one() e insert_many() métodos são os update_one() e update_many() métodos, que você pode usar para alterar o conteúdo de documentos que já estão em sua coleção. Ambos os métodos de atualização, além de novos dados, precisam de uma consulta para zerar os documentos que precisam ser alterados.

Você pode usar vários operadores de atualização em seus métodos de atualização. O mais comumente usado é $set , que permite adicionar novos campos ou atualizar os valores dos campos existentes. O código a seguir mostra como adicionar dois novos campos denominados fiber e sugar ao documento cujo name campo está definido como "taco":
my_collection.update_one(

    { "name": "taco" }, # query

    {

        "$set": {       # new data

            "fiber": 3.95,

            "sugar": 0.9

        }

    }

)

Se a consulta que você passar para o update_one() retorna mais de um documento, apenas o primeiro documento é atualizado. O update_many() método não tem essa limitação.

Por fim, usando o delete_one() e delete_many() métodos, você pode excluir documentos em suas coleções. Ambos os métodos precisam de uma consulta para determinar quais documentos precisam ser excluídos. Veja como você pode excluir todos os documentos cujas calories campo está definido para um valor menor que 300:
my_collection.delete_many({

    "calories": {

        "$lt": 300

    }

})



# Deletes all the three documents