Minicurso
ArangoDB - Python com
Dados MultiModelos
Autor
Felipe Augusto Bastos Moraes
@felipebastosweb
Quem Sou
● Graduado em Análise de Sistemas
● Pós-Graduado em Gerenciamento de Projetos
● Participa das Comunidades PHPBA, GruPy-
BA, DockerBR, ArangoDB Brasil, MongoDB
Brasil, etc
Onde me Achar
Basicamente o @felipebastosweb
● https://github.com/felipebastosweb
● https://medium.com/@felipebastosweb
● https://bitbucket.org/felipebastosweb
● https://www.facebook.com/felipebastosweb
● https://www.slideshare.com/felipebastosweb
● https://www.linkedin.com/in/felipebastosweb
● https://www.twitter.com/felipebastosweb
● https://www.dropbox.com/sh/6j8haujms7pgz2w/AABRm6StOqLa
mL3bGw5mTQAba?dl=0
Inspiração 1
Banco de Dados Relacional
● Bancos Relacionais
– MySQL
– MS SQL
– Oracle
– PostgreSQL
● Modelo
– Tabelas
– Colunas
– Registros
– Chaves
● Linguagem Comum
– SQL (Strutured Query)
● Propriedades
– Atomicidade (tudo ou nada)
– Consistência (estado válido)
– Isolamento (concorrência)
– Durabilidade
Inspiração 2
NoSQL - Not Only SQL
● Principais bancos
– Redis
– MongoDB
– Neo4j
– DynamoDB
– Cassandra
– CouchDB
– ArangoDB
– OrientDB
● Principais Modelos:
– Documentos
– Grafos
– Chave-Valor
NoSQL - Características
● Sem Schema ou Schema Flexível
● Escalabilidade Horizontal
● Suporte Nativo a Replicação
● Estado Leve e Consistência Eventual
● Principais tipos de Schema:
– Chave-Valor
– Documentos
– Graphos
ArangoDB - Download
● Link de Referência
– https://www.arangodb.com
● Versão Comunidade:
– https://www.arangodb.com/download-major/
Python - Download
● Link de Referência
– https://www.python.org
● Windows
– https://www.python.org/downloads/release/python-
364/
● Linux
– Já vem com Python 2.7
– Mas use o Python 3 com Docker
Instalação do Driver ArangoDB
● Instalação do pacote padrão
– pip install python-arango
● Instalação via código-fonte
– pip install -e git+git@github.com:joowani/python-
arango.git@master#egg=python-arango
ArangoDB - Interface Web
● Acesse o site:
– http://localhost:8529
ArangoDB - Interface Web
ArangoDB - Interface Web
ArangoDB - Interface Web
ArangoDB - Interface Web
ArangoDB - Interface Web
Interface Web – Tipos de Dados
Interface Web - Básico
Interface Web – INSERT FROM
Interface Web – SELECT WHERE
Interface Web – SELECT SORT e
LIMIT
Interface Web – SELECT WHERE
LIKE
Interface Web – INNER JOIN
Interface Web – LEFT JOIN
Interface Web – RIGHT JOIN
Interface Web - UPDATE
Interface Web – UPDATE
Interface Web - REPLACE
Interface Web – DELETE FROM
ArangoDB - Grafos
ArangoDB - Graphs
Interface Web - Grafos
Docker-Download
● Docker Engine (o Docker)
– https://www.docker.com/community-edition
● Docker-Compose (Maestro da Orquestra)
– https://docs.docker.com/compose/install/#install-
compose
● Docker Machine (o Dono do Show)
– https://docs.docker.com/machine/overview/#where-to-
go-next
Gerando um MicroServiço com
Docker
● Criaremos os seguintes serviços:
– DB: provisionar o ArangoDB
– Web: Provisionar app Python3
– Nginx: Provisionar server/proxy HTTP
● Dicas:
– Nos serviços de banco e app evite dar o mesmo
nome do banco ou linguagem
– Serviço nginx x app nginx não dá conflito de nomes
… - Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED=1
RUN apt-get install libmysqlclient-dev
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
… - Docker-compose.yml
●
version: '3'
●
● services:
● db:
● image: arangodb:latest
● volumes:
●
- ./db:/var/lib/arangodb
● - ./db-apps:/var/lib/arangodb-apps
● ports:
● - "8529:8529"
● restart: always
● environment:
● ARANGO_ROOT_PASSWORD: 'nosqlba2018'
●
… - Docker-compose.yml
version: '3'
services:
……….....
web:
build: .
command: uwsgi --ini uwsgi.ini
working_dir: /code/web
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
… - Docker-compose.yml
nginx:
image: nginx:alpine
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf:/etc/nginx/conf.d
- .:/code
ports:
- "80:80"
depends_on:
- web
volumes:
- .:/code
Python – Conexao com ArangoDB
Python – Acessando o Banco de
Dados
Python – Criando e Acessando
Collections
Python – Listando Todos os
Documentos em uma Collection
Python - Inserindo um Documento
na Collection
Python – Alterando um Documento
na Collection
Python – Removendo um
Documento da Collection
Continuará em breve
● Esta apresentação faz parte do conteúdo do
evento NOSQLBA 2018, e está incompleta.
● Volte posteriormente para ver as novidades.
Espero que tenham gostado …
Você pode nos acompanhar nas principais redes
sociais…
@felipebastosweb
FIM

