As classificações do banco de dados e os principais conceitos

Vachagan Mirzoian
24 min readApr 2, 2022

--

Programação é o trabalho feito com um algoritmo específico com dados. Mas primeiro você tem que manter alguns dados. Eles são armazenados em um banco de dados. Muitas consultas, definidas pela Linguagem de consulta, são usadas para obter as informações. Essas linguagens são compostas por 5 partes lógicas.

1) Linguagem de definição de dados, linguagem de descrição de dados (DDL) — CREATE, ALTER, DROP TRUNCATE,

2) Linguagem de manipulação de dados (DML) — INSERT, UPDATE, DELETE,

3) Linguagem de Controle de Dados (DCL) — GRANT, REVOKE,

4) Linguagem de Controle de Transação (TCL) — COMMIT, ROLLBACK

5) Linguagem de Consulta de dados (DQL) — SELECT

Existe muitos princípios para classificar bancos de dados e seus sistemas de gerenciamento. De acordo com a atividade empresarial, distinguem-se as tecnologias nuvem e os Armazém de dados, que se destinam a satisfazer as necessidades do negócio.

De acordo com a distribuição territorial, separamos um banco de dados distribuído, cujos dados podem ser fisicamente isolados uns dos outros, mas os servidores são iguais, os dados, estando em computadores separados, são processados por processadores diferentes, os servidores são interligados pela Internet. Podem estar no mesmo Datacenter, no mesmo endereço físico, mas independentemente da localização geográfica dos seus subelementos, toda a base de dados é 1 unidade lógicaCluster. Para manter as passagens adequadas, deve haver uma conexão intensa entre elas, para Replicação e Duplicação. Os bancos de dados distribuídos são Homogêneos ou Heterogêneos. No caso de sistemas homogêneos, todos os servidores utilizam o mesmo Sistema de gerenciamento de banco de dado, o mesmo SGBD.

Há também um banco de dados centralizado, que está completamente em um só lugar. Esta opção é frequentemente usada no caso de redes LAN, quando a organização ocupa um espaço limitado e utiliza um servidor central no qual está localizada a base de dados. Existem vários centros em um Sistema Descentralizado, como um banco de dados centralizado, os subelementos podem diferir em seus direitos e capacidades.

Em termos de arquitetura de software, os bancos de dados podem ser sistemas autônomos do cliente que os utiliza, ou podem ser embutidos como SQLite, usados como biblioteca ou qualquer outro projeto. Outro exemplo é o SQL Server Compact, trabalhando com compactando dados e escrever mais código em volumes menores ou trabalhando com compressão código existente e pressionando o código em menos memória física.

Para obter velocidade, são projetados bancos de dados paralelos, especialmente para o processamento de grandes volumes de informações.

Os dados da base de dados podem ser estruturados ou não estruturados, tipos intermediários são possíveis. Os dados que possuem um Modelo de Dados são Estruturados. Existem também os tipos semiestruturados.

Dependendo da existência da estrutura do model, os bancos de dados também possuem modelos, relacionais ou não relacionais, mas alguns bancos de dados podem trabalhar com mais de 1 modelo. O exemplo clássico de bancos de dados relacionais é o SQL. Bancos de dados não relacionais são bancos de dados com chave-valor, colunas largas, orientados a documentos, alguns bancos de dados gráficos e assim por diante. Com Search Engine e bancos de dados multi-modelo incluem propriedades de 2 grupos.

A tabela mostra uma comparação das características dos 5 modelos fundamentais.

Banco de Dados Relacional — Os dados são armazenadas em tabelas, onde o produto cartesiano é base matemática que permite combinar ou relacionar linhas e colunas entre si.

Exemplos clássicos são SQL, T-SQL e MySQL. Como uma tabela é uma unidade única e independente em um banco de dados SQL, todas as linhas e colunas devem ser iguais, portanto, antes de estender qualquer linha, uma coluna deve ser adicionada à tabela, colocar o valor na interseção com a linha necessária e escrever “null” nos outros campos.

