SQL é a maneira preferida de envolver bancos de dados relacionais no que diz respeito à consulta. Entende-se que os usuários teriam trabalhado com bancos de dados relacionais, como MySQL e PostgreSQL, que empregam o recurso de consulta SQL. Geralmente, o SQL é fácil de entender e, portanto, tornou-se amplamente utilizado principalmente em bancos de dados relacionais.
No entanto, o SQL é bastante complexo ao tentar envolver um amplo conjunto de documentos em um banco de dados. Em poucas palavras, não se destina a bancos de dados de documentos, pois vem com vários contratempos. Por exemplo, você não pode consultar documentos de matriz incorporados com facilidade, ou melhor, você precisará projetar um subprograma para iterar e filtrar os dados retornados para fornecer os resultados necessários. Consequentemente, isso resultará em um incremento da duração da execução. Mas ter um bom entendimento em SQL fornecerá uma base melhor para interagir com o MongoDB a partir de algum ponto, em vez de começar do zero.
Neste blog, usaremos o programa Studio 3T para mostrar as várias consultas de junção SQL e como você pode redesenhá-las em consultas do MongoDB para obter melhor desempenho. O programa pode ser baixado neste link.
Conectando SQL ao MongoDB
Existem vários drivers ou interfaces através dos quais você pode usar o SQL para se comunicar com o MongoDB, por exemplo, ODBC. ODBC significa Open Database Connectivity. Esta é simplesmente uma interface que permite que aplicativos acessem dados em sistemas de gerenciamento de banco de dados usando SQL como o processo padrão de acesso a esses dados. Ele vem com uma vantagem de interoperabilidade adicional pela qual um único aplicativo pode acessar vários sistemas de gerenciamento de banco de dados.
Neste blog, produziremos e testaremos o código do SQL e o otimizaremos por meio de um editor de agregação para produzir uma consulta do MongoDB.
Gráfico de mapeamento para SQL para MongoDB
Antes de entrarmos em muitos detalhes, precisamos entender as relações básicas entre esses 2 bancos de dados, especialmente palavras-chave no conceito de consulta.
Terminologia e conceitos
SQL | MongoDB |
---|---|
Tabela Linha Coluna Junções de tabela | Coleção Documento BSON Campo $lookup |
A chave primária no SQL define uma coluna única que basicamente organiza as linhas em ordem de tempo de registro. Por outro lado, a chave primária no MongoDB é um campo exclusivo para armazenar um documento e garantir que os campos indexados não armazenem valores duplicados.
Vários noves Torne-se um DBA do MongoDB - Trazendo o MongoDB para a produçãoSaiba mais sobre o que você precisa saber para implantar, monitorar, gerenciar e dimensionar o MongoDBBaixe gratuitamente
Correlação entre SQL e MongoDB
Digamos que temos dados de um aluno e queremos registrar esses dados no banco de dados SQL e no MongoDB. Podemos definir um objeto aluno simples como:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Ao criar uma tabela SQL, precisamos definir os nomes das colunas e o tipo de dados, enquanto no MongoDB uma coleção será criada automaticamente durante a primeira inserção.
A tabela abaixo nos ajudará a entender como algumas das instruções SQL podem ser escritas no MongoDB.
Instrução de esquema SQL | Declarações de esquema do MongoDB |
---|---|
Para inserir um documento no banco de dados | Podemos definir um projeto de esquema usando alguns módulos como mangusto e definir os campos como um objeto em vez de inserir um documento diretamente para mostrar a correlação. O id de arquivo principal será gerado automaticamente durante a inserção de um documento. Inserindo um novo documento para criar a coleção |
Usando a instrução ADD para adicionar uma nova coluna à tabela existente. | A estrutura dos documentos de coleção não está bem definida e, portanto, atualize os documentos no nível do documento usando o método updateMany() |
Para soltar uma coluna (unidades) | Para soltar um campo (unidades) |
Para soltar uma mesa alunos | Para largar os alunos da coleção |
Instrução SQL Select | Declarações de localização do MongoDB |
---|---|
Selecionar todas as linhas | Selecione todos os documentos |
Para retornar apenas colunas específicas. | Para retornar apenas campos específicos. Por padrão, o campo _id é retornado, a menos que especificado de outra forma no processo de projeção. Definir o _id:0 significa que apenas o documento retornado terá apenas o nome e os valores do objeto de nota. |
Para selecionar linhas específicas com algum valor de coluna correspondente. | Para selecionar documentos específicos com algum valor de campo correspondente. |
Selecionando linhas com uma coluna cujos valores possuem alguns caracteres como o valor do critério fornecido | Selecionando documentos com um campo cujos valores tenham alguns caracteres como valor de critério fornecido |
Para retornar as linhas em ordem crescente usando a chave primária. | Para retornar os documentos em ordem crescente usando a chave primária |
Para agrupar as linhas retornadas de acordo com alguma coluna (nota) | Agrupar documentos devolvidos de acordo com algum campo (nota) |
Limitando o número de linhas retornadas e pulando algumas | Limitando o número de documentos devolvidos e pulando linhas |
Uma opção essencial é saber como nossa consulta é executada, portanto, use o método Explain. | |
Instrução SQL Update | Declarações de atualização do MongoDB |
---|---|
Atualizar a coluna de notas para alunos com idade igual a 15 anos ou mais | Aqui usamos alguns operadores como $gt, $lt e $lte. |
Incrementando algum valor de coluna | |
Instrução de exclusão SQL | MongoDB remove instruções |
---|---|
Para excluir todas as linhas | Para excluir todos os documentos. |
Para excluir uma linha específica onde alguma coluna tem um valor específico. | |
Esta tabela de mapeamento de amostra permitirá que você compreenda melhor o que aprenderemos em nosso próximo tópico.
SQL e Studio 3T
O Studio 3T é um dos programas disponíveis que ajuda a conectar SQL e MongoDB. Possui um recurso de consulta SQL para aprimorar um para manipular SQL. A consulta é interpretada no shell do Mongo para produzir um código de consulta simples no equivalente da linguagem MongoDB. Além de fazer consultas simples, o aplicativo Studio 3T agora pode fazer joins.
Para nossos dados de exemplo acima, depois de conectar seu banco de dados no Studio 3T, podemos usar a janela SQL para encontrar o documento que corresponde aos nossos critérios, ou seja:
SELECT * FROM students WHERE name LIKE 'James%';
Se você tiver um documento com o campo de nome definido para o valor James, ele será retornado. Da mesma forma, se você clicar na guia de código de consulta, será apresentada uma janela com o código MongoDB equivalente. Para a afirmação acima, teremos:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Resumo
Às vezes, você pode querer uma maneira rápida de interagir com o MongoDB a partir do conhecimento que tem sobre SQL. Aprendemos algumas semelhanças básicas de código entre o SQL e seu equivalente no MongoDB. Além disso, alguns programas, como o Studio 3T, possuem ferramentas bem estabelecidas para converter a consulta SQL em linguagem equivalente ao MongoDB e ajustar essa consulta para obter melhores resultados. Bem, para a maioria de nós, esta será uma ótima ferramenta para facilitar nosso trabalho e garantir que qualquer código que tenhamos no final seja muito ideal para o desempenho de nosso banco de dados. Na Parte 2 deste blog, vamos aprender sobre SQL INNER JOIN no MongoDB.