NOSQLBA 2018 - ArangoDB com python

  • 1.
    Minicurso ArangoDB - Pythoncom Dados MultiModelos Autor Felipe Augusto Bastos Moraes @felipebastosweb
  • 2.
    Quem Sou ● Graduadoem Análise de Sistemas ● Pós-Graduado em Gerenciamento de Projetos ● Participa das Comunidades PHPBA, GruPy- BA, DockerBR, ArangoDB Brasil, MongoDB Brasil, etc
  • 3.
    Onde me Achar Basicamenteo @felipebastosweb ● https://github.com/felipebastosweb ● https://medium.com/@felipebastosweb ● https://bitbucket.org/felipebastosweb ● https://www.facebook.com/felipebastosweb ● https://www.slideshare.com/felipebastosweb ● https://www.linkedin.com/in/felipebastosweb ● https://www.twitter.com/felipebastosweb ● https://www.dropbox.com/sh/6j8haujms7pgz2w/AABRm6StOqLa mL3bGw5mTQAba?dl=0
  • 4.
  • 5.
    Banco de DadosRelacional ● Bancos Relacionais – MySQL – MS SQL – Oracle – PostgreSQL ● Modelo – Tabelas – Colunas – Registros – Chaves ● Linguagem Comum – SQL (Strutured Query) ● Propriedades – Atomicidade (tudo ou nada) – Consistência (estado válido) – Isolamento (concorrência) – Durabilidade
  • 6.
  • 7.
    NoSQL - NotOnly SQL ● Principais bancos – Redis – MongoDB – Neo4j – DynamoDB – Cassandra – CouchDB – ArangoDB – OrientDB ● Principais Modelos: – Documentos – Grafos – Chave-Valor
  • 8.
    NoSQL - Características ●Sem Schema ou Schema Flexível ● Escalabilidade Horizontal ● Suporte Nativo a Replicação ● Estado Leve e Consistência Eventual ● Principais tipos de Schema: – Chave-Valor – Documentos – Graphos
  • 9.
    ArangoDB - Download ●Link de Referência – https://www.arangodb.com ● Versão Comunidade: – https://www.arangodb.com/download-major/
  • 10.
    Python - Download ●Link de Referência – https://www.python.org ● Windows – https://www.python.org/downloads/release/python- 364/ ● Linux – Já vem com Python 2.7 – Mas use o Python 3 com Docker
  • 11.
    Instalação do DriverArangoDB ● Instalação do pacote padrão – pip install python-arango ● Instalação via código-fonte – pip install -e git+git@github.com:joowani/python- arango.git@master#egg=python-arango
  • 12.
    ArangoDB - InterfaceWeb ● Acesse o site: – http://localhost:8529
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
    Interface Web –Tipos de Dados
  • 19.
  • 20.
    Interface Web –INSERT FROM
  • 21.
    Interface Web –SELECT WHERE
  • 22.
    Interface Web –SELECT SORT e LIMIT
  • 23.
    Interface Web –SELECT WHERE LIKE
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
    Interface Web –DELETE FROM
  • 31.
  • 32.
  • 33.
  • 34.
    Docker-Download ● Docker Engine(o Docker) – https://www.docker.com/community-edition ● Docker-Compose (Maestro da Orquestra) – https://docs.docker.com/compose/install/#install- compose ● Docker Machine (o Dono do Show) – https://docs.docker.com/machine/overview/#where-to- go-next
  • 35.
    Gerando um MicroServiçocom Docker ● Criaremos os seguintes serviços: – DB: provisionar o ArangoDB – Web: Provisionar app Python3 – Nginx: Provisionar server/proxy HTTP ● Dicas: – Nos serviços de banco e app evite dar o mesmo nome do banco ou linguagem – Serviço nginx x app nginx não dá conflito de nomes
  • 36.
    … - Dockerfile FROMpython:3 ENV PYTHONUNBUFFERED=1 RUN apt-get install libmysqlclient-dev RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt
  • 37.
    … - Docker-compose.yml ● version:'3' ● ● services: ● db: ● image: arangodb:latest ● volumes: ● - ./db:/var/lib/arangodb ● - ./db-apps:/var/lib/arangodb-apps ● ports: ● - "8529:8529" ● restart: always ● environment: ● ARANGO_ROOT_PASSWORD: 'nosqlba2018' ●
  • 38.
    … - Docker-compose.yml version:'3' services: ………..... web: build: . command: uwsgi --ini uwsgi.ini working_dir: /code/web volumes: - .:/code ports: - "8000:8000" depends_on: - db
  • 39.
    … - Docker-compose.yml nginx: image:nginx:alpine volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/conf:/etc/nginx/conf.d - .:/code ports: - "80:80" depends_on: - web volumes: - .:/code
  • 40.
    Python – Conexaocom ArangoDB
  • 41.
    Python – Acessandoo Banco de Dados
  • 42.
    Python – Criandoe Acessando Collections
  • 43.
    Python – ListandoTodos os Documentos em uma Collection
  • 44.
    Python - Inserindoum Documento na Collection
  • 45.
    Python – Alterandoum Documento na Collection
  • 46.
    Python – Removendoum Documento da Collection
  • 47.
    Continuará em breve ●Esta apresentação faz parte do conteúdo do evento NOSQLBA 2018, e está incompleta. ● Volte posteriormente para ver as novidades.
  • 48.
    Espero que tenhamgostado … Você pode nos acompanhar nas principais redes sociais… @felipebastosweb FIM