Adicionamos uma coluna e, em seguida, excluímos a coluna inteira, ou seja, não é possível excluir apenas 1 caixa específica. Bases orientadas à colunas foram projetados para corrigir essa deficiência. Pode ser comparado ao trabalho feito com arranjos dinâmicos e estáticos, quando no caso de arrays dinâmicos o comprimento muda, e no caso de arrays estáticos a melhor opção é escrever null ou 0s. Em bases relacionais, a normalização de tabelas é extremamente importante. A informação sobre o objeto, dependendo do tipo, são agrupados em tabelas separadas para que apenas os dados homogêneos sejam encontrados em cada tabela. No caso de um banco de dados não relativo, o objeto específico com todos os seus campos é armazenado em um documento, de modo que os dados mistos fiquem em um só lugar.

Mapeadores Relacionais de Objeto são usados para comunicar a linguagem de consulta de dados e a linguagem server-side. Ele transforma as relações entre de tabelas em objetos ou classes, que são usados pela maioria das linguagens de programação, permitindo que eles se desfaçam dos muitos relacionamentos entrelaçados entre tabelas. SQL e .NET usam o Entity Framework, que permite que você trabalhe diretamente com as bases. Linguagem de .NET, como C# são usados para trabalhar com MRO, mas ao mesmo tempo pode ficar longe da camada de banco de dados. Então o Entity Framework é uma interface sem a qual tivemos que usar o ADO.NET, que envolve escrever código no estilo SQL.

A tabela mostra os conceitos possíveis e seus significados.

Pares chave-valor — dados são objetos do array Associativo trabalhando com a Hash Table, ou são elementos do Dicionário, onde linhas são os dados e cada linha é uma unidade separada. Diferente de outros bancos de dados, neste caso os campos vazios não são preenchidos com calhaus, o que faz com que a memória não seja sobrecarregada. É a forma mais simples e a abstração essencial de bases não relacionais. Muitos aplicativos, usando linguagem como o Redis, operam em uma base na memória, ou seja, as informações são transferidas para um computador cliente. É eficaz para armazenamento em cache, operações em tempo real, etc.

Grafo — A informação não é os dados estáticos, mas as conexões e relacionamentos entre os elementos do banco de dados, ou seja, funciona com uma abordagem de relacionamento em primeiro lugar. Ele é baseado em grafos direcionais, portanto possui vértices — Nodes, que são objetos de qualquer tipo, portanto podem conter campos. O grafo possui aresta que mostram as conexões entre os vertices e possui propriedades que armazenam informações adicionais. Sistemas típicos são TigerGraph com GSQL, e Neo4j com linguagens Cypher. ArangoDB, por exemplo, além de grafos também trabalha com documentos e pares chave-valor. Permite evitar entidades Associativas, Junções e Tabelas de pesquisa que estão disponíveis para bancos de dados relativos e fornecem esquemas adicionais, conexões e arquiteturas mais complexas. Como os bancos de dados grafos se concentram em relacionamentos, essa abordagem é mais conveniente para armazenar dados interconectados com relacionamentos complexos. Um exemplo desse problema é a otimização de cadeias, que ocorre em cadeias produtivas, quando é preciso obter peças diferentes de fornecedores diferentes e obter o produto final, os problemas logísticos podem ser melhorados indefinidamente. Ele é usado para garantir a segurança da internet, para evitar fraudes de cartões bancários, quando é necessário analisar muitas transações consecutivas, para encontrar desvios. Isso pode exigir elementos de aprendizado de máquina.

Base orientado a documentos — destinam-se ao uso geral, portanto, dados não homogêneos podem ser armazenados no mesmo documento, o que causa problemas de normalização. É o principal tipo de banco de dados não relacional e um subconjunto de bases de pares chave-valor. É o conceito diametralmente oposto dos bancos de dados relacionais. Bancos de dados baseados em documentos e os outros usam o Mapeamento de Documentos de Objeto, mas isso é problemático porque, diferentemente dos bancos de dados relasionais, os bancos de dados não relasionais não têm standardização, cada base tem sua própria singularidade e o desenvolvimento de um ODM de uso limitado não é economicamente viável. As informações são armazenadas no documento como JSON, XML ou outro formato. No domínio do banco de dados, o documento é acessível por meio de um índice ou chave exclusiva, e como metadadas. Exemplos de bancos de dados são MongoDB e RedisJSON.

Wide Column Database — a informação é a coluna completa, cada coluna é um ficheiro separado e pode ser armazenado separadamente na memória. A obtenção de dados específicos é mais rápida porque a coluna contém o mesmo tipo de dados que é serializado ou desserializado rapidamente. À primeira vista, o banco de dados baseado em colunas pode parecer muito semelhante aos relacionais, mas as colunas podem ser facilmente alteradas. Pode ser representado como um par chave-valor bidimensional.

