Banco de Dados

9 jul, 2018

O que aconteceu no MongoDB World 2018

Publicidade

Antes de começar:

Se você não conhece o MongoDB, te convido a conhecer o meu blog DB4Beginners.com. Nele, há uma série de artigos explicando detalhadamente os recursos deste fantástico BD.

Começando

O MongoDB World é um evento anual que a MongoDB INC. organiza nos EUA. Cada ano em uma cidade diferente. Este ano foi realizado em NY, no hotel Hilton Midtown. O evento durou dois dias; no primeiro, aconteceram os workshops (pré evento) e no outro as palestras (o evento).

Participei do workshop “Data Modeling Best Practices”, e foi muito legal!

Os outros assuntos eram:

  • Migrating from RDBMS to MongoDB
  • Getting Started with MongoDB Data Analysis
  • MongoDB Security Best Practices

No segundo dia de evento, dia 27, muita coisa legal aconteceu. Destaque para o lounge “Women and Trans Coders” (um ambiente seguro, acolhedor e técnico para as minorias) e com a possibilidade de ter consultoria com os engenheiros da MongoDB em uma sessão chamada de “Ask the Experts”.

O evento tem muitas sessões técnicas feitas por funcionários da MongoDB, sessões de parceiros e sessões da comunidade.

Figura 1 – Na entrada do hotel já havia placas de indicação do evento
Figura 2 – Minha credencial
Figura 3 – Olha a fofura dos pins no cordão da credencial

Os keynotes

Me arrisco a dizer que este é um dos momentos mais esperados do evento! E com razão. Entrei no anfiteatro e sentei nas primeiras fileiras. O CEO da MongoDB Dev Ittycheria iniciou a apresentação; foi bem bacana!

Alguns parceiros falaram sobre o uso do MongoDB, e então quem assumiu foi Eliot Horowitz , CTO & Co-Founder. Coube a ele apresentar as novidades e aos engenheiros demonstrá-las. Eu estava relativamente curiosa, mas não esperava grandes surpresas.

Porém, me surpreendi! Embora as transações fossem a grande novidade, tiveram outras muito legais!

Figura 4 – CEO da MongoDB Dev Ittycheria
Figura 5 – Eliot Horowitz , CTO & Co-Founder da MongoDB
Figura 6 – Durante a apresentação do Eliot, que falava sobre as propriedades ACID
Figura 7 – Momento do anúncio que a versão 4.0 estava liberada para download
Figura 8 – Fim do keynote

As novidades anunciadas

Não conseguirei detalhar aqui todas as novidades, porque não testei todas; minha opinião ainda é de uma espectadora que viu demos bem legais. Mas acompanhem os próximos artigos!

A versão 4.0 do MongoDB estava disponível desde fevereiro era para testes, e no dia 27 de junho a versão oficial foi liberada para o público. Confesso que a primeira surpresa foi com o lançamento oficial.

As transações

A grande vedete desta versão é o suporte as propriedades ACID e transações envolvendo vários documentos. O objetivo é combinar velocidade, flexibilidade e poder do modelo orientado a documentos com as garantias ACID.

Por meio do isolamento snapshot, as transações fornecem uma visão consistente dos dados e impõem a execução de tudo ou nada para manter a integridade dos dados. A sintaxe é muito similar a dos BDs relacionais.

Veja um exemplo de código em Python:

with client.start_session() as s:
    s.start_transaction()
            collection_one.insert_one(doc_one, session=s)
            collection_two.insert_one(doc_two, session=s)
    s.commit_transaction()

Quando eu ouvi falar de transações no MongoDB pela primeira vez, eu senti medo! E vou explicar motivo:

O suporte a transações não significa que o modelo de dados usado no MongoDB deve ser igual ao modelo relacional; foi dito isso na apresentação!

Acompanhe meu raciocínio: imagine que você tem as seguintes tabelas no banco de dados relacional:

Isso não significa que no MongoDB você criará três coleções, uma para cada tabela e no processo de inclusão utilizará uma transação para garantir a inclusão das informações nas três coleções.

Cuidado com este absurdo, porque as informações provenientes das tabelas acima são representadas de forma mais adequada no documento JSON abaixo:

Nas versões anteriores do MongoDB, uma operação em um único documento já era atômica. O que significa que se você modelou o seu BD corretamente, verá que não usará transações para tudo. Lembre-se que você pode usar matrizes e documentos embeded para capturar relacionamentos entre dados em um único documento, em vez de normalizar os dados como faria em um BD relacional.

A atomicidade em um documento único elimina a necessidade de transações de vários documentos para muitos casos de uso práticos. Moral da história: as transações estão disponíveis, mas devem ser usadas no momento certo.

As transações podem ser usadas em várias operações, coleções, bancos de dados e documentos diferentes, e podem estar em um replicaset. Quando uma transação é confirmada, todas as alterações de dados feitas na transação são salvas. Se qualquer operação na transação falhar, a transação será abortada e todas as alterações de dados serão descartadas sem se tornarem visíveis. Até que uma transação seja confirmada, nenhuma operação de gravação na transação é visível fora dela.

Nota da Dani (porque isso não foi dito no evento): usar transações é fantástico, mas lembre-se de que elas podem comprometer o desempenho!

Figura 9 – A versão 4.0 tem suporte a transações em um Replicaset. A versão 4.2 terá suporte a transações em um sharding

Aggregation Pipeline Builder

Vou confessar que eu esperava fogos com essa novidade! Porque no MongoDB Compass agora temos uma forma visual e simples de usar o Aggregation Framework, o Aggregation Pipeline Builder.

Você pode adicionar estágios do pipeline de forma visual, debugar os resultados parciais, e no final ter a consulta pronta! Sem se preocupar com a sintaxe de cada um dos estágios! Agora eu digo, Aggregation Framework é vida!

Uma novidade que não me deixa tão empolgada, mas que também é útil e foi anunciada é o operador $convert, que permite a alterações de tipos de dados dentro do pipeline de agregação.

Figura 10 – Aggregation Pipeline Builder (Fonte: site da mongoDB)

MongoDB Chart (em versão Beta)

Imagine a possibilidade de criar gráficos fofos em tempo real para visualizar os dados armazenados no MongoDB, sem a necessidade de usar outras ferramentas, mover os dados, ou esperar a execução de jobs. Esta é a ideia do MongoDB Charts, e eu adorei!

Estou ansiosa para fazer os testes da versão Beta, assim confirmo se a minha empolgação tem motivo.

Figura 11 – MongoDB chart (Fonte: Site da MongoDB)

MongoDB Stitch

É a plataforma serverless da MongoDB. Eu não sou desenvolvedora, mas a apresentação fez parecer bem fácil a utilização.

Stitch QueryAnywhere

Com ele é possível trabalhar com documentos e com a linguagem de consulta do MongoDB, diretamente do seu código front-end e de aplicativos móveis.

Stitch Functions

“Permite que os desenvolvedores executem funções JavaScript simples no ambiente do Stitch, facilitando a criação de APIs seguras ou a criação de integrações com microsserviços e lógica do lado do servidor.” (MongoDB)

Stitch Triggers

São notificações em tempo real que iniciam funções em resposta a alterações no banco de dados. As triggers são baseadas no Change Stream (recurso introduzido no MongoDB 3.6). Quando você cria uma trigger, o Stitch gerencia um fluxo de mudança (change stream), fornecendo notificações em tempo real às Stitch Functions, que podem reagir de inúmeras maneiras.

Monitoração gratuita

Este era um aspecto que me preocupava: a dificuldade de monitoração. E agora ele foi resolvido, simplificando a vida dos DBAs.

Através do navegador web você consegue monitorar o seu banco de dados, usando uma ferramenta gráfica, sem a instalação de agentes, e sem expor seus dados. Somente os metadados são exibidos, e a monitoração pode ser ativada ou desativada a qualquer momento.

