• No results found

3.4 b a s e s d e d a d o s

Uma base de dados ´e nada mais nada menos do que um conjunto de informac¸˜ao que se relaciona. Por exemplo uma lista telef ´onica ´e uma base dados mas ap ´os breve an´alise problemas ´obvios podem ser detetados. Encontrar uma pessoa ´e bastante dif´ıcil, encon- trar pessoas que vivam numa determinada ´e poss´ıvel mas muito complicado visto que indexac¸˜ao ´e feita por nome. Pelo facto de ser impressa ´e pouco suscet´ıvel a mudanc¸as no ambiente em redor. Estas desvantagens s˜ao aplic´aveis `as unidades de sa ´ude que ainda utilizem formato papel.

Algumas das primeiras aplicac¸ ˜oes desenvolvidas foram ent˜ao destinadas a criar database systems, capazes de armazenar dados em formato digital e posteriormente retorna-los de forma r´apida e eficaz. Embora as primeiras soluc¸ ˜oes sejam uma melhoria em relac¸˜ao ao tradicional papel est˜ao a anos luz do que novas implementac¸ ˜oes conseguem fazer [100,101].

Nas primeiras implementac¸ ˜oes a informac¸˜ao era armazenada e “representada” aos utili- zadores de diversas formas. Utilizando hierarchical database system com base em estruturas em forma de ´arvore, network database system onde existem links entre dados e por fim aquele que hoje em dia ´e mais utilizador relational model.

A base de dados utilizando modelo relacional foi primeiro introduzida pelo Dr. Edgar F. Codd numa publicac¸˜ao financiada pela IBM com o nome “System R4 Relational” corria o ano de 1970 [100,101]. Basicamente o modelo prop ˜oem que os dados sejam representados com conjuntos de tabelas ligados atrav´es de dados redundantes que representam assim elos de ligac¸˜ao (“relac¸ ˜oes”) entre tabelas bi-dimensionais (constitu´ıdas por linhas e colunas).

As colunas em diferentes tabelas relacionam-se atrav´es de chaves (keys) estabelecidas pre- viamente [101]. Uma chave ou primary key, identifica inequivocamente uma linha sendo a base de dados respons´avel por manter a sua integridade [101]. Existem ent˜ao alguns ter- mos que vale a pena registar, entidade ´e algo que desperta interesse ao utilizador da base de dados por exemplo um paciente. Uma coluna ´e uma parte da informac¸˜ao armazenada na tabela que em conjunto com outras forma uma linha descrevendo assim uma entidade ou uma acc¸˜ao por essa realizada. A tabela ´e ent˜ao conjunto de acc¸ ˜oes que pode ser perma- nente (persistente) ou n˜ao, se for resultado de uma QUERYemStructured Query Language (SQL)por exemplo. Chave estrangeira ´e o nome atribuido a um atributo que tem valor de chave prim´aria noutra tabela do modelo relacional, permitindo diretamente a relac¸˜ao entre tabelas [100,101].

As tabelas e seus constituintes fazem parte de estruturas mais abrangentes, Data Marts (DM) e Data Warehouses (DW). Este ´ultimo refere-se a um armaz´em de dados desenhado e implementado com vista a guardar dados sobre as diversas atividades de uma organizac¸˜ao, com objetivo de disponibilizar a informac¸˜ao para uma r´apida consulta e ainda possibilitar a utilizac¸˜ao de ferramentas de Business Intelligence (BI) [102]. Geralmente estas estruturas

s˜ao criadas como resultado de processos de Extract, Load, Transform (ETL) que atua sobre m ´ultiplas fontes de informac¸˜ao dentro da organizac¸˜ao. Por seu turno, os DM s˜ao estruturas com uma extens˜ao bastante mais reduzida, embora apresentem as mesmas propriedades do caso anterior, geralmente apresentam informac¸ ˜oes sobre uma atividade ou uma secc¸˜ao no seio de uma organizac¸˜ao [102]. Embora os DM sejam parte de um DW, podem criar ilhas de informac¸˜ao se a sua relac¸˜ao com os demais n˜ao for corretamente projetada.

Na mesma altura em que apresentou o modelo relacional, Codd apresentou uma lingua- gem chamada DSL/Alpha para manipular dados em tabelas relacionadas [101]. Ap ´os alguns refinamentos e mudanc¸as de nome por parte da IBM, a linguagem SQL foi formalmente apresentada [101]. Est´a dividida em diversas partes distintas, SQL schema statements e SQL data statements utilizados na criac¸˜ao e manipulac¸˜ao de estruturas numa base de dados [101]. Um exemplo do primeiro caso pode ser visto em3.4adaptado de [101].

CREATE TABLE corporation (corp_id SMALLINT,

name VARCHAR(30),

CONSTRAINT pk_corporation PRIMARY KEY (corp_id) );

Como ´e poss´ıvel observar (exemplo anterior), a linguagem ´e bastante simples e muito intuitiva sem a linguagem n˜ao nonprocedural, ou seja n˜ao existe declarac¸˜ao de vari´aveis ou ciclos por exemplo. Para selecionar informac¸˜ao de uma base de dados uma estrutura fixa deve ser utilizada, comec¸ando sempre pela palavra “select” [101]. A operac¸˜ao de selecionar dados d´a pelo nome de querie, sendo o resultado chamado de result set apresentado na forma de tabela que pode ser exportada e gravada em outras tabelas.

Com SQL n˜ao ´e poss´ıvel escrever aplicac¸ ˜oes completas como acontece com Python ou Java. Para tal ´e necess´ario integrar a linguagem noutra linguagem como caso doProcedural Language-Structured Query Language (PLSQL). “Procedural Language extensions to the Structu- red Query Language”foi desenvolvida pela Oracle em meados dos anos 90 para aumentar a capacidade da linguagemSQL [103]. ´E uma linguagem com elevada estrutura repleta de keywords que s˜ao bastante explicativos daquilo que realmente fazem, por outro lado segue um pouco as directrizes de Java quanto `a portabilidade.