Existem diferentes implementações de bancos de dados baseados em colunas, no contexto de cada implementação a prioridade de linha ou coluna é diferente, ou seja, na base, além da coluna, a linha também pode ter um papel. Ou o sistema de gerenciamento de banco de dados, DBMS pode ter uma importância em bancos de dados orientados a colunas. No caso de base Super coluna, cada elementօ — coluna, também pode ser um composto e conter mais de 1 subelemento. A imagem mostra como outras subtabelas virtuais são criadas numa tabela.

Um caso especial é “JSON”, que contém um objeto, que possui outros sub-objetos, eles também possuem seus sub-objetos e etc.

Observando a aparência da árvore, vemos a existência de subcampos:

Todo o banco de dados é um Keyspace.

Os exemplos óbvios são séries temporais, como temperatura, atividade sísmica, dados biométricos e outros eventos periódicos. Por exemplo, um dia do mês é a chave para a coluna e os dados sobre a atividade sísmica são os dados da linha inteira. As tecnologias são linguagem CQL, Apache HBase և ScyllaDB.

Bases do mecanismo de pesquisa — projetado para trabalhar com grandes quantidades de dados em tempo quase real. Tecnologias bem conhecidas são Solr e Elasticsearch. O Elasticsearch fornece APIs REST e usa documentação de formato JSON perfeita sem esquema. As consultas entre endpoints são executadas por meio (XXX) de verbos HTTP, como GET, POST, PUT ou PATCH e DELETE. Os documentos estão localizados em servidores diferentes, portanto, as consultas funcionam em paralelo. A base de dados é pré-indexada, permitindo recuperar os dados mais rapidamente.

Multi model — combina os princípios de bancos de dados relativos e não relativos. Um exemplo de banco de dados é a Fauna API, que é compatível principalmente com o GraphQL, mas muitas linguagens de programação também podem usar o Fauna para suas consultas próprias (XXX). JSON é usado com pouca frequência e Replicação não é necessária aqui.

Ao implementar conceitos de banco de dados na vida real, temos 2 modelos principais, relacionais e não relacionais.

Ao trabalhar (XXX) com bancos de dados, estamos lidando com uma série de conceitos, por exemplo:

1. Database

2. Cloud,

3. Data Warehouse e Data Lake,

4. OLAP e OLTP,

5. Quantitative e Qualitative,

6. Data model, Database model

7. Structurized e Unstructured,

8. Replication e Duplication,

9. Functional Dependency, Partial Dependency, Transitive Dependency

10. Key,

11. Normalization, Normal Forms,

12. Partitioning and Sharding,

13.CRUD,

14. Indexing,

15. View,

16. Union, Intersect, Except

17. Transaction,

18. Stored Procedures

19. JOIN

20. Triggers

21. Schema

1. Banco de dados — um ambiente abstrato de armazenamento, que muitas vezes ocupa memória real e dispositivos físicos, claro, existem modificações específicas para cada situação.

2. Nuvem — sistema de servidor remoto e base de dados para atividades de negócios.

3. Data Warehouse — um sistema centralizado para (da XXX) inteligência de negócios e análise científica. Eles são capazes de processar petabytes de informação alcançando, diferentemente das bases de dados clássicos, supercomputadores são usados como fonte de hardware. Teoricamente utiliza Dados Estruturados e Dados Semiestruturados, consequentemente possui normalização, pureza e singularidade dos dados. Possui uma arquitetura de três camadas:

1) Bottom layer — consiste no servidor principal, que geralmente é um base relacional, realizando o processo ETL ou ELT,

2) Middle layer — consiste em OLAP, camada de processamento analítico online, que agiliza as consultas,

3) Top layer — é o front-end ou interface semelhante.

Combina informações de sistemas de transações como CRM, HRM e ERP, bases de dados de processamento de dados em tempo real, até bancos de dados não relacionais como flat files e outros ficheros. Está disponível para uso final como software, tecnologia de nuvem ou hardware.

Convencionalmente, pode-se comparar com “Stack” quando há regulamentação.

Data Lake — um sistema de uso geral para objetos grandes binários, como fotos, vídeos ou áudio. Dados não estruturados podem ser armazenados eficiente. Em caso de má administração, transforma-se em Data Swamp. Pode ser comparado ao conceito de “Heap”.

