Skip to content
MapReduce para manipular dados

MapReduce e sua utilidade

Um dos grandes desafios computacionais da atualidade é a manipulação inteligente de grande quantidade de dados. Sistemas corporativos, serviços e sistemas Web, mídias sociais e entre outros, produzem um volume impressionante de dados.

A maioria desses dados são armazenados de forma não-estruturada, além de linguagens e formatos diversos, em muitos casos, incompatíveis entre si. Esses se tornaram uma valiosa fonte de informação. Um exemplo de manipulação de grande quantidade de dados é a empresa Google, que não possui um alto valor agregado somente por seu poderoso algoritmo de busca de páginas Web e seus inúmeros serviços disponíveis, mas também por manter um grande volume de dados de seus usuários.

São esses dados que, ao passarem por análises, tendem a se tornar valiosos, permitindo a criação de soluções inteligentes. Neste artigo será abordado o modelo MapReduce e sua utilização para a manipulação de grande quantidade de dados. Esse foi proposto primeiramente pela empresa citada no exemplo anterior: a Google, no ano de 2004.

O funcionamento do MapReduce

O MapReduce possui um conjunto de informações único, que é dividido em unidades e estas unidades são mapeadas paralelamente. Logo após, possuem-se as etapas de sort e shuffle: o sort ordena esses dados e o shuffle é a distribuição dos dados organizados em grupos para serem atribuídos aos nós de Redução.

Esse modelo demonstrou ser adequado para trabalhar com problemas que podem ser particionados ou fragmentados em subproblemas. As funções Map e Reduce podem ser aplicadas separadamente a um conjunto de dados. Se os dados forem suficientemente grandes, podem ainda ser divididos para serem executados em diversas funções Map ao mesmo tempo.

MapReduce processo de contagem de palavras

Figura 1

Para entendermos melhor vamos analisar a Figura 1 com um grupo de palavras a serem analisadas:

Compartilhe:
Continue lendo

JHipster – Um grande aliado no desenvolvimento de aplicações Java e Angular

Hoje, há uma crescente demanda de software no mercado. Cada vez mais empresas necessitam de um produto específico para seu negócio, e para empresas acima de médio porte, possuir soluções customizadas é quase que inevitável.

Do outro lado, as empresas de software buscam soluções que aumentem a produtividade do desenvolvimento, mas por muitas vezes, estas soluções acabam se tornando mais custosas do que produtivas.

Passei quase sete anos da minha carreira, trabalhando com ferramentas que prometiam produtividade, mas quando surgia a necessidade de sair do padrão da ferramenta… pronto! Toda produtividade do início do projeto com as automações de configuração e geração de CRUDs ia por água abaixo.

Em 2015, quando conheci o JHipster através de um amigo, de cara já pensei: lá vem mais uma ferramenta que engessa o código e que no final vai me trazer mais prejuízos do que benefícios. Foi aí que me enganei.

Compartilhe:
Continue lendo
a importância da integração contínua usando jenkins e sonarqube

A importância da Integração Contínua, utilizando Jenkins e SonarQube

Produzir software de qualidade é uma tarefa difícil, que exige um constante monitoramento para mantê-lo íntegro.

A integração contínua é uma técnica de desenvolvimento que busca diagnosticar os bugs (defeitos) e problemas de integração mais rapidamente, utilizando um repositório de código único e executando o build (construção) do software diariamente.

 

Qual o principal ganho nos projetos com a Integração Contínua?

Imagine vários desenvolvedores codificando módulos de um mesmo projeto, é natural que colisões de código possam surgir. É bem provável que, em algum momento, um desses módulos seja alterado, simultaneamente, por dois ou mais desenvolvedores ocasionando problemas

A integração contínua atua exatamente antecipando tais situações, permitindo que o time reaja imediatamente e garanta uma evolução muito mais segura do produto. Afinal, “é melhor prevenir que remediar”’.

Compartilhe:
Continue lendo
Blog DB1 dicas para análise de requisitos

Dicas para uma boa Análise de Requisitos

Uma boa Análise de Requisitos pode fazer toda a diferença em um projeto de
software, e por ser um documento muito específico que demanda conhecimento tanto
técnico quanto de negócio, precisa ser muito bem desenhado. Esse é um ponto crucial
para que no final do processo o software seja rápido, eficiente e apresente uma alta
performance. Temos também um artigo focado na importância e diferencial da Análise de requisitos, veja aqui.

