-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
0bfac69
commit ce8e058
Showing
16 changed files
with
221 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# FEUP LBAW 2021 | ||
|
||
This repository includes the project my group made (including the wiki), the | ||
theoretical classes' slides, and some questions from the previous years' exams. | ||
|
||
## Project | ||
|
||
The project is a webpage themed around "Collaborative Q&A". We borrowed many | ||
ideas from [Stack Overflow](https://stackoverflow.com/). | ||
|
||
**Grade:** don't know yet | ||
|
||
## Collaboration | ||
|
||
We 4 collaborated in the making of the project. | ||
|
||
- Ana Inês Oliveira de Barros, [email protected] | ||
- João de Jesus Costa, [email protected] | ||
- João Lucas Silva Martins, [email protected] | ||
- Ricardo Jorge Cruz Fontão, [email protected] | ||
|
||
## License | ||
|
||
Unless stated otherwise, the source code files in this repository are licensed | ||
under an MIT license. |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
# Exame LBAW | ||
|
||
Por quem são identificadas as User stories? Stakeholders do projeto. | ||
|
||
Qual das seguintes opções é uma desvantagem decorrente da utilização de stored | ||
procedures? A incapacidade de reutilização noutros SGBD do código desenvolvido. | ||
|
||
Qual dos seguintes representa um cenário ideal para um índice do tipo Hash? Num | ||
campo de username, usado para encontrar um utilizador específico. | ||
|
||
O que garante a propriedade da consistência na execução de uma transação numa | ||
base de dados? A transação transforma a base de dados de um estado válido para | ||
outro estado válido. | ||
|
||
Uma FOREIGN KEY faz referência a atributos de uma segunda tabela. O que têm de | ||
ser os atributos? UNIQUE. | ||
|
||
Qual é o efeito da otimização da base de dados por desnormalização da terceira | ||
forma normal? Acelera o desempenho do sistema. | ||
|
||
O que se entende por sinais (critérios) independentes da interrogação de | ||
pesquisa? Sinais que são calculados aquando da indexação dos documentos. | ||
|
||
Na arquitetura da framework web do projeto de LBAW, o que deve acontecer no caso | ||
de erro num recurso web de ação? Deve haver um redirecionamento para outro | ||
recurso web. | ||
|
||
Para que são usados os Wireflows? Descrever as interações principais com o | ||
sistema. | ||
|
||
O que inclui o estudo da carga do sistema usado no desenho do Esquema Físico? As | ||
alterações SQL (UPDATE, DELETE) importantes e qual a sua frequência. | ||
|
||
Para especificar o recurso web de resposta a um pedido AJAX, é imprescindível: A | ||
especificação dos códigos de retorno ("Returns"). | ||
|
||
Do ponto de vista semântico, quais os elementos HTML que devem ser usados na | ||
estruturação de um menu horizontal ou vertical? ul e li. | ||
|
||
Composição quer dizer que se pai desaparecer, filhos tmb desaparecem. Agregação | ||
não. | ||
|
||
Em interações AJAX, que formato deve ser usado nas respostas enviadas pelo | ||
servidor? As respostas a pedidos AJAX podem ser formatadas em HTML, XML ou JSON, | ||
entre outros. | ||
|
||
## Random | ||
|
||
- **Business rules** - é ideias de como funciona: "A data de devolução tem de | ||
ser superior a uma data de empréstimo que ainda não tenha devolução registada" | ||
- **Technical requirement** - é coisas como "sistema deve ser seguro" | ||
|
||
## Design | ||
|
||
- **Wireframes** - show page-level layout ideas (not good at describing | ||
interaction). | ||
- **Flowcharts** - document complex workflows and user tasks (interactions). | ||
|
||
## Indexes | ||
|
||
B+ Tree index: É uma tree like data structure onde cada nó da árvore tem | ||
pointers para outro nó e valores. Use partially full blocks to speed insertions | ||
and deletions. | ||
Automaticamente reorganiza-se com small local changes. Não é necessário | ||
reorganizar o file completo. Extra insertion, deletion, and space overhead. | ||
|
||
Hash index: recebe key e dá hash (bucket). A hash function deve ser uniforme e | ||
aleatoria. Bucket tem vários items diferentes e tem de ser searched | ||
sequentially. Overflow buckets são chained together com linked lists. No sorting | ||
ou range searches. Always secondary indexes. | ||
|
||
Unique indexes: são criados automaticamente para UNIQUE e PK entries. Servem | ||
para dar enforce a constraint. | ||
|
||
GiST: pode dar falsos positivos. Best for dynamic data. Faster to update (3 | ||
times faster). | ||
GIN: faster querries e dá handle a large ammounts of data better (3 times | ||
faster). Best for static data. Slower to update. These are good to make | ||
full-text search (FTS) faster by indexing the pre-calculated ts_vector column. | ||
|
||
### Choosing indexes | ||
|
||
Workload: | ||
|
||
- Querries mais importants (SELECT) e sua frequência. | ||
- Updates mais importants (UPDATE, DELETE) e a sua frequência. | ||
- Performance desejada para estas querries e updates. | ||
- Estimativa do numero de tuplos em cada relacao (order of magnitude + estimated | ||
growth). | ||
|
||
Quando é preciso ser fast: | ||
|
||
- B+ tree index: allows searching, sorting, range search. | ||
- Hash index: não dá range search nem sorting, mas searchs são muito fast. | ||
|
||
### When to cluster | ||
|
||
#### Cardinality | ||
|
||
Cardinality: **uniqueness** of data values in a column. Usado para estimar | ||
numero de rows retornadas por WHERE clauses | ||
|
||
- High cardinality - primary key. | ||
- Medium cardinality - last name in a customer table. | ||
- Low cardinality - boolean column | ||
|
||
#### Cluster | ||
|
||
CLUSTER pode ser usado para ordenar uma tabela com base num index (só 1) | ||
|
||
- Reduce the number of block reads: | ||
- numero de tuplos e alto e há muitos tuplos por bloco. | ||
- cardinalidade média. | ||
- Permitir leitura sequencial de blocos: | ||
- normalmente em range searchs de colunas com baixa cardinalidade. | ||
- Nao interessa muito em SSDs. | ||
|
||
## Denormalization | ||
|
||
Aumentar performance de uma base de dados adicionando copias (redundantes) de | ||
data. Pode ser feito usando formas normais alternativas (mais baixas). | ||
É importante manter a data redundante consistent, por exemplo, usando triggers. | ||
|
||
IMP: materialized views são uma alternativa à desnormalização. Dão store ao | ||
result de uma querry numa tabela e podem ser refreshed as needed. | ||
|
||
## Transactions | ||
|
||
PostgreSQL é **Read committed** por default. | ||
|
||
```txt | ||
| Isolation Level | Dirty Read | Nonrepeatable Read | Phantom Read | | ||
|==================|==============|====================|==============| | ||
| Read uncommitted | Possible | Possible | Possible | | ||
|------------------|--------------|--------------------|--------------| | ||
| Read committed | Not possible | Possible | Possible | | ||
|------------------|--------------|--------------------|--------------| | ||
| Repeatable read | Not possible | Not possible | Possible | | ||
|------------------|--------------|--------------------|--------------| | ||
| Serializable | Not possible | Not possible | Not possible | | ||
|------------------|--------------|--------------------|--------------| | ||
``` | ||
|
||
## Information retrieval - Signals | ||
|
||
- Static - can be computed during the indexing process. | ||
- Query-dependent - are only available at query time. |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# LBAW Presentation | ||
|
||
- Começar no about | ||
- Motivation enquanto fontao vai para a Home | ||
- Fazer register do Carlos e falar sobre Input validation | ||
- Editar profile do Carlos (nome, foto, about) - referir que vamos fazer do | ||
account deletion depois | ||
- Ir a ask question | ||
- Sugerir topico laravel | ||
- Login no admin para aceitar o topico | ||
- Dar F5 no ask question e escrever questao com o editor (nao esquecer do typo) | ||
- Dar tag como laravel | ||
- Editar questao para corrigir tipo | ||
- Inserir bounty e referir "tag" do bounty | ||
|
||
- Clicar na notificacao de achievement: referir o que esta a verde | ||
- Ir a tab de activity: referir hot topics do user e top questions | ||
- Ir para search tab total e mostrar paginacao (mostrar users tab tmb) | ||
- Mostrar sort: by latest | ||
- Mostrar filtrar por data: 09/06/2021 (referir que as opcoes de pesquisa se | ||
mantêm) | ||
- Procurar por "construction": full text search do constructs | ||
- Procurar por "operator condition ternary": full text search do titulo+corpo e | ||
titulo tem mais prioridade | ||
- Procurar por "tjerrom0": users e questoes | ||
- Mostrar responsividade da pagina: extra small-, small, medium+ | ||
- Procurar por construction e ir para a do glehrian8 | ||
- Dar downvote a questao, upvote a accepted | ||
- Inserir comentario na questao a dizer "Your question doesn't make any sense" | ||
- Editar comentario | ||
- Votes + inserir/editar comentario é tudo AJAX | ||
|
||
- Sugerir edit para questao: "Are python lists arrays?" | ||
- Ir admin e aceitar edit | ||
- Dar F5 para mostrar que a questao foi updated | ||
- Procurar user: "set clear" | ||
- Reportar comment e answer | ||
- No admin ir ao comment e editar: don't forget de dar hover nas tooltips | ||
- No admin aceitar ban do comment só | ||
- Voltar ao user e dar F5: falar da politica de eliminacao de contas | ||
- Tentar report na answer again e mostrar que não dá | ||
|
||
- No admin responder à questão | ||
- No user aceitar a answer: mostrar que a bounty foi crossed-off em cima e | ||
reputation do admin subiu | ||
- Mostrar leaderboard | ||
|
||
- Dar log out | ||
- Ir a login recuperar password |