A comparação de Data Warehouse e Data Lake está na tabela.

4. OLAP ou Processamento Analítico Online — Análise multidimensional de dados armazenados em Data Warehouse. As dimensões são localização, tipo de objeto, tempo, etc. Por utilizar bases de dados relacionais bidimensionais, as tabelas são combinadas para formar dados multidimensionais (XXX a partir) de camadas. As consultas são complicadas e contêm um grande número de linhas. Eles não alteram os dados existentes, pois a maioria deles apenas os lê (XXX).

OLTP ou Online Tansactional Processing — processamento de transações em escala larga. Garante que a mesma informação seja usada por muitos computadores, também indexa os dados. As consultas são simples e contêm algumas linhas. A mudança de dados é rápida. Os sistemas de pagamento online são um bom exemplo.

5. Dados quantitativos — somente pela sua existência já possuem uma descrição objetiva, são descritos por indicadores estatísticos — quantidade, valor, tamanho, etc. Podem ser discretos ou contínuos. Eles combinam com dados estruturados.

Dados qualitativos — dados agrupados, agrupados de acordo com qualquer atributo. Como a unificação é um fenômeno subjetivo e pode ser realizada de muitas outras formas, os dados qualitativos são não estruturados ou semiestruturados, ou seja, há necessidade de maiores esclarecimentos e classificação. Corresponder a dados não estruturados.

6. Modelo de Dados — é obtido por modelagem, dá aos dados uma estrutura semântica, define a relação entre si e a semelhança com as propriedades dos objetos do mundo real.

Modelo de Base — define a estrutura lógica do banco de dados. Os modelos são rede, documento, relacional, Entidade-atributo-valor, etc.

7. Dados Estruturados — Dados quantitativos compostos por números e valores, apresentados em forma de tabelas, possuem modelos pré-definidos, armazenados em Data Warehouses, as consultas são feitas em SQL ou linguagem similar. Estrutura de dados brutos que ainda não foram processados, podem obter uma estrutura mesmo marcando-os como linguagem HTML (XXX). O site pode ser otimizado para se tornar mais perceptível pelo mecanismo de busca.

Dados não estruturados — dados qualitativos, o estado inicial dos dados quando o modelo de dados está ausente, portanto, é fácil obter grandes quantidades, o que requer muita memória. Porque pode ser adaptado a diferentes formatos de arquivo, pode ser redefinido para necessidades específicas e obter um uso eficiente dos recursos. Os casos de uso são Data mining, NLP e preditive analytics, armazenados de forma mais eficiente em Cloud Data lakes, desenvolvidos em sistemas NoSQL.

Para dizer brevemente, os dados do banco de dados podem ser estruturados ou não estruturados, tipos mistos também são possíveis. Os dados que possuem um Data Model são estruturados, que são obtidos por modelagem, ou seja, dá aos dados uma estrutura semântica, define a relação entre eles, a semelhança com as propriedades dos objetos do mundo real. Existem também os tipos semiestruturados.

8. Replicação — o software especial encontra as alterações feitas em diferentes partes da base de dados e faz com que todas as peças pareçam iguais, ou seja, cancela as alterações ou espalha a alteração em outras partes.

Duplicação — 1 base de dados principal é escolhido e seu conteúdo duplicado, outras alterações são feitas com esse 1 base de dados principal. É o mesmo Backup.

9. Dependência Funcional — restrição, escrita “X → Y”, onde “X” está associado a “Y”. Por exemplo, o número de identificação do veículo, VIN, associado à potência do motor, está escrito “VIN → Motor”, porque um determinado carro tem apenas 1 capacidade. A notação “Motor → VIN” está incorreta, pois há muitos carros com a mesma capacidade. Na tabela, o aluno pode se matricular em mais de uma aula e ter qualquer número de semestre.

Quando 2 linhas na tabela têm o mesmo “ Student ID”, elas têm o mesmo valor de “Semester”. Aqui temos uma dependência funcional “StudentID → Semestre”. Outro exemplo de dependência é a relação {StudentID, Lecture} → {TA, Semester} quando temos um conjunto de atributos {StudentID, Lecture} pré-selecionado e {TA, Semester} onde {StudentID, Lecture} é uma superchave.

No exemplo a seguir, cada funcionário pode ter apenas 1 “Department ID”. Como todos podem trabalhar apenas em um departamento, o ID do funcionário também define o departamento, como {ID do funcionário → ID do departamento}.