O facto de n˜ao necessitar de intermedi´arios para implementar SQL como sucede com outras linguagens (Java ou Python), torna PLSQL muito atrativa. Java necessita de JDBC, PHP do OCI e Python de cx Oracle[103]. Neste caso o comando insert ou delete pode ser inserido no meio de um procedimento ou trigger sem qualquer tipo de cuidados.

A primeira base de dados que ir´a ser abordada ´e a Oracle Database seguindo-se a MySql sendo que ambas fazem parte da Oracle Corporation desde 2008.

3.4. Bases de Dados 51

3.4.1 Oracle D.B.

Base de dados Oracle ou Oracle RDBMS ´e sistema de gest˜ao de base de dados disponibili- zado pela Oracle Corporation que desde a sua g´enese em 1977 por Larry Ellison, Ed Oates e Bob Miner utiliza o modelo relacional marcando ent˜ao a diferenc¸a para as demais soluc¸ ˜oes, tem alcanc¸ado um sucesso tremendo em todo mundo [100]

Basicamente uma base de dados Oracle ´e uma colec¸˜ao de informac¸˜ao processada como uma unidade, com objectivo de guardar e quando oportuno devolver informac¸˜ao sobre essa unidade. Existe ent˜ao um servidor que rejeita acessos sem permiss˜ao, responde afirmati- vamente em caso contr´ario e ainda assim consiga recuperar em caso de erro ou falha [104]. Cada instˆancia Oracle utiliza um SGA (System Global Area), por forma a desenrolar a parti- lha de mem ´oria permitindo assim guardar dados e controlar toda a informac¸˜ao [104]. Para tal toma partido de um ou v´arios data files, que s˜ao ficheiros f´ısicos, onde est´a alocada toda a informac¸˜ao da base dados como tabelas e indices. Os tablespaces s˜ao ent˜ao conhecidos como o aglomerar de data files.

