1. O que é um Banco de Dados
1.1. Informações correlacionadas
1.2. Aborda assunto em específico
1.3. Banco de Dados vs Bando de Dados
1.4. Não há somente uma resposta
2. O que é um SGDB
2.1. Capacidade de gerenciar, interagir e manipular as informações do banco de dados
2.2. Responsável por controlar a concorrência de requisições
2.3. Disponibiliza gatilhos para manter a integridade das informações
2.4. 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...)
2.5. Controla o fluxo de informações para não gerar redundância de informações
3. Abstração e Projeção
3.1. Abstração: Compreender o processo "humano" e transcrever de maneira lógica e organizada
3.2. Projeção: Organizar, segmentar, analisar todas as informações necessárias e export de maneira que o SGDB compreenda
4. Nosso Ambiente
4.1. MariaDB
4.1.1. Relacional
4.1.1.1. Todas as informações são relacionadas em torno de um problema que deve ser resolvido
4.1.1.2. Modelo de Entidade-Relacionamento
4.1.1.3. Relacionamento 1..1
4.1.1.4. Relacionamento 1..N
4.1.1.5. Relacionamento N..M
4.1.2. Transacional
4.1.2.1. Uma sequência de processos, que quando executadas formam apenas uma ação
4.1.2.2. 4 atributos ACID
4.1.2.2.1. 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).
4.1.2.2.2. 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]...)
4.1.2.2.3. 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"
4.1.2.2.4. 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
4.1.2.3. Gerenciado na maioria das vezes pela própria aplicação, mas há a possibilidade de forçar o uso em determinadas situações.
4.1.3. Normalizado
4.1.3.1. Tem se normalizado, um banco que atende as 5 formas normais.
4.1.3.2. Um banco normalizado nas 5 formas normais tende a ser extremamente dinâmico porém com perda de desempenho
4.1.3.3. 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.
4.2. Hierarquia
4.2.1. Banco de dados: Conjunto de tabelas
4.2.1.1. lojavirtual
4.2.1.2. blog
4.2.1.3. imobi
4.2.2. Tabelas [Entidade]: Conjunto de campos com linhas
4.2.2.1. posts
4.2.2.2. categories
4.2.2.3. users
4.2.2.4. products
4.2.3. Campos [Atributos]: Responsável por armazenar uma informação. E este possui parâmetros e valores para configuração
4.2.3.1. post_title
4.2.3.2. post_subtitle
4.2.3.3. post_author
4.2.4. Linhas [Registros]: Uma informação pertinente ao campo da tabela
4.2.4.1. posts
4.2.4.1.1. post_title
4.2.4.1.2. post_subtitle
4.2.5. Parâmetros e valores: Pertinentes aos campos/atributos
4.2.5.1. Nome
4.2.5.2. Tipo?
4.2.5.2.1. Numérico
4.2.5.2.2. Texto
4.2.5.2.3. Data/Hora
4.2.5.3. Permite nulo?
4.2.5.3.1. Sim ou não
4.2.5.4. Auto incremento?
4.2.5.4.1. Sim ou não
4.2.6. Resumo:
4.2.6.1. [BD] blog
4.2.6.1.1. [ENTIDADE] posts
4.2.6.1.2. [REGISTRO] posts
4.2.6.1.3. [ENTIDADE] categories
4.2.6.1.4. [REGISTRO] categories
4.2.6.1.5. [ENTIDADE] users
4.2.6.1.6. [REGISTRO] users
5. Características do MariaDB
5.1. Implementação C e C++
5.2. Multiplataforma
5.3. Open Source
5.4. Aceita várias linguagens de programação
5.4.1. C
5.4.2. C#
5.4.3. C++
5.4.4. Java
5.4.5. Objective-C
5.4.6. Perl
5.4.7. PHP
5.4.8. Python
5.4.9. Ruby
5.5. Comparação MariaDB x MySQL
5.5.1. Evolução
5.5.2. Um é melhor que outro, mas outro não é melhor que um! [Atualmente]
5.5.3. Plugins adicionais
5.5.3.1. Migração de dados legado
5.5.3.2. Storage Engines
5.5.3.2.1. +Mecanismos de armazenamento
5.5.3.2.2. Aria -> Mylsam = Melhora no cache
5.5.3.2.3. XtraDB -> InnoDB = Melhora o desempenho em hardware moderno
5.5.3.2.4. Engine sequencial crescente e decrescente SEQUENCE (não substitue o AUTO_INCREMENT)
5.5.3.2.5. Possibilidade de integração com banco NoSQL
5.5.3.3. Benckmark aprovado
5.5.3.3.1. 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
5.5.3.3.2. Benckmark não traduz realidade, mas aponta para o caminho correto
5.5.3.3.3. Uso pouco mais elevado de memória
5.6. Repositórios
5.6.1. Mysql
5.6.2. MariaDB