O Employee ID é definido pelo nome do funcionário — {Employee ID → Employee Name}. Há também uma dependência funcional na tabela com um atributo não chave — {Department ID → Department Name}. Embora haja uma dependência funcional em {Employee ID → Department ID}, obter “Department ID” usando “Employee ID” não é lógico.

Dependência parcial — ocorre quando uma coluna não-chave é funcionalmente dependente de uma das partes das colunas-chave candidatas.

Considere o exemplo.

A chave primária consiste nas colunas StudentID e ProjectNo. As colunas StudentName e ProjectName devem depender da chave primária. StudentName pode ser determinado por StudentID e ProjectName pode ser determinado por ProjectNo. Portanto, temos uma dependência parcial. Isso também viola as regras da 2ª forma normal.

Dependência transitiva — um tipo de dependência funcional quando a 1ª coluna está conectada à 3ª através da 2. A tabela abaixo mostra um exemplo:

Se conhecemos o livro, também sabemos a nacionalidade do autor, {Book} → {Author nationality}, porque usando o livro primeiro encontramos o autor, {Book} → {Author}, e depois usando o autor, encontramos o nacionalidade do autor, { Author → Author Nationality}. Aqui, o atributo não-chave define outro atributo não-chave.

10. Chave — um atributo ou coluna que permite identificar uma linha. Existem grupos.

1) Super Key — um conjunto de atributos que identifica exclusivamente cada linha, não possui requisitos mínimos de tamanho, podendo incluir outras chaves mais compactas. Define a dependência funcional.

2) Candidate key — como uma “Super Key” mas com o tamanho mínimo possível. As colunas que fazem parte disso são chamadas de “Prime Attribute”, outros atributos são chamados de “Non-Prime attribute”. Uma tabela sem valor “NULL” tem pelo menos 1 “ Candidate key”. São todas as combinações possíveis para identificar a linha.

3) Primary Key — uma seleção que consiste em um conjunto mínimo de atributos que define exclusivamente a linha. É um caso especial de “ Candidate key”. O máximo pode ser de 16 colunas e 900 bytes.

4) Foreign key — um conjunto de colunas que consiste na chave primária de outra tabela. A tabela que contém a “ Foreign Key” é chamada de filha e aquela que contém a chave primária é chamada de pai. A chave escrita na tablea filha é igual à chave primária de outra tabela ou tem um valor NULL. Isso é chamado de integridade referencial.

5) Chave simples — uma chave que consiste em apenas um atributo, uma coluna.

6) Chave concatenada — consiste em 2 ou mais colunas.

7) Compound key — consiste em 2 ou mais colunas, que são a chave primária mostrando outra tabela.

8) Composite key — um caso especial de chave primária, consistindo em 2 ou mais colunas, das quais pelo menos 1 não é uma chave simples. Considere a tabela.

Não é possível obter um valor com apenas 1 campo, pois há valores duplicados em cada coluna. Combinando os valores das colunas “Team” e “Squad number” criamos a Primary key.

9) Natural key — um identificador exclusivo, que também coincide com o objeto do mundo real, tem um significado comercial.

10) Surrogate key — um identificador único, que por si só é um valor (XXX), está mais preocupado (XXX) com a estrutura lógica dos dados, o Data Model, do que com a estrutura física da memória, o Storage model. Ele pode atuar como uma chave primária no contexto de algum banco de dados específico. É uma chave com um valor gerado automaticamente ao registrar valores de teste no banco de dados.

11. Normalization — O processo de construção de bases de dados relationais usando formas normais para reduzir a duplicação de dados e aumentar a integridade dos dados. Colunas e Tabelas são organizadas para que as dependências sejam implementadas de acordo com as restrições de integridade da bases de dados. É realizado por síntese de bases ou por decomposição, ou seja, construindo ou destruindo novas hierarquias de tabelas. Trazer uma forma normal também pode ter um efeito negativo na velocidade, dificultar a gravação de consultas etc. e pode exigir a desnormalização. O conceito se aplica apenas a (à bases) bancos (XXX) de dados relationais, embora bases não relationais também possam ser melhorados (XXX), mas com outros conceitos e abordagens.

Formas normais — Estratégias usadas para normalização, cada nível subsequente também satisfaz o nível anterior.

