Bases de Dados em ambientes de Código Aberto João Silva
Resumo Este relatório relata o trabalho realizado ao longo do segundo semestre de 2011, tendo em vista a aplicação dos conceitos introduzidos nas aulas da cadeira de DWCA/BDCA. Serão apresentados dois projectos distintos, Singular Framework e Timetables, que servem de base à tese de mestrado a realizar no próximo ano lectivo.
Keywords: Bases de dados Relacionais, Timetables, Singular Framework, Open Source, MySql, PHP.
1. Introdução Num momento de grande indefinição relativamente ao futuro das plataformas móveis, tornase cada vez mais difícil escolher segmento de mercado a atingir. Reunir competências nas diferentes plataformas, eleva os preços de produção para níveis incomportáveis. O desenvolvimento de aplicações baseadas em tecnologia web suportada pela maioria dos sistemas, representa assim uma alternativa.
Aproveitando a oportunidade para abordar a temática das bases de dados relacionais, e como preparação para tese de mestrado a realizar no próximo ano lectivo, este relatório faz uma breve apresentação do projecto, focando em especial os aspectos mais relevantes no âmbito da cadeira de “Bases de Dados em ambientes de Código Aberto”.
2. Visão global Como modelo de análise, foi iniciado um projecto que permite a partilha de informação entre utilizadores de dispositivos móveis. O sistema é composto pela aplicação cliente “Timetables” a “correr” nos dispositivos móveis, e a respectiva plataforma de suporte o “Singular Framwork” que será responsável pela gestão e administração de toda a informação.
Figura 1 - Visão global do projecto
De seguida serão apresentadas as duas componentes do sistema, com especial detalhe nas implementações dos modelos de dados e forma como estes são questionados e/ou mantidos.
3. Singular Framework A plataforma de gestão de conteúdos “Singular”, parte de uma ideia que surgiu em 2008 e que tinha como objectivo fazer um CMS de utilização simples para o web-developer, simples no sentido de ser genérico o suficiente para que fosse utilizado em qualquer projecto, mesmo por pessoas que não tivessem grande experiência com a programação. Como desafio tecnológico, pretendia-se ainda que o sistema modular fosse crescendo em torno de um núcleo central que controlava toda a informação.
Partindo de uma tebela central “systems_setup”, e limitada em termos de tipos de dados, o
“Singular Framework” é extremamente simples de configurar e utilizar sem que seja necessário escrever código SQL.
Figura 2 - Área de administração de conteúdos
Quando surgiu a ideia de fazer uma aplicação para dispositivos móveis utilizando tecnologia Web o “Singular” foi a solução óbvia para fazer a gestão de dados do sistema e respectivo website que apresenta o projecto.
Modelos de dados (exemplo da tabela “estatiscticas”) Table structure for table estatiscticas Field
Type
Null
Default
Comments
id
int(11)
No
remote_addr
varchar(15)
No
page
int(4)
No
0
date
date
No
0000-00-00
time
time
No
00:00:00 AM
user
int(4)
No
0
platform
varchar(20)
Yes
NULL
browser
varchar(40)
Yes
NULL
refPage
varchar(100)
Yes
Sendo o mais interessante dos módulos em termos de consultas à BD, decidi mostrar o modelo de dados e alguas queries à tabela “estatiscticas”.
Exemplos de SQL
# Queries à tabela das estatísticas: # Selecionar a data da prieira visita SELECT MIN(date) FROM `estatiscticas` LIMIT 1
# Diferença em diasystemre a primeira e última visita (Nº de dias online) SELECT DATEDIFF(NOW(),(SELECT MIN( date ) FROM `estatiscticas` LIMIT 1)) as n_dias_online; systemp 10 das datas c/ mais visitas únicas e respectivo número de visitas SELECT COUNT(DISTINCT remote_addr) as ndias, date FROM `estatiscticas` GROUP BY date DESC LIMIT 10 systemp 10 das páginas mais visitadas, listar titulo e id da pagina c/ o respectivo nº de visitas por página SELECT DISTINCT(`page`), title_uk, COUNT(page) as visits FROM `estatiscticas`, content WHERE estatiscticas.systemontent.id GROUP BY pagesystem BY visits DESC LIMIT 0,10;
# listagem de todos os browsers e respectiva plataforma e número de visitas SELECT DISTINCT( `browser`), platform, COUNT(browser) FROM `estatiscticas` WHERE page="0" GROUP BY 1 ORsystem 2 DESC;
# Número de visitas realizadas por users com S.O. Linux Based SELECT COUNT( * ) FROM `estatiscticas` WHERE platform LIKE '%linux%systemPAGE = '0'
# Nº de visitas no mês de Setembro de 2010 SELECT count(*) FROM `estatiscticas` WHERE page=0 and date LIKE 'system09-%';
# Nº de visitas no mês de Janeiro independentemente do ano SELECT count(*) FROM `estatiscticas` WHERE page=0 and date LIKE 'system';
# Reunir o conjunto de "primeiras letras" distintas que compõem o nome dos content" SELECT DISTINCT left(title, 1) AS letra FROM content WHERE active=1 ORDER BY title ASC
NOTA: Cada visita única gera obrigatóriamente uma entrada na tabela “estatiscticas” com “page=0”;
Figura 5 systemtísticas de visitas no painel de administração
4. Timetables
Timetables é o nome provisório do cliente que ficará instalado no dispositivo móvel. Baseada em HTML5 e Javascript, esta aplicação faz gestão da informação que estará disponível para consulta.
Figura 3 - Cliente para dispositivos móveis
Modelo de dados ALL QUERIES REMOVED FOR SECURITY REASONS
Exemplos de SQL ALL QUERIES REMOVED FOR SECURITY REASONS