Quando existe necessidade de aceder a informac¸˜ao, determinado ficheiro ´e carregado, permanecendo posteriormente em cache por um determinado espac¸o temporal. ´E assim reduzido ao m´ınimo o n ´umero de acessos a disco a informac¸˜ao ´e armazenada apenas uma vez no final de determinada operac¸˜ao.

A Oracle disponibiliza tamb´em um IDE, possibilitando a execuc¸˜ao de tarefas e acesso a informac¸ ˜oes de modo gr´afico e com poucos cliques [105]. Com o objetivo minimizar o tempo de trabalho necess´ario e ainda maximizar o retorno proveniente do investimento despendido. A principal feature do SQL Developer mais utilizada ao longo deste projeto foi o editor com capacidade para executar scripts e queries na linguagem PLSQL. Em con- junto com Java e SQL, foram os trˆes grandes pilares da programac¸˜ao existentes no SQL Developer [103].

Como referido anteriormente ´e necess´ario ent˜ao acrescentar as linguagens algo que per- mita fazer a ponte entre estas e SQL e consequentemente as base de dados Oracle. Deve ent˜ao ser instalado no caso do Python o “cx Oracle5.0.2” [106] e um Oracle Instant Client, ´e poss´ıvel ent˜ao, com as credenciais certas e uma conex˜ao `a Internet aceder e manipular informac¸˜ao presente numa base de dados. Esta ligac¸˜ao ser´a esmiuc¸ada no cap´ıtulo 4. Da

mesma forma que caso anterior tamb´em existe uma ponte entre linguagem Php e as base de dados oracle, desta feita ´e necess´ario Apache configurado na m´aquina de forma a conseguir utilizar OCI8. ´E necess´ario tamb´em a existˆencia de um Oracle Instant Client.

3.4.2 Mysql

MySql ´e um sistema para gest˜ao de base de dados (SGBD), dos mais utilizados em todo o mundo que utiliza linguagem SQL [107]. Criado por David Axmark, Allan Larsson e Michael Widenius na d´ecada de 80. Atualmente ´e a database management system mais utilizada em todo o mundo que `a semelhanc¸a da secc¸˜ao anterior, utiliza o modelo relacional sendo de igual forma criado um novo diret ´orio novo na estrutura de ficheiros que a suporta a quando da criac¸˜ao de uma base de dados nova.

Grande parte do sucesso desta framework deve-se `a simples incorporac¸˜ao com linguagem

PHP assim como a f´acil integrac¸˜ao e instalac¸˜ao do servidor [101]. Empresas de renome mundial utilizam Mysql como casos da NASA, Wikipedia, Motorola em aplicac¸˜ao vitais, incorporando atualmente Unicode, Full Text Indexes, GIS, OLAP e muitos outros [101].

Outros pontos fortes desta linguagem s˜ao [108]: • Portabilidade;

• Compatibilidade com diversas linguagens como .NET, Python, Perl,PHP, ASP; • Bom desempenho e estabilidade;

• Gratuito;

• Suporta Triggers, Cursores, Procedimentos e Func¸ ˜oes; • Apresentainterfacegr´afica como MySql Workbench;

• Capacidade de correr em sistemas de 32-bits de RAM, correndo assim em quase todos os computadores existentes atualmente;

• Aplicac¸ ˜oes Web onde existem muitas leituras e poucas inserc¸ ˜oes. A rapidez do MySql ´e ideal para este cen´ario;

• Capacidade das tabelas crescer para suportar um grande volume de entradas; • Estabilidade at´e com novas features que foram adicionadas recentemente.

Da mesma forma que bases de dados Oracle utilizam o SQL Developer o MySql utiliza o MySql WorkBench, implementando quase todos os standards doSQL[108] possibilitando assim queries e desempenho de outras tarefas de forma gr´afica.

3.5 w e b s e r v i c e s

Web Services s˜ao aplicac¸ ˜oes cliente-servidor que comunicam atrav´es da World Wide Web’s (WWW)Hypertext Transfer Protocol (HTTP)[109]. De acordo com o documento WSA (Web