1ª forma normal — cada coluna deve ter células de valor único, valores duplicados não são permitidos. Em vez (XXX instead of) de armazenar valores duplicados em uma linha com um ID específico, você deve escrever os itens duplicados separadamente em uma tabela separada usando o mesmo ID.

Considere um exemplo de uma tabela incorreta.

2ª forma normal — não há atributo non-prime que seja funcionalmente dependente (XXX) de qualquer subconjunto de chaves candidatas. Ou seja, as colunas que não são primárias não devem ser funcionalmente dependentes das colunas candidatas à chave primária. Com uma chave primária de 1 coluna, a tabela está sempre na segunda forma normal. Antes de se tornar o 2º cavalo, a tabela deve estar na 1ª forma normal.

A provável chave primária nesta tabela é um composto que consiste nas colunas “Manufacturer” e “Model”. A coluna “Manufacturer country” não é a chave primária, nem pode ser considerada como tal, e depende do “Manufacturer”. Esta é uma violação das condições da 2ª forma normal. Para cumprir os requisitos é necessário ter 2 mesas.

Tabela contendo Dependência parcial.

Para trazer a 2ª forma normal, dividimos em partes.

Para trazer a tabela para a 2ª forma normal, dividimos em partes. (XXX)

Para trazer tablea a 2ª forma normal, dividimos-la em partes. (XXX)

No exemplo a seguir também, a segunda forma normal é violada.

A chave primária consiste nas colunas “PART” e “WAREHOUSE”, mas a coluna “WAREHOUSE_ADDRESS” depende apenas da coluna “WAREHOUSE”. O mesmo “WAREHOUSE” pode ter endereços diferentes em linhas diferentes. Devemos garantir que todo Warehouse tenha sempre 1 endereço, ou seja, o Armazém (XXX ele) deve ser usado como chave primária, escrito em uma tabela separada.

3rd normal form — as colunas que não pertencem à chave primária, não devem depender das colunas que não pertencem à chave, coluna não-chave deve depender apenas da coluna chave. Define redução de duplicação, facilita o gerenciamento de dados e integridade referencial. Esta tabela já é a 2ª forma, mas não corresponde à 3ª forma normal.

O Torneio e o seu Ano, são suficientes para identificar a linha de forma única, são a chave primária. Mas o problema é que a coluna não chave “Data de Nascimento” depende da chave primária com a coluna mediadora “Vencedor”, então é permitido que a mesma pessoa possa aparecer com datas de nascimento diferentes. Ao dividir a tabela em partes, resolvemos o problema. A coluna “Vencedor” é a chave à qual apenas 1 valor já corresponde.

Boyce-Code ou 3–5 Normal Form — Uma tabela na 3ª forma normal que não possui chaves candidatas correspondentes. Existe uma dependência A → B onde “A” é uma super chave, então outras colunas, como “B”, são encontradas usando super chave. Deve haver apenas chave primária.

4th Normal Form — a tabela não contém 2 ou mais dados independentes de valores múltiplos (XXX Table does not contain 2 or more independent, multi-valued data). Existem 2 conexões — “Employee e Skill Proficiency” e “Employee e Language Proficiency”. Você não pode ter relações “Skill Code e Language Proficiency”, e “Language Code e Skill Proficiency”, eles não estão relacionados entre si.

Se preenchermos essa tabela com dados, escreveremos valores “Null”.

Para corrigir, escrevemos o seguinte. Não há necessidade de escrever “Null”.

5th Normal Key — A chave composta não contém dependências cíclicas.

12. Partitioning — divisão em unidades independentes. Existem 2 formas na base relacional, horizontal e vertical. Um exemplo de segmentação vertical é a normalização, quando ao invés de (XXX instead of) ter 5 colunas em 1 tabela, temos 2 ou mais tabelas com menos de 5 colunas. A divisão horizontal é chamada de “Sharding”. Considere a imagem.

Sharding — camadas horizontais, de modo que as peças recém-obtidas mantenham o esquema de base e colunas. Uma planilha ou documento é fragmentado porque é difícil trabalhar com um pedaço pedaços, e pedaços pequenos podem ser armazenados em bases diferentes (XXX diferentes bancos de dados) ou em um servidor, processados em paralelo com diferentes processadores (XXX). Melhora a indexação e procurando (XXX). O Sharding Key pode ser usada para a transação de particionamento. Elementos com a mesma chave tornam-se unidades inseparáveis, mudam juntos, formam uma unidade lógica — “Logical Shard”.

