sábado, 21 de abril de 2012

Banco de dados - NoSQL (Parte 02) - Resenha do dia 16/04/12

NoSQL

NoSQL são diferentes sistemas de armazenamento que vieram para suprir necessidades em demandas onde os bancos de dados tradicionais (relacionais) são ineficazes. Muitas dessas bases apresentam características muito interessantes como alto desempenho, escalabilidade, replicação, suporte à dados estruturados e sub colunas.

Os atuais bancos de dados relacionais são muito restritos a isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto mais dados, mais memória e mais disco um servidor precisa. O NoSQL tem uma grande facilidade na distribuição horizontal, ou seja, mais dados, mais servidores, não necessariamente de alta performance. Um grande utilizador desse conceito é o Google, que usa computadores de pequeno e médio porte para a distribuição dos dados; essa forma de utilização é muito mais eficiente e econômica. Além disso, os bancos de dados NoSQL são muito tolerantes a erros.

No caso dos bancos NoSQL, toda a  informação necessária estará agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento entre várias tabelas para formar uma informação, ela estará em sua totalidade no mesmo registro.

Mas qual a diferença entre bancos de dados relacionais e NoSQL?

Banco de dados Relacionais

O que é: baseia-se em que todos os dados estão guardados em tabelas, pelo conceito de entidade e relacionamento. Os dados são separados de forma única, tentando diminuir ao máximo a redundância, pois a informação é criada pelo conjunto dos dados, onde são as relações entre as tabelas que fazem esse serviço.
Características: tabelas, schema definido, hierarquia, redundância mínima, entidade e relacionamento, formas normais, transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade).
Necessidades: sistemas locais, financeiros, corporativos; segurança da informação; consistência dos dados.
Cases: SAP, OpenERP, Previdência Social, Caixa, Itaú, Salesforce, Vale.

Banco de Dados NoSQL

O que é: uma solução alternativa para os bancos de dados relacionais, possuem uma alta escalabilidade e desempenho
Características: registros, schema-free, tolerância à falha, escalabilidade, clusterização, mapreduce, sharding.
Necessidades: sistemas em nuvem, análises sociais, alta escalabilidade, performance na consulta/escrita, replicação.
Cases:Twitter,Facebook, Digg, Amazon, LinkedlN, Google, Yahoo, The New York Times, Bit.ly.

Alguns exemplos de quando usar NoSQL
- Logging/ArquivamentoInsight em computação social.
- Integração de feed de dados externos.
- Sistemas de processamento de pedidos Front-end.
- Serviço de gerenciamento de conteúdo empresarial.
- Estatísticas/análises em tempo real


Banco de dados - SGBDs Relacionais (Parte 01) - Resenha do dia 16/04/12





SGBDs Relacionais
Desde sua criação no início dos anos 1970, o Modelo Relacional de dados tem sido utilizado em larga escala pela grande maioria dos sistemas de gerenciamento de banco de dados. Tendo surgido como sucessor dos modelos hierárquico e de rede, o modelo relacional tornou-se padrão para a grande maioria dos SGBDs (Sistemas Gerenciadores de Banco de Dados), tais como o SQL Server, Oracle, PostgreSQL, MySQL, etc. 
Seus elementos básicos são as relações (ou tabelas), as quais são compostas de linhas (ou tuplas) e colunas (ou atributos).Os dados estão estruturados conforme esse modelo. Outra característica fundamental desse modelo é a utilização de restrições de integridade. Esses elementos são utilizados para garantir que a integridade dos dados seja mantida. As restrições de integridade mais comuns são as chaves, mais especificamente, as chaves primárias e as chaves estrangeiras. 


A chave primária tem o objetivo de assegurar a identificação única das tuplas das tabelas. A chave estrangeira torna os valores de determinado atributo dependentes dos valores existentes em outro atributo, normalmente de outra tabela. Outra característica importante do Modelo Relacional é o processo de Normalização. Seu objetivo é a aplicação de certas regras sobre as tabelas do banco de dados, de forma a garantir o projeto adequado dessas tabelas. Uma característica básica da normalização consiste na separação dos dados referentes a elementos distintos em tabelas distintas, associadas através da utilização das chaves. 


