quarta-feira, 29 de julho de 2009

Será que não é possivel utilizar o Base do OpenOffice em ambiente multi-utilizador?


Em primeiro lugar - numa forma, ou, mais precisamente num contexto, está correto.

Este contexto particular, é quando se utiliza uma base para criar todos os arquivos, isto é, os formulários, consultas, relatórios e as próprias tabelas de armazenamento de dados num único arquivo. Só que este não é o único contexto em que o Base pode ser utilizado.

Antes de falar do Base num ambiente multi-utilizador, porém, vamos perder um minuto com o MS Access a trabalhar no mesmo ambiente.

O MS Access também pode ser utilizado como um monolítico arquivo contendo os formulários, consultas, relatórios, tabelas e base de dados e código VBA. É possível construir esse arquivo e colocá-lo numa unidade compartilhada e mapear outros PC's de forma que os mesmos possam “ver” este arquivo e, ao fazê-lo, ter múltiplos utilizadores a partilhar o acesso a essa base de dados. Mas isso coloca uma grande sobrecarga sobre a rede e sobre o computador que hospeda o arquivo. Nessa configuração o número real de utilizadores a que se pode dar privilégios de leitura/gravação e acesso simultâneo à base de dados da aplicação é bastante limitada.

Na verdade, não é considerada a forma adequada para implementar um sistema multi-utilizador MS Acccess. Pelo contrário, é comum a rotina de o dividir em front end (formulários, consultas, relatórios e código VBA), e back-end (tabelas de armazenamento de dados reais) acabando por criar dois arquivos separados fisicamente.

Normalmente, isso produz um arquivo *. mdb (ou *. accdb), o "back-end", que depois é armazenado no disco partilhado e um ou mais arquivos *. mde , os "front-end" .Ideal para efeitos de desempenho e para aumentar o número de utilizadores simultâneos que podem ser suportados num arquivo *. mde separado .

A Microsoft criou uma série de ferramentas só para ajudar a fazer isso e dedicou uma boa parte do espaço nos seus sites de apoio ao MS Access explicando como usar e como implantá-los desta forma. Juntamente com estas ferramentas Microsoft também fornece as ferramentas necessárias para o “upsize” da sua base de dados *. mdb ou *. accdb (o seu backend) para SQL Server, contendo os dados reais .

Então - agora vamos olhar o Base.

O OpenOffie.org Base é, arquitectonicamente, diferente do MS Access no que diz respeito à base de dados e ao motor utilizado.

O MS Access pré 2007 tem sempre o MS Jet Database Engine envolvido, mesmo quando se está 'ligando' através para uma base de dados SQL Server.

Essa é a velha arquitectura *. mdb. Nas últimas versões do MS Access utilizando o tipo de arquivo *. accdb o motor já não é MS Jet, mas ainda é um único motor que está sendo utilizado, enquanto um arquivo *accdb é usado.

No Base, por outro lado, é o arquivo *.odb que contrata directamente uma ligação a uma base de dados. O motor de base de dados é o HSQLdb RDBMS, distribuído com OpenOffice.org, capaz de armazenar as suas tabelas embutidas no arquivo *.odb. Mas, fundamentalmente, o Base está tratando isto como apenas mais uma opção para um motor de base de dados - de modo que se poderia, facilmente, ter uma base de dados HSQLdb ,utilizando o motor , funcionando em modo de arquivo em disco, com os dados armazenados no arquivos separados num diretório, ou correr, como uma rede acessível partilhada num 'servidor'. Pode-se também usá-lo para se conectar a qualquer motor de base de dados ( JDBC ou ODBC ou ADO)

Ao usar o Base, para "ligar" a uma rede de base de dados destes motores (que poderia ser realmente no seu localhost), o arquivo *.odb preenche , na realidade,o mesmo papel que o arquivo MDE no MS Acess. Por outras palavras, permite que se armazenem os formulários, consultas, relatórios e, após o OpenOffice. 3.0, as bibliotecas de script, directamente dentro do arquivo. Com as anteriores versões do OpenOffice(e ainda no 3.0, se se quiser), os scripts eram armazenados em separado, em biblioteca de arquivos compartilháveis.

Nesta implantação multi-utilizador do Base poder-se-á colocar uma cópia deste arquivo *.odb em cada computador que esteja usando o base de dados aplicativo. Mais uma vez, isso é análogo ao regime recomendado para implantação MS Access também oferece a capacidade de cada utilizador criar as suas próprias cópias locais de consultas e relatórios.

Existe porém uma diferença, isto é, quando os *. mdb ou *. accb do arquivo de compartilhamento é usado pelos diferentes arquivos *. mde existe um intermediário de dados do motor a ser utilizado (MS Jet, por exemplo) mas quando se implementar os arquivos *.odb em várias máquinas a ligar a um servidor de rede de dados é a ligação directa - não há meio passo para os dados a tomar.

A próxima diferença é de custo, evidentemente. No caso do MS Access é dizer que cada utilizador tem que ter uma licença para o MS Access ou que exista uma licença para desenvolvimento e distribuição das suas base de dados. Se se desejar utilizar o SQL Server como base de dados então tem-se o custo da base de dados e os custos de um servidor MS Windows para a executar. (Até podemos supor que um deles já exista)

Para OpenOffice.org e Base. 5, 10 ou 100 utilizadores, realmente não interessa.

Assim - Base em um ambiente multi-utilizador? Sim - ainda não é comum e, de certeza, existem lacunas no conjunto, em comparação com MS Access, mas a aplicação é um conjunto muito mais à frente hoje em dia, do que foi quando se estreou com o OpenOffic 2.0 e, com o 3.1 e extensões disponíveis, como o Sun Report Builder, não será preciso esperar demasiado para que haja uma muito simples e directa resposta a essa questão - simplesmente - "Sim, pode-se fazê-lo" - o facto é que a resposta é – "Sim pode-se fazer isso hoje, mas você vai ter em mãos uma tarefa árdua..."

(Tradução livre de texto em inglês.Veja o original aqui)