13. CRUD — Operações básicas “Criar”, “Ler”, “Atualizar” e “Excluir” para gerenciar o banco de dados.

Com os comandos “CREATE” e “INSERT” são usados para criar a tabela e inserir os dados, em seguida lemos os dados.

A tabela de livros contém ID, título, ISBM e nomes de autores e editora. Nem todos os livros têm 2 autores e uma editora.

A primeira parte do código a seguir adiciona uma nova coluna para patronímicos na tabela USER, altera os valores NULL padrão e exclui a mesma coluna (XXX). As linhas que contêm compras feitas antes de 2019 são excluídas. Ao final, a tabela e a base são deletados com o comando “DROP”.

Ao adicionar uma coluna, temos a seguinte imagem.

14. Indexing — desenvolvimento de consultas que leem dados mais rapidamente, criação de novas colunas (1). Eles estão próximos das chaves de significado. Assim como uma chave é um atributo que descreve dados, um índice é um atributo adicional. É claro que para salvar o recurso adicional pode ser necessária uma memória. Se soubermos o índice de uma determinada linha, trabalharemos com esse local de uma só vez, não haverá necessidade de pegar a tabela inteira. Vamos anunciar um índice.

Na primeira parte do código temos que deletar todas as linhas da tabela, e verificar o título. Na segunda parte aceleramos a execução da consulta. Deve-se notar que a vantagem da indexação é óbvia quando usada em tabelas grandes.

15. View — uma tabela lógica que exibe apenas dados, mas não é armazenada fisicamente na memória (2). O código cria “VIEW”, que incluirá livros C# com 2 autores e, em seguida, modificará para ver todos os livros SQL.

O resultado do trabalho da primeira parte do código.

O “VIEW” após a mudança.

16. UNIÃO, EXCETO e INTERSECT — criação de combinações de linhas (3).

17. Transaction — Contexto de 1 ou mais operações, unidade de trabalho (4).

O algoritmo de pseudocódigo é o seguinte:

1. Inicie uma transação com “BEGIN TRAN”

2. Faça consultas, alterações de dados

3. Se não houver problema, escreva “Commit” para finalizar

4. Se houver algum problema, retorne à sua posição original com rollback.

Existem 3 versões.

1. Explicit transaction — inicia diretamente com o comando “BEGIN TRANSACTION”, termina com o comando “COMMIT TRANSACTION” ou “ROLLBACK TRANSACTION”.

2. Implicit transaction — é como uma transação explícita, funciona com os comandos “COMMIT TRANSACTION” e “ROLLBACK TRANSACTION”, mas com o comando “SET IMPLICIT_TRANSACTIONS ON” você deve iniciar uma transação “oculta”, após a qual os objetos da transação serão “bloqueado”. Nesse caso, eles continuam sendo desenvolvidos usando os comandos “Commit” e “Rollback”.

3. Auto-commit transaction — uma transação que ocorre de tempos em tempos, que não é feita explícita ou implicitamente. Os comandos “SELECT” e “INSERT” são um exemplo de transação automática. Em caso de inserção de dados inconsistentes, o “Rollback” ocorre automaticamente, e os dados não são alterados devido a um erro.

Cada transação deve atender a 4 condições chamadas — ACID.

1. Atômica — todas as operações são tão inseparáveis quanto um átomo, executadas em conjunto ou falhando em conjunto.

2. Consistente — o resultado é previsível, antes da transação a base permanece estável, infalível.

3. Isolado — garante que, em vez de atuar nos mesmos dados ao mesmo tempo, os dados sejam sequenciados.

4. Durável — o resultado final não depende do processo de execução. Se houver um resultado depois de (XXX) transação completo, após o recebimento do qual o sistema falhou, o resultado não deve desaparecer.

Checkpoint — algoritmo, que transfere os dados armazenados no log de transações e os dados alterados durante o processo de transação para a memória física. Primeiro, Log files são armazenados na memória, os dados brutos do cache do buffer, vão para a memória, o Checkpoint Log Sequence Number é gravado na página de inicialização ou boot page. Existem 4 tipos — Automatic, Indirect, Manual e Internal. Cada alteração feita na transação não é imediatamente transferida do buffer pool para a memória, mas é feita de acordo com o princípio “Checkpoint”’.

