ArangoDB - Modelos de Dados e Modelagem
Neste capítulo, vamos nos concentrar nos seguintes tópicos -
- Interação de banco de dados
- Modelo de dados
- Recuperação de dados
ArangoDB suporta modelo de dados baseado em documento, bem como modelo de dados baseado em gráfico. Vamos primeiro descrever o modelo de dados baseado em documento.
Os documentos de ArangoDB se parecem muito com o formato JSON. Zero ou mais atributos estão contidos em um documento e um valor anexado a cada atributo. Um valor pode ser do tipo atômico, como um número, booleano ou nulo, string literal ou de um tipo de dados composto, como documento / objeto incorporado ou uma matriz. Arrays ou subobjetos podem consistir nesses tipos de dados, o que implica que um único documento pode representar estruturas de dados não triviais.
Mais adiante na hierarquia, os documentos são organizados em coleções, que podem não conter documentos (em teoria) ou mais de um documento. Pode-se comparar documentos a linhas e coleções a tabelas (aqui, tabelas e linhas se referem àquelas de sistemas de gerenciamento de banco de dados relacional - RDBMS).
Mas, no RDBMS, definir colunas é um pré-requisito para armazenar registros em uma tabela, chamando esses esquemas de definições. No entanto, como um recurso novo, ArangoDB não tem esquema - não há razão a priori para especificar quais atributos o documento terá.
E ao contrário do RDBMS, cada documento pode ser estruturado de uma maneira completamente diferente de outro documento. Esses documentos podem ser salvos juntos em uma única coleção. Praticamente, características comuns podem existir entre os documentos da coleção, porém o sistema de banco de dados, ou seja, o próprio ArangoDB, não o vincula a uma estrutura de dados particular.
Agora vamos tentar entender o [graph data model], que requer dois tipos de coleções - a primeira são as coleções de documentos (conhecidas como coleções de vértices na linguagem da teoria de grupo), a segunda são as coleções de borda. Existe uma diferença sutil entre esses dois tipos. As coleções do Edge também armazenam documentos, mas são caracterizadas por incluir dois atributos exclusivos,_from e _topara criar relações entre documentos. Na prática, um documento (ler borda) vincula dois documentos (ler vértices), ambos armazenados em suas respectivas coleções. Essa arquitetura é derivada do conceito teórico de gráfico de um grafo rotulado e direcionado, excluindo as arestas que podem ter não apenas rótulos, mas podem ser um documento do tipo JSON completo em si mesmo.
Para computar dados novos, deletar documentos ou manipulá-los, são utilizadas consultas, que selecionam ou filtram documentos de acordo com os critérios dados. Quer sejam simples como uma “consulta de exemplo” ou tão complexas como “junções”, as consultas são codificadas em AQL - ArangoDB Query Language.