terça-feira, 21 de abril de 2009

Oracle X Sun, e o Mysql?

De acordo com os anúncios da midia após a IBM desistir de adquirir a Sun, a Oracle anunciou a intenção de aquisição.

O que mais me deixa curioso é o futuro do Mysql, apesar de pouco contato com o produto ele possui uma participação expressiva no mercado de soluções embarcadas , principalmente nos pequenos ISVs.


Vejam alguns numeros sobre o Mysql:

- 70.000 Downloads por Dia!!
- Mais de 12.000.000 de instancias em producao!! (Claro que isto inclui as instalacoes open-source).

Se a IBM tivese comprado a Sun com certeza o Mysql seria continuado, pois este e o perfil da IBM, manter software legado , o Mysql seria integrado a Divisao de IM e iria coexistir com o DB2 e Informix, com este cenário seria possivel que a IBM voltasse para a primeira posição no market share de bancos de dados.

Em relação ao suporte do Mysql, quando a empresa foi adquirida pela Sun muitas pessoas de suporte e desenvolvimento se desligaram da empresa, inclusive um dos fundados (monty) foi atuar em uma empresa startup e agora se dedica ao MariaDb.

Inclusive o próprio monty ja postou algo em seu blog:
http://monty-says.blogspot.com/2009/04/to-be-free-or-not-to-be-free.html

Com esta aquisição a Oracle abocanhou 2 tecnologias open-source de uma só vez, que foram o Java e o Mysql, agora a coisa fica menos interessante para a SAP e IBM que pregam o uso de java extensivamente.

Historicamente falando de tecnologia de banco de dados a Oracle ja Adquiriu:

- RDB da Digital , foi o que deu muita base para o OPS (Parallel Server)
- Berkeley DB
- Timesten (In-memory database)
- Mysql

Agora a Oracle se torna uma empresa completa com soluções que vão de Hardware, Software para infra-estrutura a ERP etc.

Sera que agora a Oracle quer ser a Digital Corporation e peitar a IBM?

Vamos aguardar as cenas do próximo capitulo.

Vagner

segunda-feira, 6 de abril de 2009

Alter In-Place

Alter In-Place é uma daquelas features que ninguém sabe que existe até no dia que é preciso fazer um alter table no Oracle ou Db2.

Veja a tabela abaixo:

create table tabela1
( codigo integer,
campo1 char(30)
)

Aqui neste ponto insermos 10GB de dados na Tabela!!!

Agora por uma mudança na área de negócio a tabela irá receber mais uma coluna, porém ela será criada antes da coluna campo1.

alter table tabela1
add (novo_campo integer) before campo1;

Quanto tempo o Informix demorou para adicionar uma coluna na tabela? 1 Segundo!!!

Como isto é possivel magia negra? Não, pra quem é safo sabe que o Informix apenas fez o versionamento da estrutura da tabela, os dados antigos estão com a mesma estrutura, os novos inserts farão com que os dados sejam inseridos no novo lay-out.

Se é tão fácil assim porque no Oracle/Db2 tenho que recriar a tabela para fazer este tipo de alteração?

É simples, nos outros RDBMS a estrutura da tabela é armazenada fisicamente no mesmo bloco com os dados, isto é bom se olharmos no caso de um crash onde a partition page seja destruida, os dados continuam no disco e é possivel extrair com as ferramentas de suporte avançado.

Então a estrutura do Informix é pior?

Claro que não, o produto foi projetado para operar com esforço reduzido de administração, com este tipo de feature é possivel criar appliances (soluções) onde não é necessário intervenção manual.

Resumindo um bom Arquiteto de Soluções ou um bom Desenvolvedor pode criar soluções embutidas e espalhar sua solução por ai sem ter que se preocupar com o banco de dados.

Se eu escrevo solução embarcada porque não usar Mysql ou Postgress?

Bom o Mysql acabou de ser adquirido pela Sun, o Postgress é questão de tempo até alguem adquirir, o sonho do open-source acabou, só é bom para o fornecedor que economizou milhões em pesquisa e desenvolvimento que foi feito pela comunidade open-source.

Voltando ao comando alter table do Informix, existem três tipos de alter in-place:

Slow Alter

Neste caso o Informix efetua o reorg da tabela inteira, caso a tabela seja muito grande pode-se correr o risco de long-transaction, um exemplo pode ser um alter table que altera o tipo de dados de uma coluna de varchar(20) para char(40).

In-Place Alter

Quando ocorre alteracao na estrutura da tabela e o Informix efetua o versionamento do layout, assim nao executando reorg da tabela.

Fast Alter

O fast alter ocorre quando:

- ocorre alteracao do next extent size
- uma constraint é criada ou dropada
- o lock mode da tabela é alterado
- um atributo da tabela é alterado para único.

Como sempre quem quiser mais informações sobre alter in-place acesse:
http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp

O objetivo deste post foi por em cena uma feature bacana que muitas vezes ninguém nem sabe que existe.