MongoDB Enterprise Operator para Kubernetes

Permite que você implemente e gerencie clusters do MongoDB a partir da API do Kubernetes, sem ter que se conectar separadamente ao Ops Manager.

MongoDB Mobile (versão Beta)

Imagina ter um aplicativo no seu celular. O aplicativo local gera dados, que são salvos no celular e no momento apropriado são enviados para servidor.

Este é o MongoDB Mobile! Ele oferece o poder e a flexibilidade do MongoDB em um formato compacto, com um excelente desempenho, com baixo consumo de espaço e memória. Ele suporta sistemas operacionais iOS e Android de 64 bits e é facilmente incorporado em dispositivos móveis e IoT para armazenamento local, rápido e confiável de documentos JSON.

Com indexação secundária, linguagem de consulta e agregações do MongoDB, os usuários podem consultar os dados da maneira que desejarem. Com o Stitch Mobile Sync, (em versão beta privada), é possível sincronizar as alterações de dados entre os dados mantidos localmente e o banco de dados.” (MongoDB)

Clusters globais no MongoDB Atlas

Um anúncio bacana é a possibilidade de definir controles para colocar os dados em nós específicos de um cluster. Por exemplo, se os seus clientes estão na França, você pode definir que as leituras e gravações sejam feitos no nó mais próximo para a menor latência.

Os novos Clusters Globais permitem que você implante um banco de dados totalmente gerenciado e geograficamente distribuído com gravações e leituras de baixa latência aos usuários em qualquer lugar.

Também foi anunciado o Atlas Enterprise, oferecendo novos controles de segurança, incluindo a integração LDAP, o mecanismo de armazenamento criptografado com o gerenciamento de chaves e a auditoria em nível de banco de dados.

Os novos anúncios mostram um produto bem mais maduro (minha opinião). E a MongoDB afirma que o Atlas é “o serviço de banco de dados de nuvem mais seguro disponível em qualquer lugar.”.

Conclusões

O MongoDB World 2018 foi meu primeiro evento internacional. Foi uma experiência fantástica! Além de participar do workshop, conhecer pessoas incríveis, assistir muitas palestras, ainda ganhei o prêmio de Female Innovator, e fiquei muito feliz.

A equipe da MongoDB é demais! São simpáticos, gentis e inclusivos. Adorei todos, mas preciso destacar o trabalho de algumas pessoas:

  • Danielle James: pessoa linda, com a qual tive contato durante os meses que antecederam o evento, e também a responsável pelo lounge “Women and Trans Coders”.
  • Marissa Chiaco: super gentil e paciente, foi responsável por vários aspectos do meu prêmio e da minha bolsa de estudos;
  • Jahira: querida e que fala português maravilhosamente bem. Foi extremamente solicita e gentil durante todo o evento;
  • Jay Gordon: uma pessoa incrível e que está fazendo um trabalho bem legal com as comunidades de usuários do MongoDB.

Podemos tranquilamente comparar um evento global, que aconteceu em NY com os nossos eventos. E isso me deixou bem feliz! O Intercon, PHP Experience, PGConf, DBA Brasil, TDC, MVP Conf, VSSummit, Women Dev Summit, entre outros, são eventos de nível internacional, sem a menor dúvida!

Quanto às novidades, a intenção do artigo foi dar uma visão geral. Aguardem as “cenas dos próximos capítulos”, onde detalharei cada uma delas.

Figura 12 – Selfie no painel da MongoDB: claro que sim!
Figura 13 – Momento celebridade
Figura 14 – O dia em que eu me encontrei! (piada infame, mas não podia perder a chance)
Figura 15 – Com o Jay Gordon – que entre outras coisas é Community Manager na MongoDB
Figura 16 – Com Leandro Domingues e Eliot Horowitz
Figura 17 – Com a superr querida Danielle James

Referências