Definição de banco de dados

O que é um Banco de Dados

Informações correlacionadas

Aborda assunto em específico

Banco de Dados vs Bando de Dados

Não há somente uma resposta

O que é um SGDB

Capacidade de gerenciar, interagir e manipular as informações do banco de dados

Responsável por controlar a concorrência de requisições

Disponibiliza gatilhos para manter a integridade das informações

Garante a segurança que somente usuários com permissão possam ter qualquer tipo de interação com o banco de dados (leitura, escrita, alteração, remoção...)

Controla o fluxo de informações para não gerar redundância de informações

Abstração e Projeção

Abstração: Compreender o processo "humano" e transcrever de maneira lógica e organizada

Projeção: Organizar, segmentar, analisar todas as informações necessárias e export de maneira que o SGDB compreenda

Nosso Ambiente

MariaDB

Relacional

Todas as informações são relacionadas em torno de um problema que deve ser resolvido

Modelo de Entidade-Relacionamento

Relacionamento 1..1

Relacionamento 1..N

Relacionamento N..M

Transacional

Uma sequência de processos, que quando executadas formam apenas uma ação

4 atributos ACID

Atomicidade: Todo processo deve ter um fim, e quando executado com falha deve ser desprezada as informações (rollback), e quando finalizada com sucesso devem ser escritas no repositório (commit).

Consistência: Todos os processos devem ser executados obedecendo todas as regras e restrições impostas (valores únicos [UNIQUE], chaves estrangeiras [Foreing Key], valores não nulos [NOT NULL]...)

Isolamento: Nenhuma transação pode afetar outra em andamento. Se elas forem concorrentes (alteram a mesma tabela por exemplo) uma deve ser finalizada antes que outra possa ser executada. Nesse momento a transação fica numa fila chamada "spool"

Durabilidade [ou Persistência]: Toda informação escrita no repositório só pode ser desfeita/refeita por outra transação. Isso significa que não pode ser suscetível a erros de hardware por exemplo

Gerenciado na maioria das vezes pela própria aplicação, mas há a possibilidade de forçar o uso em determinadas situações.

Normalizado

Tem se normalizado, um banco que atende as 5 formas normais.

Um banco normalizado nas 5 formas normais tende a ser extremamente dinâmico porém com perda de desempenho

Um banco não normalizado (desnormalizado) tende a ter um desempenho melhor, porém com informações limitadas. Pode ser chamado também de dimensões, ao invés de tabelas.

Hierarquia

Banco de dados: Conjunto de tabelas

lojavirtual

blog

imobi

Tabelas [Entidade]: Conjunto de campos com linhas

posts

categories

users

products

Campos [Atributos]: Responsável por armazenar uma informação. E este possui parâmetros e valores para configuração

post_title

post_subtitle

post_author

Linhas [Registros]: Uma informação pertinente ao campo da tabela

posts

post_title

Um artigo de teste para UpInside Treinamentos

post_subtitle

Aqui você estuda tudo o que precisa para se tornar um WebMaster de Sucesso!

Parâmetros e valores: Pertinentes aos campos/atributos

Nome

Tipo?

Numérico

Texto

Data/Hora

Permite nulo?

Sim ou não

Auto incremento?

Sim ou não

Resumo:

[BD] blog

[ENTIDADE] posts

[ATRIBUTO] post_title

texto, não nulo

[ATRIBUTO] post_subtitle

texto, não nulo

[ATRIBUTO] post_category

texto, não nulo

[ATRIBUTO] post_author

texto, não nulo

[ATRIBUTO] post_date

data e hora, não nulo

[REGISTRO] posts

Artigo de teste, Subtítulo do meu primeiro artigo, Programação, Gustavo, 2017-05-18

[ENTIDADE] categories

[ATRIBUTO] category_name

texto, não nulo

[ATRIBUTO] category_description

texto, não nulo

[REGISTRO] categories

Programação, Tudo sobre programação num só lugar

[ENTIDADE] users

[ATRIBUTO] user_name

texto, não nulo

[ATRIBUTO] user_email

texto, não nulo

[REGISTRO] users

Características do MariaDB

Implementação C e C++

Multiplataforma

Open Source

Aceita várias linguagens de programação

C

C#

C++

Java

Objective-C

Perl

PHP

Python

Ruby

Comparação MariaDB x MySQL

Evolução

Um é melhor que outro, mas outro não é melhor que um! [Atualmente]

Plugins adicionais

Migração de dados legado

Storage Engines

+Mecanismos de armazenamento

Aria -> Mylsam = Melhora no cache

XtraDB -> InnoDB = Melhora o desempenho em hardware moderno

Engine sequencial crescente e decrescente SEQUENCE (não substitue o AUTO_INCREMENT)

Possibilidade de integração com banco NoSQL

Benckmark aprovado

Estudos comprovam ganho de em média 5% na geração de cada query. Em um sistema como um todo esse ganho é visívelmente significativo

Benckmark não traduz realidade, mas aponta para o caminho correto

Uso pouco mais elevado de memória

Repositórios