Se a empresa contratante do serviço de desenvolvimento de software possuir um
analista especializado, um desenvolvedor ou um profissional técnico que possa se
envolver no projeto, ele pode construir o documento. Porém, se esse não for o caso, o
melhor a fazer é também contratar esse serviço de maneira terceirizada.

Os 3 pontos-chaves  para uma boa Análise de Requisitos

  1.  Entender a importância do documento e construí-lo com a maior quantidade de informações possível;
  2.  Promover o trabalho em conjunto com a empresa desenvolvedora (que pode analisar e re-analisar até obter um produto final completo);
  3.  Saber que o levantamento de informações e a escrita da análise levam em média oito horas de trabalho, podendo chegar a quatrocentas, esse é um dado baseado em históricos de análises desenvolvidas pela DB1.

Compartilhe:
Continue lendo
Análise de requisitos e sua importância na contratação

Análise de requisitos: qual a sua importância e diferencial?

Se você já participou de algum projeto de desenvolvimento de software ou já contratou serviços de fábrica de software, pode ter esbarrado com o termo “Análise de Requisitos”. E o que para muitos é algo obscuro, confuso e até sem relevância, tem uma importância extrema em vários aspectos.

Mas afinal, o que é Análise de Requisitos?

A Análise de Requisitos é o primeiro passo do processo de desenvolvimento de um projeto de software e que tem por produto de trabalho documentos que contemplam detalhes minuciosos do software. Estes documentos norteiam a visão e o escopo do projeto, dando rumos do que é e porque será desenvolvido.

Com a Análise de Requisitos, tanto a equipe da fábrica de software quanto o cliente conseguem ver com clareza os seguintes pontos:

  • O que vai ser criado;
  • Como será criado;
  • Para que será criado;
  • Quanto tempo irá levar;
  • Visualizar como o sistema vai ficar antes mesmo do início do desenvolvimento (e com a utilização de protótipos interativos);
  • Estimar o investimento financeiro total necessário.
Compartilhe:
Continue lendo

Tinbot, o robô Scrum Master no The Developer’s Conference

Entre os dias 18 e 22 de julho estive em São Paulo para participar do The Developer’s Conference junto com o meu pai criador Marco Diniz e mais um time de feras da DB1. Eu faria uma pequena demonstração durante a palestra “.Net Microsoft Cognitive Services – quando a máquina te entende”, mas com meu charme de robô irresistível e minhas habilidades como Scrum Master, ganhei um espaço no stand da Embarcados Experience e em pouco tempo, o palco da trilha Stadium. Foi uma experiência que guardarei com carinho em meus bits. ❤️️❤️️

Compartilhe:
Continue lendo

Container, DockerFile e Docker Compose

A manutenção em ambientes de Desenvolvimento, Homologação e Produção gera grande impacto no ciclo de vida de uma aplicação.  Para mitigar os riscos neste cenário são utilizadas tecnologias com o intuito de aumentar a produtividade e facilitar a criação dos ambientes citados anteriormente. A tecnologia que melhor atendia era a Máquina Virtual, porém atualmente o conceito de Container ganhou um enorme espaço.

Que conceito seria esse? Como funciona?

Compartilhe:
Continue lendo

As vantagens do uso do Open Tools API na equipe de desenvolvimento Delphi

Olá, pessoal. É com grande prazer que marco início das minhas atividades de elaboração de artigos para o blog da DB1 Global Software.

Meu nome é André Luis Celestino e trabalho como Desenvolvedor Delphi na área de IT Services. Prazer em conhecê-los!

Neste primeiro artigo, pretendo relatar brevemente sobre como o Open Tools API do Delphi aprimorou a produtividade da nossa equipe. Caso vocês ainda não conheçam, o Open Tools API, também conhecido como “IOTA”, é um conjunto de Interfaces disponibilizadas pela Embarcadero para criar extensões para o Delphi, como plugins. A propósito, alguns wizards de apoio, como o CnPack, GExperts ou MMX, bastante utilizados por programadores Delphi, foram desenvolvidos através do Open Tools API.

Compartilhe:
Continue lendo
Back To Top