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

MySQL para MongoDB - uma folha de dicas de administração


A maioria dos aplicativos de software hoje em dia envolve algum armazenamento dinâmico de dados para referência futura extensa no próprio aplicativo. Todos sabemos que os dados são armazenados em um banco de dados que se enquadra em duas categorias:DBMS relacional e não relacional.

Sua escolha de seleção entre esses dois dependerá totalmente de sua estrutura de dados, quantidade de dados envolvidos, desempenho e escalabilidade do banco de dados.

Os SGBDs relacionais armazenam dados em tabelas em termos de linhas, de modo que utilizam a Linguagem de Consulta Estruturada (SQL), tornando-os uma boa escolha para aplicações que envolvem várias transações. Eles incluem MySQL, SQLite e PostgreSQL.

Por outro lado, os SGBDs NoSQL, como o MongoDB, são orientados a documentos, de modo que os dados são armazenados em coleções em termos de documentos. Isso oferece uma maior capacidade de armazenamento para um grande conjunto de dados, portanto, uma vantagem adicional em escalabilidade.

Neste blog, estamos assumindo que você tem um conhecimento melhor para MongoDB ou MySQL e, portanto, gostaria de saber a correlação entre os dois em termos de consulta e estrutura de banco de dados.

Abaixo está uma folha de dicas para se familiarizar ainda mais com a consulta do MySQL ao MongoDB.

Folha de dicas do MySQL para MongoDB - Termos

Termos do MySQL Termos do MongoDB Explicação
Tabela Coleção Este é o contêiner de armazenamento para dados que tendem a ser semelhantes nos objetos contidos.
Linha Documento Define a entidade de objeto único na tabela para MySQL e coleção no caso do MongoDB.
Coluna Campo Para cada item armazenado, ele possui propriedades que são definidas por diferentes valores e tipos de dados. No MongoDB, documentos de uma mesma coleção, podem ter campos diferentes entre si. No MySQL, cada linha deve ser definida com as mesmas colunas das existentes.
Chave primária Chave primária Cada objeto armazenado é identificado com um valor de campo exclusivo no caso do MongoDB, temos o campo _id definido automaticamente, enquanto no MySQL você pode definir sua própria chave primária que é incremental à medida que cria novas linhas.
Uniões de tabela Incorporando e vinculando documentos Conexão associada a um objeto em uma coleção/tabela diferente a dados em outra coleção/tabela.
onde $match Selecionando dados que correspondem aos critérios.
grupo $grupo Agrupando dados de acordo com alguns critérios.
soltar $unset Removendo uma coluna/campo de uma linha/documento/
conjunto $set Definir o valor de uma coluna/campo existente para um novo valor.
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

Declarações de esquema

Instruções de tabela MySQL Declarações de coleção do MongoDB Explicação

O banco de dados e as tabelas são criados explicitamente através do painel de administração do PHP ou definidos dentro de um script, ou seja

Criando um banco de dados
CREATE DATABASE database_name

Criando uma tabela
CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    UserId Varchar(30),
    Age Number,
    Gender char(1),
    Name VarChar(222),
    PRIMARY KEY (id)
)

O banco de dados pode ser criado de forma implícita ou explícita. Implicitamente durante a primeira inserção do documento, o banco de dados e a coleção são criados, bem como um campo _id automático sendo adicionado a este documento.
db.users.insert( {
    UserId: "user1",
    Age: 55,
    Name: "Berry Hellington",
    Gender: "F",
 } )

Você também pode criar o banco de dados explicitamente executando este comentário no Mongo Shell
db.createCollection("users")

No MySQL, você precisa especificar as colunas na tabela que está criando, bem como definir algumas regras de validação, como neste exemplo, o tipo de dados e o comprimento que vão para uma coluna específica. No caso do MongoDB, não é obrigatório definir nem os campos que cada documento deve conter nem as regras de validação que os campos especificados devem conter.

No entanto, no MongoDB para integridade e consistência dos dados, você pode definir as regras de validação usando o JSON SCHEMA VALIDATOR

Derrubar uma mesa
DROP TABLE users
db.users.drop()

São instruções para deletar uma tabela para MySQL e coleção no caso do MongoDB.

Adicionando uma nova coluna chamada join_date
ALTER TABLE users ADD join_date DATETIME

Removendo a coluna join_date se já estiver definida
ALTER TABLE users DROP COLUMN join_date DATETIME

