2007-10-30

OpenSolaris Starter Kit

Acabei de encomendar o OpenSolaris Starter Kit (2 DVDs).

Quem quiser pode seguir este link para pedir também este conjunto. No kit vem incluido o OpenSolaris Express e alguns LiveCDs com distribuições criadas pela comunidade.

Daqui a algum tempo veremos que tal é na prática :)

Até breve !

2007-10-28

Mudança da Hora

Cumpriu-se esta madrugada (dia 28 de Outubro de 2007) mais uma vez, um dos mais inúteis rituais da nossa sociedade: A Mudança da Hora !

Para que serve tal descalabro ? Para acordarmos no Domingo, meio atarantados com os horários, correr a casa a alterar a hora dos 527 relógios (incluindo relógios de equipamentos como o leitor de DVD, e afins...), verificar se os nossos computadores sabem a quantas andamos, etc e tal... só para em Março do ano seguinte repetirmos tudo isto, de modo inverso !

A mudança da hora é uma característica da nossa "Hora Legal" que eu sinceramente não percebo como ainda está em vigor. A motivação económica que presidiu à criação deste mecanismo de alteração da Hora de Inverno e da Hora de Verão, embora pudesse ter tido valor no início, já não se justifica. Alguns estudos apontam mesmo algum aumento de consumo de energia devido aos aparelhos de refrigeração (ver artigo sobre o tema em http://en.wikipedia.org/wiki/Daylight_saving_time).

Um efeito cada vez mais perturbador desta mudança é a complexidade aumentada em Sistemas de Informação e software, especialmente se lidam com vários fusos horários que, potencialmente, têm diversos limites das Horas de Verão e Inverno. À medida que aumenta a nossa dependência destes sistemas maiores riscos corremos de haver um erro ou condição que perturbe o funcionamento dos ditos sistemas, causando perdas de dados e, consequentemente, acarretando custos para a sociedade. No artigo da Wikipédia refere-se um custo de 500 a 1000 milhões de dólares para a alteração das regras de mudança de hora em 2007.

Para terminar, respondam a uma das perguntas:
- Onde estava às 01:35 de 28 de Outubro de 2007 ;
- o que estava a fazer às 02:20 de 25 de Março de 2007.

Quem conseguir responder correctamente, merece um prémio !

2007-10-27

Genealogias

No artigo da Wikipédia, http://en.wikipedia.org/wiki/Linux_distribution sobre distribuições de linus, podemos ver

uma imagem que representa a "genealogia" das distribuições Linux, desde 1992 até 2007. Uma vista rápida permite-nos

concluir que hoje o "mundo" linux está dividido em três famílias, com origem em três distribuições distintas: As

distribuições Debian e Slackware, de 1993 e a RedHat, de 1994.

Hoje em dia temos as famílias de cada uma representadas por (não contam mudanças de nome das distribuições):

  • RedHat - 53 distribuições, das quais 39 ainda activas
  • Debian - 41 distribuições, das quais 35 ainda activas
  • Slackware - 26 distribuições, das quais 23 ainda activas

De entre as diversas distribuições que não são parte de nenhuma família ou têm uma família muito reduzida, temos a

SLS de 1992, entretando desaparecida e percursora da Slackware, a DLD de 1993 entretanto integrada na família RedHat

e mais cerca de 30 distribuições, das quais metade já desapareceram.

Das distribuições portuguesas apenas aparece a Caixa Mágica, descendente do SuSE.

Optimizações

Ao fazer a análise a uma Base de Dados para resolver problemas de performance ou optimizar as queries que são realizadas, começamos, normalmente, por verificar quais as queries mais lentas, que levam mais tempo a executar, de modo a actuar nessas queries.

Ora, além do tempo de execução das queries, temos também que analizar a "big picture", isto é, a actividade geral do sistema e o número de vezes que cada uma dessas queries é executada num determindao período de tempo.

Vamos a um exemplo concreto:
- Um sistema que analisei tinha problemas de performance (tempo de resposta) na Base de Dados. Após obter uma lista das queries que estavam a demorar mais de 10 segundos a executar, verifiquei que havia algumas que demoravam mesmo mais de 60 segundos em tempo de execução.
- Ao verificar o número de vezes que cada query corria no período em análise,foi fácil verificar que era mais preocupante uma query que estava a demorar entre 10 e 20 segundos que as que demoravam mais tempo, e isto porque essa query era executada cerca de 30 vezes mais que a que demorava 60 segundos !!
- Após algumas mudanças no sistema, que dispensaram 99% das execuções dessa dita query, o número de queries que ultrapassaram os 10 segundos de execução caiu para menos de um quinto, no mesmo período da análise anterior !!

Conclusões:
- Muitas vezes ganha-se mais em actuar numa query relativamente "normal" que é executada muitas vezes que procurar optimizar logo uma queriy muito longa;
- Ao optimizar um sistema, neste caso uma Base de Dados, a solução pode estar "fora" da Base de Dados, ou seja, podemos actuar noutro ponto do sistema e obter ganhos de performance na Base de Dados;


Até breve !

2007-10-24

Versatilidade

Ao ver o site com a lista dos 500 mais poderosos computadores do mundo, reparei que o sistema operativo mais usado nessas "maquinetas" é o Linux, com 398/500 (78%), o que faz do Linux um sistema no mínimo versátil, pois tanto equipa sistemas com processadores "embedded", tipo telemóveis e afins, como é usado pelo BlueGene/L de 131000 processadores que detém o recorde de computador mais rápido do mundo !!

As Gordas

Um projecto recente que merece uma visita: http://letrasgordas.ignitiva.com/ é um espaço onde se podem passar os olhos pelas "Gordas" da net, ou seja, uma espécie de RSS reader no browser, com a particularidade de ser configurável (não necessita de registo) e podermos escolher de uma lista de fontes a acompanhar. Para já as fontes constam de uma lista fixa, mas pode ser que mude.

Fica a imagem, para aguçar o apetite :

Até breve

2007-10-23

Mudanças no blog

Hoje reparei que as visitas passaram a marca psicológica do milhar... obrigado a todos.

Resolvi incluir anúncios do Google neste blog. Espero que não sejam demasiado intrusivos...

2007-10-20

As Maiores Bases de Dados

Tenho andado às voltas na net à procura de dados sobre bases de dados, isto é, informações, o mais fiáveis possível, sobre as dimensões e características das maiores bases de dados em utilização.

O melhor estudo que consegui encontrar foi um realizado em 2005 pela empresa Winter Corp, disponível em www.wintercorp.com/VLDB/2005_TopTen_Survey/TopTenwinners.asp.

Este estudo resulta de um inquérito feito a diversas empresas e entidades em todo o mundo e reflecte as informações de bases de dados em uso real. Claro que só respondeu quem quis, portanto pode não representar fielmente a realidade. Se alguém souber de um melhor e/ou mais actual, agradeço a comunicação.

Analisando as informações disponíveis, podemos tirar algumas conclusões interessantes:

As maiores BD são dedicadas a Data Warehousing, ou seja a sistemas de suporte à decisão. Neste estudo a maior BD para Data Warehousing chega-se aos 100 TiB (98 TiB) enquanto que a maior Base de Dados em OLTP atinge "apenas" 22,5 TiB (cerca de 4,5 vezes menos). Existem outras Bases de Dados que não se encaixam nestas categorias e que estão normalmente ligadas a projectos científicos, tal como a BD do Instituto Meteorológico de MaxPlanck com mais de 200 TiB de Dados e a do Stanford Linear Accelerator Center, da Universidade de Stanford, que conta já com mais de 800 TiB de dados, de acordo com esta informação. De notar que este último valor é recente e não está incluído no estudo da WinterCorp.

Analizando por plataforma, em Data Warehousing, (divididas entre Linux, Unix e Windows), vemos que as maiores Bases de Dados estão em sistemas Unix com cerca de 370 TiB nos dez maiores, depois temos os sistemas Windows com cerca de 75 TiB e por fim o Linux com pouco mais de 60 TiB (embora neste caso apenas tenham respondido 8 entidades). Em OLTP temos uma predominância de sistemas mainframe clássicos (especialmente IBM z/OS), Unix e alguns Windows. O Linux não faz parte dos dez maiores nesta categoria. Nas bases de dados de outras categorias, aparecem apenas 5 entidades, com um total de 253 TiB, distribuidos entre Linux, Unix e NonStop OS.

Se considerarmos os dados na sua forma normalizada (descomprimidos, sem índices, etc...) o cenário altera-se um pouco, já que os 100 TiB do Yahoo! se transformam em cerca 17 TiB depois da normalização e os 92 TiB da AT&T "incham" até aos 320 TiB !!

Em número de registos (Row Number), as maiores tabelas pertencem à operadora de telecomunicações americana Sprint, com mais de 2,5 triliões, seguida pela AT&T com 1,8 triliões, na categoria de Data Warehousing. Em OLTP, a maior fica-se pelos 89 milhões de linhas.

Finalmente, avaliando a posição dos fabricantes de Bases de Dados, temos na categoria de Data Warehousing a Oracle "ocupa" 164 TiB dos 370 TiB das dez maiores, seguida pela AT&T (com um produto desenvolvido "in-house") com 117 TiB e pela IBM (DB2 em Unix) com 67 TiB. Nesta categoria o SQL Server da Microsoft "vale" 19 TiB e o da Sybase 17 TiB. Na categoria de OLTP temos mais equilíbrio entre os vários vendedores, com 34 TiB para a Oracle, seguida pela IBM (DB2 em z/OS) com 32 TiB e Microsoft com 21 TiB. Na categoria de "outras" a Oracle domina com 252 TiB, seguida pela HP com uma instalação no límite mínimo para o estudo (1 TiB).

Por último, é de notar a ausência de Bancos e outras instituições financeiras, que são conhecidas portambém terem algumas das maiores Bases de Dados do mundo. Outra ausência de nota é a de aplicações Open-Source. Talvez um próximo estudo revele algumas alterações a este panorama...

2007-10-17

SQL - Standards e Implementações

Hoje, ao deambular pela net, encontrei um site muito interessante, pelo menos para quem gosta destas coisas de Bases de Dados, que faz a comparação entre as implementações de SQL de alguns dos mais comums SGBD, nomeadamente PostgreSQL 8.2.0, IBM DB2 Express-C v9.1 LUW, Microsoft SQL Server 2005, MySQL 5.0.18 e Oracle 10g R2. Outras comparações podem ser encontradas na wikipédia, em http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems e nas referências do primeiro artigo.

Da leitura destes artigos vê-se que existem grandes diferenças de implemtação do standard SQL:2003 e até características aparentemente tão simples como o tipo de dados CHAR pode ter comportamentos diferentes entre os vários sistemas. Daqui se conclui que é muito difícil escrever uma aplicação em que a camada de acesso a dados seja genérica, o que leva a que as aplicações estejam muitas vezes ligadas a,e dependentes de, um SGBD particular. Por vezes, existem diferenças comportamentais até entre versões diferentes do mesmo SGBD.

O melhor que se pode tentar conseguir é usar as potencialidades de cada sistema através de procedimentos e linguagens embebidas nos SGBD (tais como PL/SQL em Oracle ou pgPlSql em PostgresSQL) e criar uma camada de acesso via esses procedimentos, para que se afastem as especificidades do armazenamento de dados o mais possível da lógica da aplicação. Com este processo ganha-se em versatilidade, segurança e clareza da arquitectura da aplicação.

2007-10-09

Picuinhices com dados

Uma Base de Dados Relacional não é apenas um conjunto de dados "arrumadinhos" em tabelas, obedece a uma teoria matemática baseada na lógica de predicados e teoria dos conjuntos. Esta teoria é conhecida como o Modelo Relacional e foi descrito em 1969 por E.F.Codd, numa publicação para consumo interno da IBM, e em 1970 num artigo público.

Hoje em dia, a maioria dos sistemas profissionais de gestão de bases de dados (tanto comerciais como open-source), implementam este Modelo, portanto têm como base para a forma como guardam e acedem aos dados uma construção matemática já bem conhecida.

Portanto, ao desenhar ou desenvolver uma Base de Dados, devemos sempre procurar aproximarmo-nos do modelo matemático e não afastarmo-nos dele. Ao seguir com rigor este modelo e escolher uma implementação de qualidade do mesmo (o SGBD), podemos estar certos que os problemas de performance associados a uma determinada aplicação não se deverão atribuir a "mau desenho" da Base de Dados. Desta maneira, eliminam-se as "desculpas" para des-normalizar, para criar dados redundantes e outros artifícios que tais...

Tudo isto é válido numa lógica de OLTP, ou seja,em Bases de Dados que servem essencialmente sistemas de transacções, tais como sistemas de venda, de recolha de dados de produção, etc. Para sistemas que suportam Sistemas de Apoio à Decisão o caso é outro, mas fica para a próxima...

2007-10-01

Sistemas operativos: 2017

Um dos aspectos da agregação deste blog ao Planetgeek(link) é a definição de um "Tema do Mês", que pressupõe que todos os blogs agregados escrevam um artigo sobre esse tema, a ser publicado no início do mês.

O tema deste mês (Outubro) incide sobre uma possível antevisão dos Sistemas Operativos num prazo de dez anos.

Como é mais ou menos evidente, penso que os sistemas operativos da próxima década irão ser desenvolvidos de modo a aproveitar as características dos processadores entretanto já desenvolvidos, tais como virtualização por hardware, multíplos núcleos de processamento, sistemas com dezenas de GiB de memória RAM, interfaces multi-touch ou por voz, etc...

Ainda assim, não deve haver grandes alterações no panorama global do mercado de sistemas operativos, que continuará a ser dividido entre os concorrentes actuais. Evoluções futuras do lado de Redmond, dos Pinguins e do pessoal da Maçã, irão no sentido de transitar os sistemas para os 64-bits, eventualmente eliminando o código de 32-bit ainda existente. A consequência destas evoluções será a disponibilidade de recursos para as aplicações, nomeadamente em espaço de endereçamento da memória, que tornarão possíveis sistemas capazes de trabalhar com maior quantidade de informação ao mesmo tempo. Isto significa, melhores (e maiores) videojogos, ambientes gráficos estonteantes e outras "ajudas" à produtividade geral...

No fim de contas, o que interessa são os dados dos utilizadores, o Sistema Operativo é um meio e não um fim (pelo menos para a maior parte dos utilizadores).


Já agora, numa tentativa de futurologia, deixo aqui algumas características dos sistemas operativos em 2017:

Microsoft - Windows Cataract (tb conhecido como Windows "Será que é desta?")
Finalmente inclui a nova versão do Sistema de ficheiros, o famoso WinFS (afinal, notícias de última hora revelam que ainda não é desta que o WinFS ficou pronto a tempo... mantém-se o NTFS com mais uns remendos...). Inclui também o suporte para multi-touch (só para dispositivos certificados, uma vez que o CEO da MS gerou um écran azul na apresentação pública desta funcionalidade). O suporte para comandos por voz será lançado com o SP1, para o final do ano que vem (se tudo correr como planeado). Ainda mantém a camada de código de compatibilidade com 32-bit, uma vez que alguns comandos ainda não foram actualizados para a nova API.

Linux - Kernel versão 2.12
Segundo Linus Torvalds, "ainda não há necessidade de marcar este código como versão 3, pois é apenas uma extensão do que já havia, não havendo nada que quebre a compatibilidade...". Esta versão do kernel foi portada com sucesso para mais algumas arquitecturas, nomeadamente os processadores da Playstation 6 e da Nintendo Wii 4.
Como de costume, a versão 17.10 da distribuição Ubuntu ("Linux for human beings and alike") irá incluir esta versão do kernel.

Apple - Mac OS X, v. 10.26 (Nome de código "Lince da Malcata")
Mais uma versão do bem sucedido Sistema Operativo da empresa de Steve Jobs, especialmente dedicado ao novo dispositivo multifunções da Apple, o iSwissArmyKnife. Com capacidades multimédia e cheio de estrondosos efeitos gráficos, prevê-se que seja um sucesso nos consumidores fiéis à marca (cerca de 0.05% do mercado).


Vamos a ver quantas destas suposições serão verdade, daqui a dez anos...