A maioria das consultas DDL no T-SQL são transacionais (5).

18. Stored Procedures — um objeto armazenado na base de dados, pode aceitar parâmetros, também pode retornar (6).

Para executar o procedimento use “EXEC GetProduct”.

19. JOIN — uma ferramenta para selecionar colunas de 2 ou mais tabelas (7). Existem muitos modelos matemáticos, mas no T-SQL existem 5 tipos lógicos — Inner Join, Left Outer, Join Right, Outer Join, Full Outer Join e Cross Join. Aparência principal․

SELECT

FROM Table A

JOIN Table B

ON …

WHERE …

Primeiramente criamos tabelas para armazenar os dados do Buyer, Product e Order.

Após preencher os dados usando o comando INSERT INTO, obtemos as tabelas Buyer, Product e Order com o comando SELECT.

Usando a tabela Order, podemos descobrir quem comprou o quê (XXX).

Pegamos o nome, sobrenome, cidade da tabela de Buyer. Selecionamos o nome do produto na tabela de produtos. Mas temos que combinar a tabela de Buyer com as tabelas de Products e Orders. O resultado é ordenado alfabeticamente.

20. Triggers — é um stored procedure executado após um evento (8). Os DML Triggers funcionam após eventos específicos como Inserir, Excluir e Atualizar. Eles são compilados com antecedência e começam a funcionar automaticamente. Um Trigger é declarado, o evento é definido, o corpo é escrito.

Linhas com IDs maiores que 16 são excluídas da tabela de Order, mas a exclusão ativa os gatilhos que adicionam 2 pedidos novos (XXX). Ao examinar a coluna ID, garantimos que as linhas sejam excluídas primeiro e depois adicionadas novamente.

Também podemos criar JOIN dentro do corpo do Trigger.

Assim que tentamos fazer algum INSERT, obtemos o texto “JOIN was done instead of INSERT” e a tabela JOIN.

21․ Schema — o conjunto de atributos de uma tabela ou relação e seus elementos. Ele é definido pelo código da linguagem de programação, como DDL (9), mas esse termo geralmente significa representação gráfica. O star schema é frequentemente usado durante a desnormalização (10). É o relacionamento das tabelas ou outras unidades no banco de dados, hierarquia e blueprint. É armazenado e descrito no dicionário, como metadados.

Deve-se entender que o desenho dos bancos de dados é baseado em pesquisas científicas e conceitos teóricos. Cada empresa pode fornecer sua arquitetura própria (XXX) de bases de dados para necessidades certas (XXX) de negócios.

Recursos usados

1) Learn SQL Database Programming, Query and manipulate DBs from popular relational DB servers using SQL, Chapter 4

2) SQL Pocket Guide, A Guide to SQL Usage, 4th Ed., Chapter 5

3) T-SQL Querying, Developer Reference, Chapter 3

4) Beginning T-SQL with Microsoft SQL Server 2005 and 2008, Chapter 10

5) Exam Ref 70–761 Querying Data with Transact-SQL, Chapter 3.2

6) Microsoft SQL Server 2019, A Beginner’s Guide, 7th Ed. Chapter 8

7) Beginning T-SQL, A Step-by-Step Approach, 4th Ed. Chapter 5

8) Beginning T-SQL, A Step-by-Step Approach, 4th Ed. Chapter 5, Chapter 13

9) Learn SQL Database Programming, Query and manipulate DBs from popular relational DB servers using SQL, Chapter 1

10) Database Design and Relational Theory, Normal Forms and All That Jazz, 2nd Ed., Chapter 8

Data Lake vs Data Warehouse — https://www.talend.com/resources/data-lake-vs-data-warehouse/

Data lake և data warehouse — https://www.ibm.com/cloud/blog/cloud-data-lake-vs-data-warehouse-vs-data-mart

Qualitative և Quantitative data — https://www.g2.com/articles/qualitative-vs-quantitative-data

Structured e Unstructured data — https://www.ibm.com/cloud/blog/structured-vs-unstructured-data

Tipos de transações — https://www.sqlshack.com/modes-of-transactions-in-sql-server/

Escreve-me no LinkedIn, Instagram, Tiktok e Facebook

--

--

Vachagan Mirzoian
Vachagan Mirzoian

Written by Vachagan Mirzoian

Acumatica ERP Developer, Biz-Tech Services, Inc.

No responses yet