Adicionalmente, o modelo relacional passou a adotar como linguagem de definição, manipulação e consulta de dados a SQL (Structured Query Language). Os SGBDs relacionais oferecem aos usuários processos de validação, verificação e garantias de integridade dos dados, controle de concorrência, recuperação de falhas, segurança, controle de transações, otimização de consultas, dentre outros. A utilização de tais recursos facilitou a vida dos desenvolvedores de aplicações, possibilitando que estes pudessem se preocupar exclusivamente com o foco da aplicação. Como um dos conceitos mais básicos do modelo relacional, as chaves representam uma forma simples e eficaz de associação entre as tabelas do banco de dados. 
A chave primária foi criada com o objetivo de identificar de forma única as tuplas da tabela e ainda de determinar a ordem física dessas tuplas. A chave estrangeira permite uma relação de dependência entre atributos de tabelas distintas, de forma que os valores permitidos em um atributo dependam dos valores existentes em outro atributo. Tais recursos são amplamente utilizados em bancos de dados relacionais e servem como base para a utilização de outros componentes, como é o caso dos índices. Estes elementos tornaram-se padrão para todo tipo de tabela por propiciarem um significativo ganho de desempenho no processamento de consultas. 


Além desses componentes, os SGDBs Relacionais possibilitam que múltiplos usuários possam acessar e manipular um mesmo banco de dados simultaneamente de forma eficiente, recurso indispensável para sistemas de grande porte. Outra característica importante dos SGDBs relacionais consiste na possibilidade do sistema se recuperar de forma adequada de possíveis falhas. O sistema tem a capacidade de retornar ao ponto anterior a falha ocorrida, garantindo que o banco permanecerá em um estado consistente. 
Todos esses recursos ajudaram a manter os SGDBs Relacionais em posição de destaque entre os mais diversos tipos de ambientes computacionais, mas não impediram o surgimento de certos problemas, principalmente devido ao crescimento vertiginoso do volume de dados presentes nos bancos de certas organizações.

domingo, 8 de abril de 2012

Extensão em computação (resenha do dia 09/04/12)


Como dito no site do Departamento de Ciência da Computação da UFBA,  os projetos de extensão constituem o espaço do exercício da função de vincular ensino/pesquisa e sociedade,  articulando a Instituição com os diversos segmentos sociais, tais como entidades governamentais, setor privado, comunidades, movimentos sociais, público consumidor de conhecimentos, artes e serviços. Desta forma, os projetos de extensão atualmente em curso na UFBA vêm priorizando as metas definidas pelo Plano Nacional de Extensão do Ministério de Educação. As atividades de extensão em computação são:


1. Projeto Criptografia e Computação Quântica.  (parceria entre o Departamento de Ciência de Computação e o Departamento de Matemática da UFBA)


 Essa área estuda métodos para processar computacionalmente a informação armazenada em estados quânticos. O projeto tem duas vertentes de ação: a primeira consiste na criação de um grupo de especialistas em informática quântica. O grupo, a ser criado, terá entre seus principais objetivos a realização de um curso e eventos científicos visando a formação de massa crítica no estado para pesquisas nesta nova fronteira tecnológica. A segunda vertente objetiva a realização de pesquisas fundamentais na área de Informação Quântica visando a construção de novas chaves (gates) lógicas quânticas e de novos algoritmos quânticos. O projeto visa dar o primeiro passo rumo ao estabelecimento futuro de uma rede estadual de pesquisa em Informação Quântica, visando justamente agregar e coordenar esforços no estado da Bahia.


2. Curso de Extensão em Software Livre.  (parceria entre Colivre, DCC, e SaferNet Brasil)


 Este projeto de extensão do DCC visa difundir o conhecimento tecnológico por meio da realização de cursos que envolvem direta ou indiretamente softwares que utilizam licenças livres. Desta forma, pretende-se suprir uma demanda de capacitação técnica oriunda da sociedade baiana em geral e, particularmente, da comunidade acadêmica para a apropriação dos softwares livres.


3. Programa Onda Digital. 


 O Programa Onda Digital é um projeto universitário, idealizado com o intuito de envolver professores, estudantes e funcionários da Universidade Federal da Bahia (UFBA) no processo de inclusão sócio-digital. O programa é coordenado pelo Departamento de Ciência da Computação (DCC). A missão desse programa é contribuir no processo de inclusão sócio-digital na Bahia, envolvendo a Universidade em ações educativas, sociais, culturais e de difusão da filosofia do software livre.