Adicionando um novo campo chamado join_date
db.users.updateMany({},{$set:{‘join_date’: new Date()})

Isso atualizará todos os documentos da coleção para que a data de junção seja a data atual.

Removendo o campo join_date se já estiver definido
db.users.updateMany({},{$unset:{‘join_date’: “”})

Isso removerá o campo join_date de todos os documentos da coleção.

Alterar a estrutura do esquema adicionando ou descartando uma coluna/campo.

Como a arquitetura do MongoDB não impõe estritamente a estrutura do documento, os documentos podem ter campos diferentes uns dos outros.

Criando um índice com a coluna UserId crescente e Idade decrescente
CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Criando um índice envolvendo os campos UserId e Age.
db.users.ensureIndex( { UserId: 1, Age: -1 } )

Os índices geralmente são criados para facilitar o processo de consulta.
INSERT INTO users(UserId,
                  Age,
                  Gender)
VALUES ("user1",
        25,
        "M")
db.users.insert( {
       UserId: "bcd001",
       Age: 25,
       Gender: "M",
     Name: "Berry Hellington",
} )

Inserindo novos registros.
DELETE FROM users
WHERE Age = 25
db.users.deleteMany( { Age = 25 } )

Excluindo registros da tabela/coleção cuja idade seja igual a 25.
DELETE FROM users
db.users.deleteMany({})

Excluindo todos os registros da tabela/coleção.
SELECT * FROM users
db.users.find()

Retorna todos os registros da tabela/coleção de usuários com todas as colunas/campos.
SELECT id, Age, Gender FROM users
db.users.find(
   { },
   { Age: 1, Gender: 1 }
)

Retorna todos os registros da tabela/coleção de usuários com colunas/campos de idade, sexo e chave primária.
SELECT  Age, Gender FROM users
db.users.find(
   { },
 { Age: 1, Gender: 1,_id: 0}
)

Retorna todos os registros da tabela/coleção de usuários com colunas/campos Idade e Gênero. A chave primária é omitida.
SELECT * FROM users WHERE Gender = “M”
db.users.find({ Gender: "M"})

Retorna todos os registros da tabela/coleção de usuários cujo valor de Gênero é definido como M.
SELECT Gender FROM users WHERE Age = 25
db.users.find({ Age: 25}, { _id: 0, Gender: 1})

Retorna todos os registros da tabela/coleção de usuários com apenas o valor Gender, mas cujo valor Age é igual a 25.
SELECT * FROM users WHERE Age = 25 AND Gender = ‘F’
db.users.find({ Age: 25, Gender: "F"})

Retorna todos os registros da tabela/coleção de usuários cujo valor de Gênero é definido como F e Idade é 25.
SELECT * FROM users WHERE  Age != 25
db.users.find({ Age:{$ne: 25}})

Retorna todos os registros da tabela/coleção de usuários cujo valor de Idade não é igual a 25.
SELECT * FROM users WHERE Age = 25 OR Gender = ‘F’
db.users.find({$or:[{Age: 25, Gender: "F"}]})

Retorna todos os registros da tabela/coleção de usuários cujo valor de Gênero é definido como F ou Idade é 25.
SELECT * FROM users WHERE Age > 25
db.users.find({ Age:{$gt: 25}})

Retorna todos os registros da tabela/coleção de usuários cujo valor de Idade é maior que 25.
SELECT * FROM users WHERE Age <= 25
db.users.find({ Age:{$lte: 25}})

Retorna todos os registros da tabela/coleção de usuários cujo valor de Idade é menor ou igual a 25.
SELECT Name FROM users WHERE Name like "He%"
db.users.find(
  { Name: /He/ }
)

Retorna todos os registros da tabela/coleção de usuários cujo valor de Nome tem letras He.
SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id ASC
db.users.find( { Gender: "F" } ).sort( { $natural: 1 } )

Retorna todos os registros da tabela/coleção de usuários cujo valor de Gênero é definido como F e ordena esse resultado na ordem crescente da coluna id no caso do MySQL e hora inserida no caso do MongoDB.
SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id DESC
db.users.find( { Gender: "F" } ).sort( { $natural: -1 } )

Retorna todos os registros da tabela/coleção de usuários cujo valor de Gênero é definido como F e ordena esse resultado na ordem decrescente da coluna id no caso do MySQL e hora inserida no caso do MongoDB.
SELECT COUNT(*) FROM users
db.users.count()

ou
db.users.find().count()

Conta todos os registros na tabela/coleção de usuários.
SELECT COUNT(Name) FROM users
db.users.count({Name:{ $exists: true }})

ou
db.users.find({Name:{ $exists: true }}).count()

Conta todos os registros na tabela/coleção de usuários que têm um valor para a propriedade Name.
SELECT * FROM users LIMIT 1
db.users.findOne()

ou
db.users.find().limit(1)

Retorna o primeiro registro na tabela/coleção de usuários.
SELECT * FROM users WHERE Gender = ‘F’ LIMIT 1
db.users.find( { Gender: "F" } ).limit(1)

Retorna o primeiro registro na tabela/coleção de usuários que tem o valor de Gênero igual a F.
SELECT * FROM users LIMIT 5 SKIP 10
db.users.find().limit(5).skip(10)

Retorna os cinco registros na tabela/coleção de usuários após pular os primeiros cinco registros.
UPDATE users SET Age = 26 WHERE age > 25
db.users.updateMany(
  { age: { $gt: 25 } },
  { $set: { Age: 26 } }
)

Isso define a idade de todos os registros na tabela/coleção de usuários que têm idade maior que 25 a 26.
UPDATE users SET age = age + 1
db.users.updateMany(
  {} ,
  { $inc: { age: 1 } }
)

Isso aumenta a idade de todos os registros na tabela/coleção de usuários em 1.
UPDATE users SET age = age - 1
WHERE id = 1
db.users.updateMany(
  {} ,
  { $inc: { age: -1 } }
)

Isso diminui a idade do primeiro registro na tabela/coleção de usuários em 1.

Para gerenciar MySQL e/ou MongoDB de forma centralizada e de um único ponto, acesse:https://severalnines.com/product/clustercontrol.