Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice
Captulo 4 CAPTULO 4 CRIAO RPIDA DE APLICAES DE ALTA PERFORMANCE WEB COM CACH SERVER PAGES (CSP)
O Modelo Cach Server Pages Arquitetura de Classe de Pginas Web Estratgias Mltiplas de Desenvolvimento Arquivos CSP Hipereventos (Hyper-Events) Intersystems Zen & Web Pages Baseada em Componentes 52 54 54 55 56 58
Introduo
Introduzindo o Cach
O Cach da InterSystems uma nova gerao da tecnologia de banco de dados de desempenho ultra elevado. Ele combina uma base de dados objeto, SQL de alta performance e acesso poderoso a dados multidimensionais todos podendo acessar simultaneamente os mesmos dados. A informao descrita somente uma vez em um dicionrio de dados nico integrado e ca instantaneamente disponvel atravs de todos os mtodos de acesso. O Cach supre nveis de desempenho, escalabilidade, programao rpida e facilidade de uso que so inatingveis atravs de tecnologia relacional. O Cach , no entanto, muito mais do que um banco de dados. Ele possui tambm um servidor de aplicaes com capacidade avanada de programao de objetos, a habilidade de se integrar facilmente com uma ampla variedade de tecnologias, alm de um ambiente de execuo de alto desempenho com tecnologia nica de caching de dados (data caching). O Cach vem com vrias linguagens de script embutidas: Cach ObjectScript (uma poderosa linguagem de programao orientada a objetos e ainda assim, simples de aprender); Cach Basic (um conjunto de Basic linguagem de programao amplamente difundida , o qual inclui extenses para acesso de dados e tecnologia de objetos ecientes); e o Cach MVBasic (uma variante do Basic utilizado por aplicaes MultiValue, tambm conhecidos como aplicaes Pick). Outras linguagens, tais como Java, C# e C++, so suportadas atravs de chamadas diretas ou atravs de outras interfaces, incluindo ODBC, JDBC, .NET, bem como uma interface de objetos fornecida pelo Cach e que permite acessar a base de dados Cach e outras de suas facilidades como propriedades e mtodos. O Cach tambm vai alm das bases de dados tradicionais ao incorporar um rico ambiente para desenvolvimento de aplicaes sosticados baseados em browser (web). A tecnologia Cach Server Pages (CSP) permite o desenvolvimento e a execuo rpida de pginas web gerada de forma dinmica. Milhares de usurios web simultneos podem acessar aplicaes, mesmo atravs de hardware de baixo custo. Para aplicaes que no sejam baseados em browser, a interface de usurio geralmente programada em uma das tecnologias de interface populares, como Java, .NET, Delphi, C# ou C++. Os melhores resultados (programao mais rpida, melhor desempenho e menor manuteno) so geralmente obtidos ao se realizar o resto do desenvolvimento dentro do prprio Cach. Entretanto, o Cach tambm fornece nveis de interoperabilidade extremamente elevados com outras tecnologias e suporta todas as ferramentas de desenvolvimento mais comumente utilizadas, de modo que uma ampla gama de metodologias de desenvolvimento est disponvel.
Captulo 1
TECNOLOGIA RELACIONAL
Nos primrdios da informtica, o processamento de informaes era realizado em sistemas mainframe gigantescos e o acesso a dados era em grande parte limitado a prossionais de TI. As bases de dados tendiam a ser criadas internamente e a recuperao de dados exigia conhecimento completo do banco de dados. Se os usurios quisessem um relatrio especial, eles geralmente tinham que solicitar a funcionrios sobrecarregados que o preparassem, de forma que geralmente no estavam prontos a tempo de inuenciar na tomada de decises. Embora a tecnologia relacional tenha sido originalmente desenvolvida no mainframe na dcada de 70, ela prosseguiu em grande medida como um projeto de pesquisa at comear a aparecer em mini-computadores nos anos 80. Com o advento do PC, o mundo entrou em uma era de informtica mais centrada no usurio e de geradores de relatrios mais amigveis, baseados em SQL a linguagem de busca introduzida pela tecnologia relacional. Os usurios puderam a partir de ento gerar seus prprios relatrios e realizar buscas com nalidades especcas (ad hoc) na base de dados, e assim o uso relacional se expandiu exponencialmente. O SQL permite o uso de uma linguagem consistente na realizao de consultas a uma variedade ampla de dados. O SQL funciona pela visualizao de todos os dados em um formato muito simples e padronizado uma tabela bidimensional com linhas e colunas. Se por um lado este modelo simplicado de dados permitiu a construo de uma linguagem elegante de consulta atravs da qual se deva questionar informaes, por outro ele foi criado a um alto custo. A complexidade inerente s relaes de dados do mundo real no se encaixa naturalmente em simples linhas e colunas, de tal forma que os dados so freqentemente fragmentados em tabelas mltiplas que devem ser unidas para que at tarefas simples possam ser completadas. Isso resulta em dois problemas: a) consultas podem se tornar extremamente difceis de serem escritas, dada a necessidade de se unir muitas tabelas (freqentemente com complexos outerjoints junes externas); e b) quando bases de dados relacionais tm de lidar com dados complexos, a quantidade de processamento necessrio para o cdigo adicional pode ser enorme. O SQL tornou-se um padro para interoperabilidade dos bancos de dados e de ferramentas de relatrio. No entanto, importante compreender que enquanto o SQL cresceu a partir dos bancos de dados relacionais, ele no precisa estar restrito a eles. O Cach suporta o SQL padro como uma linguagem de consulta e atualizao, utilizando uma tecnologia de base de dados multidimensional muito mais potente e que ampliada para incluir capacidades de orientao a objetos.
Captulo 1
Qual a diferena entre um objeto e uma classe? Uma classe a estrutura de denio e o cdigo fornecido pelo programador. Ela inclui a descrio da natureza dos dados (seu tipo) e como ele armazenado, assim como todo o cdigo do objeto. Todavia, ela no inclui nenhum dado. J um objeto, uma instncia especca de uma classe. Por exemplo, a nota scal n123456 um objeto da classe de Notas Fiscais. A tecnologia de objetos promove tambm uma visualizao natural dos dados atravs da no restrio de propriedades a tipos de dados simples e centrado no computer. Objetos podem incluir outros objetos ou referncias a outros objetos, o que torna fcil construir modelos de dados teis e signicativos. Eis um exemplo simples de um objeto Cliente:
(Rep Conta) Account Rep:
RepConta uma propriedade que conecta um Cliente a um objeto RepConta numa relao de muitos-para-um (muitos clientes para um Representante de Conta). Ao contrrio de um objeto embutido, o objeto relacionado tem seu prprio identificador (ID) de base de dados e guardado separado usando aquele ID. O ID pode ser usado para acessar aquele RepConta diretamente, sem acessar o Cliente. No Cach a sintaxe para acessar um objeto embutido ou relacionado a mesma (ex. Cliente .Endereo. Cidade e Cliente.RepConta.Nome usam a mesma sintaxe-ponto).
(Nome) Name:
Os dados podem ser um tipo simples, como um integral, ou um tipo mais complexo definido pelo programador, como uma seqncia de 9 dgitos (N.: 11 dgitos no Brasil), seguindo o padro: NNN-NNN-NNN-NN (no Brasil).
(CPF) SSN:
Este um exemplo de como objetos podem ser embutidos em outros objetos. Neste exemplo, Endereo um objeto embutido, que contm as propriedades Rua e Cidade.
(Endereo) Address:
Um Cliente possui um conjunto de NFs, cada uma das quais um objeto complexo armazenado separadamente com seu prprio ID de base de dados. Neste exemplo, h uma relao de um-para-muitos entre Clientes e NFs (um Cliente para muitas NF) usando uma relao pai-filho (NF no podem existir sem um Cliente, mas um Cliente pode existir sem NF). Um conjunto de objetos embutidos tambm possvel.
Captulo 1
CONCEITOS-BSICOS DE OBJETOS
Herana a possibilidade de se derivar uma classe de objetos a partir de outra. A nova classe (uma subclasse) contm todas as propriedades e mtodos de sua superclasse, bem como propriedades adicionais e mtodos exclusivos dela. Pode-se pensar em objetos da subclasse como tendo uma relao de ser um(a) com sua superclasse. Por exemplo, um co um mamfero, portanto faz sentido que a classe Co herde todas as propriedades e mtodos da classe Mamferos, alm de possuir propriedades e mtodos adicionais, tais como NumColeiraCao. Uma subclasse pode tambm desativar uma denio herdada (ex. o mtodo Print() para uma subclasse da classe Nota Fiscal pode ser diferente do mtodo Print() de Nota Fiscal). A herana promove a reutilizao do cdigo e torna mais fcil a introduo de grandes melhorias. Herana mltipla signica que uma subclasse pode ser derivada de mais de uma superclasse. Por exemplo, um co um mamfero e um animal de estimao, portanto a classe de objetos Co pode herdar as propriedades e mtodos de ambas as classes Mamferos e Animais de Estimao. Encapsulamento signica que os objetos podem ser vistos como caixas-pretas. Propriedades e mtodos pblicos podem ser acessados por mtodos de qualquer classe, ao passo que propriedades e mtodos particulares s podem ser acessados por aqueles da mesma classe. Portanto, o aplicao no precisa conhecer o funcionamento interno de um objeto ele s lida com as propriedades e mtodos pblicos. A fora do encapsulamento est no fato de programadores poderem melhorar o funcionamento interno de uma classe sem afetar o resto do aplicao. Polimorsmo refere-se ao fato de mtodos utilizados em vrias classes poderem compartilhar uma interface comum, mesmo quando a implementao subjacente for diferente. Por exemplo, suponha que as classes Carta, Etiqueta Postal e Crach contenham um mtodo chamado Print(). Para imprimir, um aplicao no precisa saber que tipo de objeto ele est acessando ele simplesmente chama o mtodo Print() do objeto.
A VANTAGEM DO CACH
O Cach completamente habilitado para o uso de objetos, disponibilizando toda a fora da tecnologia de objetos para desenvolvedores de aplicaes de processamento transacional de alto desempenho. Modelagem Intuitiva de Dados: A tecnologia de objetos permite aos desenvolvedores pensar e utilizar informao mesmo informao extremamente complexa de formas simples e realista, acelerando assim, o processo de desenvolvimento de aplicaes. Desenvolvimento Rpido de Aplicaes: Os conceitos de encapsulamento, herana e polimorsmo de objetos permitem a reutilizao de classes com novos propsitos e de forma compartilhada entre aplicaes, permitindo aos programadores alavancarem seus trabalhos em vrios projetos.
Os objetos proporcionam uma boa independncia entre a interface de usurio e o restante do aplicao. Assim, quando se tornar necessrio adotar uma nova tecnologia de interface de usurio (talvez uma tecnologia futura ainda desconhecida), voc poder reutilizar a maior parte do seu cdigo.
ARMAZENAMENTO DE OBJETOS Infelizmente, apesar de muitos aplicaes serem atualmente escritos em linguagens de programao de objetos, eles freqentemente tentam formatar forosamente objetos em tabelas relacionais. Isto diminui signicativamente as vantagens da tecnologia de objetos. O Cach possui uma estrutura de dados multidimensional que armazena naturalmente dados de objetos. O resultado disso o rpido acesso a dados e uma programao mais gil. ... & ACESSO RELACIONAL
Certamente, muitas ferramentas (tais como geradores de relatrios) utilizam SQL, e no tecnologia de objeto, para o acesso a dados. O Cach possui um recurso exclusivo atravs do qual quando uma classe denida, ele fornece automaticamente acesso SQL completo queles dados. Assim, ferramentas baseadas em SQL passam a funcionar imediatamente com os dados Cach sem trabalho adicional nenhum e at mesmo estas ferramentas passaro a se beneciar da vantagem proporcionada pelo alto desempenho do Servidor de Dados Multidimensional do Cach. O recurso funciona tambm na direo contrria. Quando uma denio DDL de uma base de dados relacional importada, o Cach gera automaticamente uma descrio de objetos dos dados, possibilitando a eles o acesso imediato na forma de objetos e tambm na forma de SQL. A Arquitetura Unicada de Dados do Cach (Cach Unied Data Architecture) mantm estes caminhos de acesso sincronizados cando assim, somente uma descrio de dados para ser editada.
Captulo 2
A base de dados de alta performance do Cach utiliza um engine de dados multidimensional que possibilita o armazenamento eciente e compacto de informaes em uma rica estrutura de dados. Objetos e SQL so implementados especicando um dicionrio unicado de dados, o qual dene as classes e tabelas, bem como realiza um mapeamento das estruturas multidimensionais um mapa que pode ser gerado automaticamente. Acesso Multimensional
A Arquitetura de Dados Unicado um recurso exclusivo do Cach. Quando uma classe de objetos de base de dados denida, o Cach gera de forma automtica uma SQL-ready, descrio relacional dos dados. De forma semelhante, se uma descrio DDL de uma base de dados relacional importada para o Dicionrio de Dados, o Cach gera automaticamente tanto uma descrio de objeto quanto uma descrio relacional dos dados, possibilitando o acesso imediato na forma de objetos. O Cach mantm estas descries coordenadas, h somente uma denio de dados para ser editada. O programador pode editar e visualizar o dicionrio a partir de uma perspectiva de objeto e de uma tabela relacional. O Cach automaticamente mapeia o modo como objetos e tabelas esto armazenados nas estruturas multidimensionais, ou permite ao programador controlar de forma explcita o mapeamento.
A VANTAGEM DO CACH
Flexibilidade: Os modos de acesso a dados do Cach Objeto, SQL e multidimensional podem ser usados concomitantemente em um mesmo dado. Esta exibilidade d aos programadores a liberdade de pensar nos dados do modo que faa mais sentido, utilizando o mtodo de acesso que melhor se adqe s necessidades de cada programa. Menos Trabalho: A Arquitetura de dados Unicado do Cach descreve automaticamente os dados tanto como objetos quanto como tabelas, com uma nica denio. No h necessidade de codicar transformaes, permitindo assim que aplicaes possam ser desenvolvidos e mantidos mais facilmente. Alavanque Habilidades e Aplicaes J Existentes: Os programadores podem alavancar habilidades relacionais existentes e introduzir gradualmente capacidades de objeto a aplicaes j existentes conforme sua evoluo.
10
11
Captulo 2
Namespaces
No Cach, os dados e cdigos so armazenados em arquivos de disco com o nome CACHE.DAT (somente um por diretrio). Cada um desses arquivos contm vrias globais (arrays multidimensionais). Dentro de um arquivo, o nome de cada global deve ser nico, entretanto, arquivos diferentes podem conter o mesmo nome de global. Pode-se pensar de forma liberal nestes arquivos como sendo bases de dados.
12
Ao invs de especicar qual arquivo de base de dados utilizar, cada processo do Cach usa um namespace para acessar os dados. Um namespace um mapa lgico que mapeia os nomes de arrays globais multidimensionais e codica para bases de dados. Se uma base de dados transferida de um drive ou de um computador para outro, s o mapa de namespace precisa ser atualizado. O aplicao em si continua sem mudanas. Normalmente, a no ser por alguma informao de sistema, todos os dados para um namespace so armazenados em uma nica base de dados. Contudo, os namespaces oferecem uma estrutura exvel que permite o mapeamento arbitrrio e, sendo assim, no incomum que um namespace mapeie o contedo de vrias bases de dados, inclusive algumas que estejam em outros computadores.
A VANTAGEM DO CACH
Desempenho: Ao utilizar modelo de dados multidimensional eciente com tcnicas de armazenamento disperso, ao invs de um labirinto complicado de tabelas bidimensionais, o acesso e a atualizao de dados so obtidos com menos operaes de I/O de disco. Menos I/O signica que os aplicaes rodam mais rpido. Escalabilidade: O modelo transacional de dados multidimensionais permite que aplicaes baseados em Cach tenham sua escala de uso ampliada para vrios milhares de clientes sem comprometer o alto desempenho. Isto porque o acesso a dados em um modelo multidimensional no signicativamente afetado pelo tamanho e complexidade da base de dados em comparao a modelos relacionais. As transaes podem acessar os dados de que necessitam sem realizar junes complicadas ou car pulando de tabela em tabela. O uso de locks pelo Cach para atualizaes, ao invs do bloqueio de pginas fsicas outra contribuio importante para a concomitncia. Do mesmo modo, outra contribuio importante para este m o sosticado caching de dados do Cach atravs de redes. Desenvolvimento Rpido: O desenvolvimento ocorre muito mais rpido com o Cach, pois a estrutura de dados oferece um armazenamento natural e de fcil entendimento a dados complexos, e no requere denies e declaraes detalhadas ou complicadas. O acesso direto a globais muito simples, permitindo a mesma sintaxe de linguagem utilizada no acesso a Arrays locais. Custo-Efetividade: Comparados a aplicaes relacionais de porte semelhante, os aplicaes baseados em Cach requerem signicativamente menos hardware e no necessitam de administradores de base de dados. A gesto do sistema e suas operaes so simples.
13
Captulo 2
ACESSO SQL
SQL a linguagem de consultas do Cach. Ela suportada por um conjunto completo de capacidades de banco de dados relacional incluindo DDL, transaes, integridade referencial, triggers, stored procedures e mais. O Cach suporta acesso atravs de ODBC e JDBC (usando um driver baseado em Java puro). Os comandos e consultas SQL tambm podem ser embutidos no Cach ObjectScript e dentro de mtodos de objetos. O SQL acessa dados visualizados na forma de tabelas com linhas e colunas. Como os dados do Cach so, na realidade, armazenados em estruturas multidimensionais ecientes, os aplicaes que utilizam SQL obtm melhor desempenho com o Cach do que com bases tradicionais de dados relacionais. Alm da sintaxe SQL padro, o Cach suporta vrias das extenses mais comumente utilizadas em outros bancos de dados. Sendo assim, muitos dos aplicaes baseados em SQL podem rodar no Cach sem modicaes especialmente aqueles escritos com ferramentas independentes de banco de dados. Entretanto, store procedure que sejam especcos de certos fornecedores demandaro algum trabalho e a InterSystems possui tradutores para auxiliar nesta tarefa. O Cach SQL inclui melhorias de objetos que tornam o cdigo SQL mais simples e intuitivo de se ler e escrever.
SQL TRADICIONAL
SELECT SC.NomeCompleto, SM.Descr, MS.Valor, SI.InvData, SI.InvNumero FROM VendaPrincipal MS, VendaItem SI, VendaProduto SP, VendaCliente SC, VendaMercado SM WHERE SI.VendaItemID *= MS.VendaItem AND SP.VendaProdutoID *= MS.Produto AND SC.VendaClienteID *= MS.Cliente AND SM.VendasMercadoID *=
14
Acessando Bancos de Dados Relacionais com o Gateway Relacional do Cach O Gateway Relacional do Cach (Cach Relational Gateway) habilita o envio de uma requisio SQL originada no Cach a ser enviada para outro banco de dados (relacional) para processamento. Usando o Gateway, um aplicao do Cach pode recuperar e atualizar dados armazenados na maioria dos bancos de dados.
Gateway Relacional
Alm disso, se as classes das bases de dados do Cach estiverem compiladas utilizando a opo CachSQLStorage, o Gateway permite aos aplicaes Cach utilizar bases de dados relacionais de forma transparente. Os aplicaes, no entanto, iro rodar mais rpido e sero mais escalonveis se acessarem a base de dados ps-relacional do Cach.
A VANTAGEM DO CACH
SQL Mais Rpido: Aplicaes relacionais podem desfrutar de uma melhora de desempenho signicativa ao utilizarem o Cach SQL para acessar na eciente base de dados ps-relacional do Cach. Desenvolvimento Mais Rpido: No Cach, consultas SQL podem ser escritas de forma mais intuitiva, utilizando menos linhas de cdigo. Compatibilidade com Aplicaes Relacionais e Geradores de Relatrio: Os drivers ODBC e JDBC nativos do Cach oferecem acesso de alto desempenho base de dados do Cach para aplicaes relacionais e ferramentas de relatrio. O Gateway Relacional do Cach possibilita que aplicaes Cach utilizem SQL para acessar outros bancos de dados (relacionais).
15
Captulo 2
OBJETOS DO CACH
O modelo de objeto do Cach baseado no padro ODMG. O Cach suporta um conjunto completo de conceitos de programao de objetos, incluindo encapsulamento, objetos embutidos, herana mltipla, polimorsmo e colees. As linguagens integradas do Cach manipulam estes objetos diretamente. O Cach tambm exibe as classes Cach como classes Java, EJB, COM, .NET, e C++. As classes do Cach tambm podem ser automaticamente habilitadas para suportar XML e SOAP atravs de um simples clique na IDE do Studio. Como resultado, os objetos Cach esto prontamente disponveis para todas as tecnologias objeto usadas mais comumente. H diversas maneiras para um programa fora do Servidor de Aplicaes Cach acessar as classes Cach: 1. Qualquer classe Cach pode ser projetada como uma classe na linguagem nativa. Quando um programa Java, C++, C# ou outro qualquer acessa um objeto Cach, ele ativa um `template da classe na linguagem nativa. O `template daquela classe (que gerado automaticamente pelo Cach) se comunica com o Servidor de Aplicaes Cach para iniciar mtodos no servidor e para acessar ou modicar propriedades. A congurao para objetos do Cach ca armazenada no Servidor de Aplicaes Cach. Para acelerar a execuo e reduzir o nmero de mensagens, uma cpia dos dados do objeto memorizada nas atualizaes do cliente e de piggybacks pelo Cach, juntamente, quando possvel, a outras mensagens. 2. Uma projeo mais leve pode ser utilizada para classes de base de dados nas quais a classe do `template de linguagem nativa acessa diretamente a base sem passar pelo Servidor de Aplicaes. O estado do objeto no salvo no Servidor de Aplicaes; as propriedades na memria s so mantidas no cliente. Esta abordagem oferece uma produtividade signicativamente mais alta, mas com menos funcionalidade, j que mtodos de instncia lateral de classes do Servidor (isto , mtodos que precisam de acesso s propriedades na memria) no podem ser iniciados. 3. A tecnologia Jalapeo da InterSystems permite que desenvolvedores Java criem primeiramente uma classe de base de dados em Java, como em qualquer outro POJO (Plain Old Java Object), na IDE de sua preferncia, e, a partir de ento, fazer com que o Cach gere automaticamente um esquema da base de dados e classe do Cach correspondente. Usando esta abordagem, a classe em Java no alterada e o aplicao continua acessando suas propriedades e mtodos. O Cach disponibiliza uma biblioteca de classes (ObjectManager) com uma API que utilizada para armazenar e recuperar objetos de base de dados e gerar consultas. Com cada uma dessas trs abordagens, o objeto aparenta ser algo local para o programa do usurio. O Cach gerencia as comunicaes de forma transparente atravs de call-in ou de TCP. O `template em Java e sua biblioteca de suporte so completamente baseados em Java e podem, portanto, ser utilizados atravs da web ou em outros dispositivos especcos de Java.
16
Geradores de Mtodos
O Cach inclui vrias tecnologias avanadas de objeto que so exclusivas uma das quais chamada geradores de mtodos generators - Um gerador de mtodos um mtodo executado no momento da compilao, gerando um cdigo que pode ser rodado quando o programa executado. Um gerador de mtodos tem acesso s denies de classe, inclusive denies e parmetros de propriedades e mtodos, permitindo a ele gerar um mtodo que seja customizado para a classe. Geradores de Mtodo so particularmente ecientes se combinados com herana mltipla a funcionalidade pode ser denida em uma classe de herana mltipla que se customiza para a subclasse.
A VANTAGEM DO CACH
O Cach completamente habilitado para objetos, oferecendo todo o poder da tecnologia de objetos a desenvolvedores de aplicaes de processamento transacional de alto desempenho. Desenvolvimento Rpido de Aplicaes: A tecnologia de objetos uma ferramenta poderosa no aumento da produtividade de programadores. Os desenvolvedores podem pensar e usar objetos mesmo os extremamente complexos de modos simples e realista, acelerando assim, o processo de desenvolvimento de aplicaes. Alm disso, a modulao inata e a interoperabilidade dos objetos simplicam a manuteno dos aplicaes, deixando os programadores alavancarem seus trabalhos em vrios projetos. Desenvolvimento Natural: Objetos de bases de dados aparecem na forma de objetos nativos linguagem sendo utilizada pelo desenvolvedor. No h necessidade de escrever cdigos tediosos ou decompor objetos em linhas e colunas e reagrup-los mais tarde.
17
Captulo 2
Word-Aware Indexing
am
searching
for
some
text
Quebra em palavras
X X
am
searching
for
some
text
Eliminao de rudo
search
for
Reduo em razes
18
ndices de reconhecimento de palavras so mantidos por atualizaes de objeto e de SQL. A busca mais comumente realizada atravs de consultas SQL, embora cdigos procedurais possam usar os ndices diretamente. Tais consultas podem incluir lgicas E/OU para pesquisas mais sosticadas. Algoritmos de reconhecimento de palavras so especcos da lngua natural que est sendo utilizada. A busca com reconhecimento de palavras est disponvel para um amplo leque de lnguas naturais, incluindo alemo, espanhol, francs, ingls, italiano, japons e portugus. Outras lnguas esto sendo adicionadas. Busca com Reconhecimento de Palavras
A VANTAGEM DO CACH
Poderosas Buscas de Textos No Estruturadas: Textos no estruturados, como anotaes mdicas ou documentos, podem ser facilmente pesquisadzos atravs de palavraschave ou palavras relacionadas. Pesquisas Extremamente Rpidas: A unio de reconhecimento de palavras e da tecnologia bit-map do Cach torna possvel a realizao de buscas de quantidades massivas de texto em uma frao de segundos.
19
Captulo 2
20
A VANTAGEM DO CACH
Consultas Radicalmente Mais Rpidas: Utilizando as tcnicas de bit-map transacional, os usurios podem realizar buscas ultra-velozes de grandes bases de dados muitas vezes, milhes de dados podem ser pesquisados em uma frao de segundo em um sistema utilizado primordialmente para processamento de transaes. Anlise de Dados em Tempo Real: O ndice Bit-Map Transacional permite a anlise de dados em tempo real nos dados disponveis mais recentes. Menor Custo: No h necessidade de um segundo computador dedicado ao suporte de decises e ao datawarehouse. To pouco h a necessidade de operaes dirias para se transferir os dados a um segundo sistema deste tipo ou de administradores de base de dados para dar suporte a isto. Escalabilidade: A velocidade de bit-maps transacionais otimiza a possibilidade de se montar sistemas com quantidades enormes de dados que precisam ser mantidos e pesquisados de forma peridica.
21
Captulo 2
ENTERPRISE CACH PROTOCOL PARA SISTEMAS DISTRIBUDOS Desempenho com Escalabilidade em Sistemas Distribudos
O Enterprise Cache Protocol ECP uma tecnologia de desempenho extremamente performtica e com escalabilidade que permite que computadores, em um sistema distribudo, utilizem as bases de dados uns dos outros. O uso do ECP no requer mudanas de aplicaes estes ltimos simplesmente tratam as bases de dados como se fossem bases locais. O ECP funciona assim: cada Servidor de Aplicaes Cach inclui seu prprio Servidor de Dados Cach, que pode operar em dados residentes em seus prprios sistemas de disco ou em blocos que foram transferidos a ele a partir de outro Servidor de Dados Cach pelo ECP. Quando um cliente solicita uma informao mantida num Servidor de Dados remoto, o Servidor de Aplicaes tenta satisfazer a solicitao a partir do seu Cach local. Caso no tenha sucesso, ele solicitar a informao necessria ao Servidor de Dados remoto. A resposta incluir o(s) bloco(s) da base de dados onde aquela informao foi armazenada. Estes blocos Enterprise Cach Protocol so armazenados no cache do Servidor de Aplicaes, onde eles cam disponveis para todos os aplicaes rodando naquele Servidor. O ECP gerencia automaticamente a consistncia do cache atravs da rede e propaga as mudanas de volta para os Servidores de Dados. Os benefcios de desempenho e escalabilidade obtidos com o ECP so muitos. Os clientes desfrutam de respostas rpidas, pois se utilizam com freqncia de dados armazenados em cache localmente. E o caching reduz em muito o trco de rede entre a base de dados e os servidores de aplicaes, permitindo que qualquer rede possa suportar muito mais servidores e clientes. Contudo, se por um lado a maioria dos aplicaes se benecia do ECP, por outro, h alguns cujas arquiteturas no suportam prontamente uma escalabilidade deste porte. A realizao de um benchmarking recomendada,e, geralmente, alguns ajustes simples podem aumentar o desempenho.
22
A VANTAGEM DO CACH
Escalabilidade Massiva: O Enterprise Cache Protocol do Cach permite o acrscimo de servidores de aplicaes conforme o crescimento de uso. Cada um destes servidores usa a base de dados como se ela fosse uma base local. Se a produtividade de disco tornar-se um gargalo, mais Servidores de Dados podem ser adicionados, sendo que a base de dados ser dividida em parties lgicas. Maior Disponibilidade: Como os usurios esto espalhados entre mltiplos computadores, a falha de um Servidor de Aplicaes afeta um nmero menor de usurios. Caso um Servidor de Dados trave e tenha que ser reinicializado, ou caso haja uma interrupo temporria na rede, os Servidores de Aplicao podem continuar o processamento sem qualquer efeito perceptvel alm de uma pequena pausa. Congurar Servidores de Dados como um cluster de hardware para a preveno de falhas em servidores de dados de reserva pode aumentar a disponibilidade de forma signicativa. Menores Custos: Uma grande quantidade de computadores de baixo custo pode ser combinada para formar um sistema especialmente forte que suporta processamento pesado grid computing.
Uso Invisvel: Os aplicaes no precisam ser especicamente escritos para o ECP aplicaes Cach tomam vantagem do ECP de forma automtica, sem mudanas.
Flexibilidade de Congurao
Cada sistema Cach pode funcionar tanto quanto um Servidor de Aplicaes, quanto como um Servidor de Dados para outros sistemas. O ECP suporta qualquer combinao de Servidores de Aplicaes e de Dados, bem como qualquer topologia ponto-a-ponto de at 255 sistemas.
23
Captulo 2
TOLERNCIA A ERROS
Mesmo nos ambientes mais rigorosos, eventos inesperados podem ocorrer falha de hardware, falta de energia, ou algo mais severo quanto inundaes ou outro desastre natural - hospitais, telecomunicaes e outras operaes crticas no podem, no entanto, se dar ao luxo de estar fora do ar. Para satisfazer a padres to exigentes, o Cach foi projetado para se recuperar de interrupes de forma elegante, oferecendo uma variedade de prevenes de falha e outras opes para reduzir ou eliminar o impacto aos usurios. O Cach Write-Image Journaling e outros recursos de integridade garantem a integridade da base de dados na maioria das falhas de hardware inclusive em caso de falta de energia , permitindo uma recuperao rpida, ao mesmo tempo em que minimiza o impacto ao usurio. O Cach tambm oferece opes de congurao avanada de alta disponibilidade para reduzir ainda mais ou eliminar o impacto ao usurio, incluindo: Fail-over Clusters Shadow Servers Enterprise Cach Protocol distrbuido
Fail-over Clusters
Ao utilizar um hardware com cluster fail-over, os servidores de dados compartilham acesso aos mesmos discos, embora somente um deles esteja rodando o Cach em um determinado momento. Caso o servidor ativo falhe, o Cach automaticamente inicializado em outro servidor que passa a ser responsvel pelo processamento. Os usurios podem se logar imediatamente no novo servidor.
Shadow Servers
Os Shadow Servers do Cach so, na verdade, servidores reserva que esto conectados via TCP. O servidor primrio envia constantemente um registro lgico de atualizaes da base de dados para o Shadow Server, este que sempre possui uma cpia quase-atual da base de dados. A mudana para o Shadow Server menos automatizada do que para os fail-over clusters, mas a sobrevivncia melhorada, pois o hardware no est conectado sicamente o Shadow Server pode estar at mesmo em outro local. Um Shadow Server pode ser mesclado a um fail-over Cluster, com propsito de melhorar ainda mais a tolerncia a falhas.
ECP Distribudo
Para sistemas distribudos utilizando ECP, na ocorrncia de uma interrupo temporria de rede ou de um travamento do Servidor de Dados e reinicializao, os servidores de aplicao tentam se reconectar. Caso a reconexo seja bem sucedida dentro de um prazo especico de tempo, os Servidores de Aplicaes reenviam qualquer solicitao no completada e as operaes continuam sem efeitos perceptveis para o usurio, alm de uma ligeira pausa. Se um Servidor de Aplicaes ECP falhar, somente os usurios que estejam no Servidor de Aplicaes com problema sero afetados. Eles podero ento se logar em outro Servidor de Aplicaes para continuar trabalhando.
24
Um Servidor de Dados ECP freqentemente congurado como um Fail-over Cluster. Se o Servidor de Dados primrio travar, o servidor reserva assume as funes do Servidor de Dados que falhou, permitindo operaes sem interrupes, com o usurio passando apenas por uma leve pausa. Um Cluster ECP Fail-Over
A VANTAGEM DO CACH
Bullet-Proof: O Cach WriteImage Journaling e outros recursos de integridade garantem, na maioria dos tipos de falha de hardware, a integridade da base de dados inclusive em casos de falta de energia. Conguraes de Tolerncia a Falhas de Alta Disponibilidade: O uso dos Shadow Servers do Cach, do ECP e/ou de Fail-over Clusters permite a recuperao rpida em casos de falha, ao mesmo tempo em que minimiza, ou em alguns casos elimina, seu impacto no usurio.
25
Captulo 2
26
MODELO DE SEGURANA
O Cach possui um modelo de segurana moderno, desenhado para dar suporte ao desenvolvimento de aplicaes de trs maneiras:
Protegendo o ambiente Cach propriamente dito. Tornando fcil aos desenvolvedores integrar recursos de segurana em seus aplicaes. Garantindo que o Cach funcione efetivamente e sem comprometer as tecnologias de segurana do ambiente operacional. O Cach fornece estas capacidades de segurana ao mesmo tempo em que minimiza o nus no desempenho de aplicaes.
27
Captulo 2
Autenticao
O Cach suporta vrios nveis de autenticao, variando de nenhuma autenticao ao uso de senhas, at o uso de protocolo Kerberos para autenticar a identidade de usurios. O Kerberos fornece uma autenticao muito forte e possui a vantagem de ser rpido, ter escalabilidade e ser fcil de utilizar. Com o Kerberos, as senhas nunca so transmitidas atravs da rede, o que oferece uma medida extra de segurana. O Cach suporta a implementao de single sign-on.
28
Auditoria
Muitos aplicaes, especialmente aqueles que devem satisfazer as regulamentaes governamentais, tais como TISS (Brasil), HIPAA ou Sarbanes-Oxley (EUA), precisam oferecer auditoria segura. No Cach, todos os eventos de sistema e de aplicaes so registrados em um log que s aceita adies ao registro existente (append-only), e o qual compatvel com qualquer consulta ou ferramenta de relatrios que utilize SQL.
29
Captulo 3
O servidor de Aplicaes Cach oferece capacidades avanadas de programao de objetos, fornece caching sosticado de dados e integra acesso fcil a uma variedade de tecnologias. O Servidor de Aplicaes Cach torna possvel desenvolver aplicaes sosticados de forma rpida, bem como oper-los com alto desempenho alm de suport-los com facilidade. Mais especicamente, o Servidor de Aplicaes Cach oferece: Mquina Virtual Cach que roda trs linguagens de desenvolvimento tipo script Cach ObjectScript, Cach Basic, e Cach MVBasic. Acesso aos Servidores de Dados Multidimensionais do Cach no mesmo computador ou em outras mquinas com roteamento invisvel. Software de conectividade com client-side caching para permitir o acesso rpido a Objetos Cach a partir de todas as tecnologias utilizadas mais comumente, incluindo Java, C++, C#, COM, .NET e Delphi. O Cach automaticamente realiza o networking entre o cliente e o Servidor de Aplicaes. Compatibilidade com SOAP e XML.
Acesso SQL utilizando ODBC e JDBC, incluindo caching sosticado no cliente e no servidor de aplicaes para alto desempenho. Acesso a bancos de dados relacionais. Cach Server Pages para aplicaes web fceis de programar e de alta performance. Cach Studio uma IDE para desenvolver e depurar aplicaes rapidamente com o Cach.
O cdigo para as Linguagens de Script armazenado na base de dados e pode ser modicado online, com as mudanas sendo propagadas automaticamente para todos os servidores de aplicaes.
30
Interoperabilidade Completa
Como o Cach ObjectScript, o Basic e o MVBasic esto todos instalados na mesma Mquina Virtual Cach, eles possuem interoperabilidade completa: Qualquer mtodo de objeto pode ser escrito em qualquer linguagem a mesma classe pode usar todas as trs linguagens. O uso das funes de cada uma das linguagens pode acessar um cdigo escrito nas demais linguagens. Eles compartilham variveis, Arrays e objetos.
A VANTAGEM DO CACH
Desenvolvimento Rpido de Aplicaes: O desenvolvimento de aplicaes complexas com o Cach ObjectScript radicalmente mais rpido do que com qualquer outra grande linguagem muitas vezes de 10 a 100 vezes mais rpido. Mais rpido signica dizer que os projetos tm uma chance melhor de sucesso com menos programadores e podem ser ajustados mais rapidamente, conforme as aplicaes necessitem de modicaes. Curva de Aprendizado Mais Curta: O Basic talvez a linguagem de computador mais conhecida do mundo. Desenvolvedores que conhecem Visual Basic podem comear a escrever cdigo em Basic de forma instantnea o modelo de objeto Cach aprendido facilmente. Mais Rpido e com Mais Escalabilidade: A Mquina Virtual Cach, com seu acesso direto base de dados, oferece aplicaes mais rpidas que podem ter seu uso ampliado a dezenas de milhares de usurios utilizando hardware de baixo custo. Flexibilidade: O cdigo que roda na Mquina Virtual Cach pode rodar em outros hardwares e em outros sistemas operacionais sem mudanas. O cdigo armazenado na base de dados e automaticamente propagado para os Servidores de Aplicaes.
Linguagens Script
31
Captulo 3
CACH OBJECTSCRIPT
O Cach ObjectScript uma poderosa linguagem de programao orientada a objetos e desenhada para permitir o desenvolvimento rpido de aplicaes de base de dados. Aqui esto algumas das principais caractersticas da linguagem.
Estrutura Geral
O Cach ObjectScript orientado por comandos, e tem portanto, uma sintaxe do tipo: set x=a+b do rotacionar(a,3) if (x>3) H um conjunto de funes integradas do sistema que so especialmente ecientes na manipulao de textos. Todos os nomes destas funes sempre se iniciam por um nico caractere $ para distingui-los dos nomes de variveis e de Arrays Por exemplo: $extract(string,from,to) // obter um conjunto de caracteres de uma seqncia $length(string) // determinar o comprimento de uma seqncia As expresses utilizam precedncia de operao da esquerda para direita assim como na maioria das calculadoras portteis, exceto nos casos em que os parnteses alteram a ordem de avaliao.
Com raras excees, qualquer lugar da linguagem onde uma varivel possa ser inserida, tambm permite a utilizao de um array uma propriedade de objeto ou uma referncia global. Na maioria das linguagens de informtica, os tipos so extenses de conceitos de armazenamento de hardware (interger,oat,char,etc.) Entretanto, o Cach ObjectScript tem a losoa de que seres-humanos no pensam utilizando estes tipos de armazenamento, e que estes tipos infocntricos simplesmente impedem o desenvolvimento rpido de aplicaes. A necessidade de utilizar declaraes e armaes de dimenso introduz bem mais erros do que ajuda a prevenir (ex. erros do tipo extrapolao de 2 bytes integral, ou quando uma seqncia extrapola sua alocao de memria e corrompe outro armazenamento). Contudo, a digitao de objetos, tais como Pessoa, Nota Fiscal ou Animal, vista como sendo altamente valiosa e consistente com o modo de pensar dos seres-humanos. Assim, no Cach ObjectScript, as propriedades de objeto so fortemente tipicadas, mas os outros trs tipos de armazenamento (variveis, Arrays e ns de globais) so entidades completamente polimrcas e sem um tipo especial, que no precisam ser declaradas ou denidas. Eles simplesmente passam a existir conforme so utilizados e se moldam s necessidades de dados daquilo que estejam armazenando e da forma como esto sendo utilizados em uma expresso. Mesmo Arrays no requerem nenhuma especicao de tamanho, dimenso ou tipo de subscripts/dados. Por exemplo, um desenvolvedor pode criar um Array chamado Pessoa simplesmente atribuindo: Set Pessoa (Silva, Joo)= Eu sou uma pessoa boa
32
Neste exemplo, os dados foram armazenados num Array bidimensional utilizando dados seqenciais para os subscripts. Outros mdulos de dados neste Array poderiam ter um nmero diferente de dimenses e poderiam misturar seqncia, integrais ou outro tipo de dados para os subscripts. Por exemplo, podem-se armazenar dados em: abc(3) abc(3,-45.6,Sim) abc(Contar) todos no mesmo Array
Referncias de Objetos
Os objetos Cach implementam o modelo de dados ODMG com poderosas extenses. No Cach ObjectScript, uma referncia a objetos utilizada para se acessar um objeto. (uma oref geralmente uma varivel cujos valores especicam qual objeto na memria se est fazendo referncia). A oref seguida por um ponto e, a seguir, pelo nome de uma propriedade ou mtodo. Referncias de objetos podem ser utilizadas onde quer que se possa usar uma expresso. Por exemplo: set nome=pessoa.Nome // pessoa a varivel cujo valor uma oref // o nome da pessoa colocado na varivel nome se (pessoa.Idade>x) // veja se a idade da pessoa maior que x set dinheiro=nf.Total() // Total() um mtodo que calcula a soma de // todas as notas scais (nf) de itens de linha Mtodos tambm podem ser executados atravs de um comando tipo DO quando nenhum valor resultante necessrio. Por exemplo: do parte.Incremento() // Incremento() um mtodo, cujo valor de // retorno, se houver, no interessa A oref no a mesma coisa que um identicador (ID) de objeto da base de dados; ela utilizada para recuperar e armazenar um objeto da base de dados. Uma vez estando na memria, o objeto recebe um valor oref reutilizvel, que ento usado para acessar os dados do objeto. Na prxima vez que aquele mesmo objeto da base de dados for trazido memria ele provavelmente receber um valor oref diferente.
33
Captulo 3
Cdigo de Chamada
Em algumas linguagens de objeto, todo o cdigo precisa ser parte de algum mtodo. Esta restrio no existe com o Cach Object Script o cdigo pode ser chamado diretamente ou pode ser chamado atravs de sintaxe de objeto. O cdigo normalmente chamado utilizando um comando do tipo DO.do rotacionar(a,3) Cdigo que resulte em um valor tambm pode ser chamado na forma de uma funo. Por exemplo: set x=a+$$insert(3,y) Chama o procedimento ou sub-rotina insert, escrito por um programador. Um cdigo pode ser tambm chamado na forma de um mtodo de objeto. set dinheiro=nf.Total() // Total() d o valor total das notas scais (nf) parte.Incremento() // Incremento() um mtodo, cujo valor, // se houver, no interessa Tanto a chamada por valor quanto a chamada por referncia so suportadas por parmetros.
34
Rotinas O cdigo do Cach ObjectScript fundamentalmente organizado em um conjunto de rotinas. Cada rotina (normalmente at 32KB em tamanho) atmica, isto , pode ser editada, armazenada e compilada de forma independente. As rotinas so conectadas de forma dinmica em tempo de execuo no h um passo extra separado da ligao de rotinas para o programador. O cdigo de uma rotina armazenado na base de dados, assim, rotinas podem ser paginadas de forma dinmica em toda a rede, ao invs de terem de ser instaladas em cada computador. Dentro de uma rotina, o cdigo organizado na forma de um conjunto de procedimentos e ou sub-rotinas. (Um mtodo de objeto um procedimento, mas acessado com uma sintaxe diferente). Quando se solicita um cdigo que est dentro da mesma rotina, somente o nome do procedimento ou da sub-rotina necessrio. Caso contrrio, o nome da rotina deve vir junto. do transferir() // chama transferir na mesma rotinado total^nf() // chama total na rotina nf (nota scal) Um procedimento (ou sub-rotina) que tenha um valor resultante de interesse deve ser solicitado utilizando a sintaxe de funo $$ set x=$$total^nf() // chama o mesmo procedimento total mas usa o valor retornado Rotinas podem ser compiladas e editadas atravs do Cach Studio.
35
Captulo 3
Mtodos de Objeto Denies de classe e seus cdigos de mtodos so armazenados em globais, sendo que o Class Compiler compila cada classe em uma ou mais rotinas. Cada mtodo simplesmente um procedimento em uma rotina, embora s possa ser solicitado atravs da sintaxe de objeto. Por exemplo, se a classe Paciente dene um mtodo Admite e a varivel Pac identica um objeto Paciente especco, ento solicitaramos o mtodo Admite para aquele objeto com a seguinte sintaxe: do Pac.Admite() // Chama o mtodo admit para Paciente set x = Pac.Admite() // Chama o mesmo mtodo, mas usa o valor retornado Procedimentos e Variveis Pblicas/Privativas Um procedimento um bloco de cdigos dentro de uma rotina que similar a uma funo em outras linguagens. Um procedimento consiste em um nome, uma lista de parmetros formal, uma lista de variveis pblicas e um bloco de cdigo delimitado por { }. Por exemplo: Admite(x,y)[nome,regnum] { ...o cdigo entra aqui } No Cach ObjectScript, algumas variveis so pblicas (comuns) e outras so privativas de um procedimento em particular. Cada varivel utilizada dentro de um procedimento considerada privativa daquele procedimento a menos que esteja listada na lista pblica. No exemplo acima, nome e regnum acessam as variveis pblicas com aqueles nomes, ao passo que todas as outras demais variveis existem. somente para esta solicitao, deste procedimento. Variveis cujos nomes se iniciam pelo caractere % so sempre implicitamente pblicas.
36
Procedimentos no podem ser acumulados, embora um procedimento possa conter sub-rotinas. Sub-rotinas Rotinas podem conter sub-rotinas, que so mais leves que procedimentos. Uma subrotina pode conter uma lista de parmetros e pode ter um valor de resultado, mas ela no possui uma lista pblica ou uma estrutura de blocos formal. Sub-rotinas podem estar embutidas em procedimentos ou podem estar no mesmo nvel que um procedimento em uma rotina. Sub-rotinas permitem a solicitao de cdigo utilizando-se do mesmo conjunto de variveis pblicas/privativas que o solicitante e elas podem ser solicitadas mais rapidamente. Uma sub-rotina embutida em um procedimento usa o mesmo escopo de variveis que o procedimento em si e s pode ser solicitada a partir de dentro daquele procedimento. Referncias de varivel a uma sub-rotina que no seja parte de um procedimento so todas as variveis pblicas.
37
Captulo 3
BASIC
O Basic talvez a linguagem de programao mais conhecida do mundo. No Cach, o Basic foi expandido para suportar acesso direto s estruturas de dados centrais do Servidor de Aplicaes Arrays multidimensionais -, bem como a outros recursos do Servidor de Aplicaes Cach. Ele d suporte direto ao Cach ObjectModel utilizando a sintaxe do Visual Basic, alm de ser executado na Mquina Virtual Cach. O Basic pode ser utilizado tanto como mtodos de classes, quanto como rotinas Cach (vide a descrio de rotinas do Cach Object Script). O Basic pode solicitar o Cach Object Script (e vice-versa) com ambas as linguagens acessando as mesmas variveis, Arrays e objetos na memria de processo. Arrays podem ser expandidos para que sejam bem mais poderosos: A presena do caractere ^ antes do nome de um Array indica uma referncia a um Array multidimensional de base de dados; isto , Arrays persistentes que so compartilhados com outros processos. Subscripts podem ser de qualquer tipo de dados seqncias, integers, nmeros decimais, etc. Dados podem ser armazenados em nveis mltiplos de subscript em um mesmo Array por exemplo, dados poderiam ser armazenados em A (cores) e em A (cores,3). Arrays no precisam ser declarados e so sempre esparsos O Cach s reserva espao conforme os ns so inseridos. Uma funo Traverse permite a identicao do subscript seguinte (ou anterior) em um dado nvel de subscript. Outras extenses incluem: Comandos de processamento de transaes para Iniciar (Start), Conrmar (Commit) e fazer o Rollback de uma transao. Uma funo de incremento atmica para ser utilizada na base de dados. Extenses que promovem uma melhor integrao com as capacidades do Servidor de Aplicaes Cach.
38
Acesso a Objeto com Basic No Cach, classes de objetos esto organizadas em pacotes, e nomes de classes incluem o nome do pacote seguido por um ponto. Por exemplo: Folha. Pessoa uma classe Pessoa no pacote Folha. O comando do Basic New usado para criar um objeto: Person = New Payroll.Person() // cria um novo objeto Pessoa O Basic foi expandido com um comando Open ID para acessar um objeto existente: Person = OpenID Payroll.Person (54) // abre o objeto pessoa com o ID 54 Aqui esto alguns exemplos de cdigos que acessam a propriedade das pessoas: Person.Name = `Smith, John // especica o nome da pessoa Person.Home.City // faz referncia cidade da pessoa Person.Employer.Name // traz o objeto Empregador da pessoa para a // memria e acessa o nome do empregador Classes de base de dados podem ser persistidas em disco com o mtodo Salvar. Por exemplo: Person.Save() salva a pessoa, criando um ID de objeto se esta for a primeira vez que o objeto houver sido armazenado. Se objetos relacionados (como o Empregador) tambm tiverem sido modicados, eles tambm sero salvos automaticamente.
39
Captulo 3
MVBASIC
MVBasic uma outra linguagem de script oferecida pelo Cach e uma variante do Basic. Ele , no entanto, feito com a inteno de executar aplicaes escritos para sistemas MultiValue (Pick) e, portanto, tem suporte a caractersticas extra, incluindo a capacidade de acessar e manipular arquivos MultiValue. O MVBasic pode ser utilizado tanto como mtodos de classe como rotinas do Cach (veja a descrio de rotinas do Cach Object Script). O MVBasic pode solicitar tanto o Cach ObjectScript, quanto o Basic e vice-versa - com todas as trs linguagens tendo acesso s mesmas variveis, Arrays e objetos na memria de processamento. O Cach MVBasic possui as mesmas extenses do Cach Basic, inclusive acesso a objetos. Contudo, dada a possvel ambigidade, a seqncia de dois caracteres -> utilizada ao invs de um separador tipo ponto, . nas referncias de objetos.
C++
Cada classe do Cach pode ser projetada como uma classe C++ com mtodos correspondentes a cada propriedade e mtodo da classe Cach. Para programas C++, estas classes possuem exatamente a mesma aparncia de outras classes C++ locais e o Cach automaticamente gerencia todas as consultas entre o cliente e o servidor. As propriedades da classe so armazenadas em memria cache no cliente e solicitaes de mtodo C++ criam seus correspondentes mtodos server side, incluem-se a os mtodos para armazenar um objeto na base de dados e depois recuper-los.
JAVA
Java uma linguagem de programao popular mas, conectar aplicaes Java maior base das bases de dados pode ser desaador. Conectar-se a uma base de dados relacionais requer ampla codicao SQL, o que demanda muito tempo e inibe muito das vantagens da tecnologia Java de objetos. A abordagem do Cach de armazenar os objetos diretamente sem o desenvolvedor ter de se preocupar com a forma na qual os dados substiro e ter de usar sintaxe de objetos muito mais simples e geralmente preferida. Alguns desenvolvedores preferem trabalhar exclusivamente com POJOs (Plain Old Java Objects), enquanto outros preferem EJB (Enterprise Java Beans).
Ademais, alguns desenvolvedores preferem primeiro denir o esquema da base de dados e depois gerar automaticamente a classe Java correspondente para cada uma das classes da base de dados, enquanto outros preferem criar primeiro s classes Java e fazer com que o Cach gere um esquema da base de dados automaticamente. O Cach suporta todas estas abordagens: Qualquer classe Cach pode ser projetada como uma classe Java para que classes e mtodos possam ser acessados como objetos Java. Classes Cach tambm podem ser projetadas como Enterprise Java Beans. JDBC oferece acesso SQL de alta performance usando um driver completamente baseado em Java (tipo 4). A tecnologia Jalapeo da InterSystems cria classes Cach a partir de descries de classe em POJO.
40
A VANTAGEM DO CACH
Flexibilidade: Desenvolvedores de Java possuem opes no que diz respeito a acessar objetos Cach eles podem utilizar SQL e JDBC ou objetos projetados mais naturalmente, como classes Java ou Enterprise Java Beans. Com o Jalapeo, os desenvolvedores tm a opo de trabalhar inteiramente em seu ambiente de desenvolvimento Java predileto, deixando o Cach fornecer os mtodos para armazenar e recuperar objetos automaticamente sem tocar nas classes de desenvolvedores de base de dados. Alta Performance: Todos os aplicaes Java, independentemente de como esto conectados ao Cach, se beneciam de seu desempenho superior e de sua escalabilidade. Compatibilidade Nativa com J2EE Signica Desenvolvimento Mais Rpido: Classes Cach podem ser facilmente projetadas como EJBs, fornecendo a desenvolvedores J2EE um modo simples de se conectar base de dados ps-relacional do Cach. Quando uma classe Cach projetada utilizando Bean-Managed Persistence, o Cach gera automaticamente o mtodo usado pelo EJB para acessar a base de dados. do Cach. Como os desenvolvedores no precisam mais manusear mtodos de persistncia de cdigos, os aplicaes podem ser completados com maior rapidez.
41
Captulo 3
42
Apesar de o Jalapeo funcionar melhor se utilizado em conjunto com o Cach, ele tambm pode exportar seus esquemas de base de dados para um esquema relacional correspondente utilizando DDL padro (Data Denition Language Linguagem de Denio de Dados). Portanto, apesar do objeto ter sido criado para usar acesso de objeto com o Cach, ele tambm pode ser disponibilizado em uma base de dados relacional. Neste caso, os APIs do Jalapeo ObjectManager usam automaticamente chamadas JDBC normais para a conectividade da base de dados. Quando conectado base de dados de objeto Cach, o protocolo de alto desempenho baseado em objeto utilizado. A biblioteca Jalapeo implementada atravs de Java padro e roda em qualquer Java 1.5 JVM (ou mais recente) ou em qualquer ambiente de servidor de aplicaes J2EE. Com o Jalapeo, o desenvolvedor Java pode concentrar-se na interface de usurio e na lgica comercial do aplicao, criando classes de base de dados do mesmo modo que com outras classes e deixando o Cach tomar conta do restante. No exemplo a seguir, um objeto Cliente recuperado, seu nmero de telefone alterado com um mtodo set estabeler, a base de dados atualizada e, por m, o objeto na memria fechado.
A VANTAGEM DO CACH
Desenvolvimento Rpido e Natural Sem Mapeamento Objeto-Relacional: O Jalapeo utiliza introspeco de classes POJO para criar automaticamente um esquema de base de dados de objeto. Os dados so armazenados como objetos e uma representao SQL padro destes dados tambm criada de forma automtica. Nenhum mapeamento objeto-relacional necessrio, acelerando assim o desenvolvimento. Fcil Persistncia POJO: Dentro de um aplicao, os desenvolvedores acessam as suas prprias classes de base de dados como se fosse qualquer outra classe. O Jalapeo gera todos os cdigos para salvar e recuperar objetos da base de dados utilizando suas APIs de runtime. Acesso SQL: Todos os objetos dentro da base de dados esto acessveis de forma automtica por SQL utilizando a API de JDBC do Jalapeo mesmo sem o desenvolvedor ter realizado um mapeamento objeto-relacional. Independncia de Plataforma e de Base de Dados: O Cach est disponvel em todas as principais plataformas e se por um lado o Jalapeo funciona melhor se usado com ele, por outro tambm pode exportar seu esquema de base de dados para um esquema relacional correspondente se utilizar um DDL comum. Portanto, apesar da aplicao haver sido feita para utilizar acesso de objetos com o Cach, ele tambm pode ser disponibilizado em uma base de dados relacional.
43
Captulo 3
Web Services
H duas maneiras de se utilizar web services no .NET. Uma delas enviando documentos XML por HTTP. A outra utilizando protocolo SOAP para simplicar o intercmbio de documentos XML. Como o Cach pode expor dados em ambas as direes, ele funciona de forma imperceptvel com web services .NET.
44
Exportando XML
Tudo o que necessrio para tornar uma classe Cach compatvel com XML fazer com que ela herde da classe %XML.Adaptor, que est includa no Cach. Isto fornece todos os mtodos necessrios para: Criar ou uma DTD (Document Type Denition), ou um Esquema XML para a classe. O Cach gera Esquemas e DTDs automaticamente, mas desenvolvedores que desejem customizar a formatao XML de uma classe podem faz-lo. Formatar automaticamente os dados de um objeto como XML, de acordo com o DTD ou Esquema denido.
Importando XML
O Cach vem com outras classes que fornecem mtodos, possibilitando aos desenvolvedores: Importar Esquemas XML e criar classes Cach correspondentes automaticamente.
Importar dados contidos em documentos XML, trazendo-os como instncias (objetos) de classes Cach via um API simples. Analisar a fundo e validar documentos XML atravs de um analisador XML (SAX) integrado.
45
Captulo 3
A VANTAGEM DO CACH
Conectividade Fcil ao XML: O Cach tira proveito de sua capacidade de herana mltipla para fornecer a qualquer classe Cach uma interface bidirecional com o XML. O resultado: As classes Cach podem ser transformadas em esquemas e documentos XML de forma fcil e rpida. De modo semelhante, esquemas e documentos XML podem ser transformados em denies de classe e objetos Cach. Desenvolvimento Rpido de Aplicaes XML Mais Veloz: Como as estruturas de dados multidimensionais nativas do Cach se ajustam bem aos documentos XML, os desenvolvedores no precisam codicar manualmente um mapa que traduza entre XML e a base de dados Cach. Web Services Instantneos: Qualquer mtodo Cach pode ser publicado como um Web Services com apenas alguns cliques do mouse. O Cach gera automaticamente o descritor WSDL e a resposta SOAP quando o servio solicitado.
46
Esta funcionalidade MultiValue fornecida como uma parte integral do Cach e no como uma implementao MultiValue em separado , utilizando o valioso motor de base de dados multidimensional Cach, a funcionalidade runtime e as tecnologias de desenvolvimento. Isto quer dizer que os usurios de MultiValue podem tomar pleno partido das capacidades oferecidas pelo Cach.
47
Captulo 3
48
MultiValue e Objetos
O MVBasic foi expandido para utilizar objetos do mesmo modo que o Basic. A exceo est no fato de que o MVBasic se utiliza de uma sintaxe -> para representar o acesso a um objeto, ao invs do ponto, ., do Basic. Qualquer classe no Dicionrio de Classe pode ser utilizada, independentemente da linguagem utilizada nos mtodos das classes. Aqui esto alguns exemplos de cdigo, no qual pessoa uma referncia de objeto: pessoa->Nome = Silva, Joo // xa o nome da pessoa pessoa->Resid->Cidade // faz ref. cidade onde reside a pessoa pessoa->Empregador->Nome // traz o objeto empregador da pessoa para a // memria e acessa o nome do empregador pessoa->Save() // salva a pessoa em disco Command Shell do MultiValue O command shell do MultiValue pode rodar a partir de um terminal. Alm das capacidades normais do command shell do MultiValue, o Cach permite comandos MVBasic serem executados diretamente no utilitrio. Por exemplo, digitando: :; DIM A(34) :; FOR I = 1 A 34 ; A(I) = I; NEXT :; FOR I = 1 A 34 ; CRT A(I): : ; NEXT tem-se como resultado: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
A VANTAGEM DO CACH
Vida Nova para Aplicaes Antigas: o Cach torna fcil atualizar aplicaes MultiValue mais antigas atravs de interfaces do navegador, acesso a objetos, SQL robusto e Web Services. Aplicaes MultiValue podem agora existir em uma base de dados avanada, que bem-aceita em ambientes de alta demanda e que apresenta evoluo constante. Construa Novos Aplicaes Rapidamente: Como o MultiValue implementado como uma linguagem e como um acesso de arquivos no Cach, todas as capacidades nativas do Cach podem ser utilizadas para se construir novas funcionalidades rapidamente. Programadores MultiValue podem comear a tirar proveito da programao de objetos e interagir facilmente com outros aplicaes, enquanto seguem utilizando a linguagem MultiValue. Alta Performance e Escalabilidade com Impressionante Conabilidade para Usurios MultiValue: O Cach oferece desempenho e escalabilidade dramaticamente superior para usurios MultiValue. Ademais, o Cach utilizado em ambientes que so crticos 24 horas ao dia, tal como hospitais, que no tm como tolerar sistemas fora do ar. O Cach fornece sosticado journal, processamento de transaes, bases de dados blindadas e conguraes de tolerncia a falhas.
49
Captulo 4
Captulo 4: Criao Rpida de Aplicaes de Alta Performnce Web Rpidas Com Cach Server Pages (CSP)
Criao Rpida De Aplicaes Web Rpidas... usa a palavra rpido duas vezes. Isso, primeiramente, porque possvel criar aplicaes web sosticados, orientados a base de dados com CSP mais velozmente do que com outras abordagens tradicionais. A outra razo que a base de dados integrada Cach a mais rpida do mundo, sendo capaz de rodar sistemas com dezenas de milhares de usurios simultneos. H muitos modos de se escrever aplicaes web com Cach inclusive com todas as formas tradicionais que utilizam SQL para acessar a base de dados. Neste captulo, discutiremos outra abordagem mais direta , chamada CSP - Cach Server Pages. O CSP uma tecnologia fornecida como parte do Servidor de Aplicaes Cach. Ele a maneira mais rpida para que aplicaes Cach interajam com a web, oferecendo: web. Uma abordagem de desenvolvimento avanada, orientada a objetos. Performance ultra-elevada e escalabilidade em tempo de execuo.
O CSP no uma ferramenta de web design, embora possa ser utilizada com estas. Enquanto ferramentas de web design normalmente se concentram na produo de HTML esttico, o CSP vai alm da aparncia das pginas e auxilia no desenvolvimento de lgica de aplicao. Ele tambm fornece o ambiente de execuo que possibilita a execuo rpida do cdigo contido no Servidor de Aplicaes Cach. O CSP suporta um forte ambiente de programao procedural; tal que os aplicaes podem ser escritos com um nvel de sosticao e exatido que excede as possibilidades de tecnologia pura de gerao de aplicaes. Ela tambm suporta desenvolvimento rpido atravs de sua arquitetura de classe, a qual produz blocos de construo de cdigo estes ltimos podem ser combinados entre si e ainda, atravs do uso de wizards, que podem produzir rapidamente verses simples de cdigo customizado. O resultado a possibilidade de se desenvolver velozmente aplicaes web muito sosticadas.
A VANTAGEM DO CACH
Programao procedural orientada a objeto, juntamente com o Cach Wizards, resultam em aplicaes de base de dados sosticadas, baseados em navegadores web.
50
Algumas das caractersticas do Cach Server Pages so: Servidor de Pginas Dinmicas Como as pginas so criadas de forma dinmica no servidor de aplicaes, ao invs de fazer com que um servidor web simplesmente retorne ao HTML esttico, os aplicaes podem responder rapidamente a vrias requisies diferentes, moldando as pginas resultantes, que so enviadas de volta ao navegador. Modelo de Sesso Todo o processamento relacionado a pginas de um nico navegador (browser) considerado parte de uma s sesso da primeira solicitao do browser at que ou a aplicao seja completada ou um timeout programvel ocorra. Preservao de Estado do Servidor Dentro de uma sesso, os dados no servidor e mesmo o contedo da aplicao podem ser retidos automaticamente atravs das solicitaes do browser, tornando muito mais fcil desenvolver e rodar aplicaes complexas. Arquitetura de Objetos Como cada pgina corresponde a uma classe, o cdigo e outras caractersticas comuns a muitas pginas podem ser facilmente incorporados atravs da funcionalidade de herana. Os dados so tambm tipicamente referenciados atravs de objetos com todos os benefcios da programao de orientao a objetos. XML O XML oferece uma poderosa alternativa ao HTML na construo de pginas web. O CSP funciona com o XML do mesmo modo que trabalha com o HTML. O programador fornece XML no mtodo Page(), ao invs de HTML. Tags de Aplicao Cach para Gerao Automtica de Cdigo Estes tags HTML estendidos so to fceis de utilizar quanto tags tradicionais de HTML. Quando adicionados a um documento HTML, eles geram um cdigo de aplicao sosticado, oferecendo uma variedade de funcionalidades, tais como abrir objetos, executar consultas e controlar o uxo de programas. Estas tags so expansveis os desenvolvedores podem criar suas prprias tags, adequadas s necessidades especcas que possuem. Integrao com Ferramentas Populares de Web Design O CSP funciona com uma variedade de ferramentas que tornam fcil realizar o layout visual de pginas. Com o Dreamweaver, o CSP vai um passo alm de sua capacidade de adicionar tags de Aplicaes Cach atravs de simples interaes point-and-click (apontar e clicar com o mouse). O CSP inclui ainda um Wizard, que torna fcil criar formas que exibem ou editam dados na base de dados Cach. Mtodos Servidores Solicitveis a Partir do Browser Para facilitar o desenvolvimento de aplicaes mais dinmicas e interativas, o CSP torna fcil solicitar mtodos server-side. Quando um evento ocorre no browser geralmente porque o usurio realizou uma ao o cdigo de aplicao no servidor pode ser chamado, gerando uma resposta ao evento. Tudo isso, sem a sobrecarga de transmisso e exibio de uma pgina inteiramente nova. Criptograa O Cach automaticamente criptografa dados na URL para ajudar a autenticar solicitaes e prevenir adulteraes. A chave de criptograa mantida somente no servidor e vlida somente durante aquela nica sesso. muita tecnologia mas no tem que ser difcil de utilizar. Ns nos concentramos em tornar o CSP fcil de usar, com a maioria dessas capacidades funcionando de forma automtica para voc. Nossa losoa poder atravs da simplicidade a complexidade deve car em nossa implementao e no na programao que voc realiza.
51
Captulo 4
52
Preservao de Estado
Um dos desaos enfrentados por desenvolvedores a natureza inerentemente stateless (sem estado) da web normalmente no h uma maneira simples de se reter informaes no servidor entre uma solicitao e outra. Os aplicaes geralmente enviam para o navegador todas as informaes de estado que eles precisam reter na forma de URLs ou de campos escondidos de formulrio. Esta no uma tcnica eciente para aplicaes mais complexas, que podem recorrer a salvar temporariamente dados em arquivos ou bases de dados. Infelizmente, isto impe uma sobrecarga signicativa ao servidor e torna a programao consideravelmente mais difcil. O modelo de Sesso do Cach possibilita a este preservar dados automaticamente e ecientemente entre as solicitaes de um browser. O CSP fornece um objeto de Sesso que contm informaes genricas sobre a sesso, alm de propriedades que permitem ao programador controlar vrias caractersticas desta. O aplicao pode armazenar seus prprios dados no objeto de Sesso, o qual retido automaticamente de uma solicitao a outra. O aplicao determina o estado a preservar, estabelecendo a propriedade Preserve no objeto de Sesso para 0 ou 1 (o padro 0, o que pode ser modicado de modo dinmico durante a execuo). 0 Dados salvos no objeto de Sesso so retidos. (Os dados so simplesmente colocados em uma propriedade multidimensional, que aceita qualquer tipo de dado e permite qualquer nmero de subscript inclusive subscripts de valor seqencial sem nenhuma declarao). 1 O Cach dedica um processo para a sesso, tal que os estados de processo so retidos, inclusive todas as variveis (e no s aquelas do objeto de Sesso) dispositivos I/O (entrada-sada) e locks. Uma congurao igual a 0 permite uma partio lgica de todos os dados preservados e permite que mltiplas sesses compartilhem um nico processo, porm preserva menos quantidade de estado. J uma congurao igual a 1 mais fcil para o programador e oferece um leque de capacidades mais amplo, porm, a um custo maior de recursos de servidor utilizados.
A VANTAGEM DO CACH
Ao preservar a informao de estado no servidor de forma automtica, h menos trfego de rede e menos sobrecarga no servidor, j que os aplicaes no precisam car arquivando e acessando dados para cada pgina solicitada. E programar o aplicao mais simples. O uso de Pginas Dinmicas de Servidor e do Servidor de Aplicaes Cach resulta em uma maior exibilidade para se responder a solicitaes, em uma execuo mais veloz e sem o risco de erros de aplicaes fazerem o servidor web cair, bem como em um ambiente de programao mais rico.
O Objeto de Requisio
O CSP fornece automaticamente vrios objetos (alm do objeto de Sesso) para auxiliar o programador a processar a pgina. Um deles o objeto de Requisio. Quando uma pgina recebida, o URL decodicado e colocado no objeto de Requisio. Este objeto contm todos os pares nome/valor e todos os dados de formulrio, juntamente com outras informaes teis. Por exemplo, o valor do nome FilmeID, poderia ser obtido com o cdigo: %request.data(FilmID, 1) // o 1 indica que queremos o 1o nome para este valor // caso haja vrios valores para este nome
53
Captulo 4
54
ARQUIVOS CSP
Arquivos CSP so arquivos HTML seqenciais com Tags de aplicaes Cach embutidas, que so compiladas em pginas de classe o mesmo tipo de pginas de classe que um programador talvez escrevesse diretamente. Estas pginas de classe so ento compiladas para gerar cdigos que rodam no Servidor de Aplicaes Cach em resposta s solicitaes do browser. O Cach Studio inclui um Wizard de Formulrios que gera automaticamente um arquivo CSP para editar ou visualizar uma classe de base de dados. O usurio simplesmente clica na classe de base de dados de seu interesse e depois seleciona o conjunto de propriedades a ser exibido. O wizard do Cach faz todo o restante, adicionando HTML e tags de aplicaes Cach pgina. Como o Wizard produz HTML, caso o resultado no esteja em exato acordo com aquilo que voc deseja, muito fcil edit-lo. A abordagem de arquivos CSP poderosa, pois: Web Designers podem desenhar o layout visual, enquanto os programadores se concentram nos cdigos. Muito da interface de usurio pode ser programada de maneira no procedural em um ambiente visual e ser mantida isolada das lgicas comerciais e de base de dados. normalmente mais fcil customizar um aplicao para um usurio individual especco deixando que no programadores alterem a apresentao visual e adicionem capacidades simples aplicao. Como as especicaes visuais da aplicao so mantidas separadas da maior parte da lgica de programao, relativamente fcil modicar a sua aparncia sem a necessidade de reprogram-lo simplesmente edite o arquivo HTML ou XML e recompile a pgina. Embora uma aplicao inteira simples possa ser criado desta maneira, um programador geralmente imputa cdigos adicionais a ele. Este cdigo extra suprido atravs de tags de aplicaes, que ou incluem o cdigo de procedimento, ou invocam cdigos em outras classes. No entanto, pginas complexas com muitos cdigos procedurais so geralmente mais fceis de escrever utilizando-se da abordagem de programao direta, ao invs de um arquivo CSP. O Cach tambm inclui um add-in para Dreamweaver a popular ferramenta de design de pginas web. Ela oferece suporte point-and-click para se adicionar Tags de Aplicaes Cach, alm de contar com um Wizard de Formulrios Cach, que gera automaticamente o cdigo necessrio para visualizar ou editar um objeto da base de dados.
55
Captulo 4
HIPEREVENTOS (HYPEREVENTS)
Os hipereventos CSP permitem que eventos que ocorram em um navegador (como os cliques do mouse, mudanas em campos de valor ou timeouts) solicitem mtodos server-side, bem como atualizem a pgina atual sem fazer o repaint (recarregamento grco completo). Aps realizar a ao solicitada, este mtodo tem como produzir um cdigo (geralmente em JavaScript) para que seja executado no browser. Aplicaes web que utilizam hipereventos tm melhor resposta e podem se tornar mais interativos. Dentro de uma pgina CSP, um mtodo server-side solicitado simplesmente atravs da sintaxe: #server(...)# Por exemplo, suponhamos que quando o usurio clicar em uma imagem de um carrinho de compras, queremos ativar um mtodo servidor chamado AdicAoCarrinho(). A denio HTML para a imagem talvez inclusse ento a seguinte sintaxe: onClick=Server(AdicAoCarrinho()# O web compiler substituir esta sintaxe com o cdigo JavaScript, que quando rodado no navegador, solicitar o mtodo do servidor Cach.
56
Captulo 4
58
59
Captulo 4
Suporte a SVG
O SVG (Scalable Vector Graphics) fornece um modo padro poderoso para a exibio de ricos dados grcos dentro de uma pgina Web. O Zen incorpora a possibilidade de criao de componentes grcos que se auto-restitua atravs da utilizao do SVG e os quais incluem um rico conjunto de componentes pr-desenhados com base no SVG.
A VANTAGEM DO CACH
Ricas Interfaces de Usurio Web: Podem-se gerar pginas visualmente sosticadas e altamente interativas, as quais so visualmente mais semelhantes a interfaces GUI de aplicaes cliente/servidor do que um formulrio tradicional e simples de navegador com um boto de SUBMIT. O usurio acha o formato interativo mais natural e fcil de utilizar. Rpido Desenvolvimento Baseado em Objeto: A utilizao de componentes pr-desenhados acelera o desenvolvimento e torna mais simples a realizao de modicaes posteriores. Interfaces Consistentes de Usurio: A arquitetura baseada em componentes torna mais fcil de denir e forar normas de estilo e comportamento no mbito do aplicao.
60
InterSystems do Brasil Praa Prof. Jos Lannes, 40 10 andar - Brooklin Novo 04571-100 - So Paulo - SP Tel: 55 11 3014 7000 Fax: 55 11 3014 7001 Call Center: 0800 888 22 00 InterSystems.com.br
InterSystems Cach marca registrada da InterSystems Corporation. Outros nomes de produtos so marca registrada de seus respectivos fabricantes. Copyright 2008 InterSystems Corporation. Todos os direitos reservados. 01-08