1 changed files with 71 additions and 0 deletions
@ -0,0 +1,71 @@ |
|||||
|
# Postgres e Plone |
||||
|
|
||||
|
Esta documentação é para guardar informações sobre o uso de Postgres com Plone. Foi feita para avaliar o seu uso como backend de dados, para o Portal Modelo 4. |
||||
|
|
||||
|
Para esta análise, usou-se o site descrevendo as imagens Docker do Plone 6: https://6.docs.plone.org/install/containers/examples/nginx-volto-plone-postgresql.html |
||||
|
|
||||
|
## Relstorage |
||||
|
|
||||
|
É um componente python que permite o uso de bancos relacionais com o Plone, não apenas Postgres. |
||||
|
|
||||
|
Documentação: https://relstorage.readthedocs.io/en/latest/configure-application.html |
||||
|
No container backend do Plone: https://6.docs.plone.org/install/containers/images/backend.html#relational-database-variables |
||||
|
|
||||
|
## Formato dos dados |
||||
|
|
||||
|
As tabelas mais importantes, até onde vi, são: |
||||
|
|
||||
|
- `object_state`: guarda os estados de todos os objetos. **EM FORMATO PICKLE**, isto é, de difícil leitura. |
||||
|
- `current_object`: aponta pro estado atual do objeto, em `object_state`. |
||||
|
- `transaction`: mostra as operações feitas (criação de página, etc). |
||||
|
|
||||
|
Como teste, criei uma página num site de teste. As tabelas `object_state` e `current_object` saltaram de 7000 para 20000 linhas. Não consegui entender a lógica do porquê. |
||||
|
|
||||
|
|
||||
|
## Gotchas |
||||
|
|
||||
|
- Ao conectar ao postgres, é necessário informar qual o "database". Cometi o erro de conectar num database padrão diferente do usado na inicialização do `docker-compose.yml` e perdi muitas horas batendo cabeça com isso. |
||||
|
|
||||
|
## Arquivo para testes |
||||
|
|
||||
|
Segue abaixo o arquivo `docker-compose.yml` para testes. Foi retirado de https://6.docs.plone.org/install/containers/examples/nginx-volto-plone-postgresql.html e adaptado. |
||||
|
|
||||
|
```yaml |
||||
|
services: |
||||
|
|
||||
|
frontend: |
||||
|
image: plone/plone-frontend:latest |
||||
|
environment: |
||||
|
RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone |
||||
|
ports: |
||||
|
- "3000:3000" |
||||
|
depends_on: |
||||
|
- backend |
||||
|
|
||||
|
backend: |
||||
|
image: plone/plone-backend:6.1 |
||||
|
environment: |
||||
|
SITE: Plone |
||||
|
RELSTORAGE_DSN: "dbname='postgresdbtesting' user='plone' host='db' password='plone'" |
||||
|
RELSTORAGE_CREATE_SCHEMA: "true" |
||||
|
RELSTORAGE_NAME: "plone_relstorage" |
||||
|
DELETE_EXISTING: 1 |
||||
|
ports: |
||||
|
- "8080:8080" |
||||
|
depends_on: |
||||
|
- db |
||||
|
|
||||
|
db: |
||||
|
image: postgres |
||||
|
environment: |
||||
|
POSTGRES_USER: plone |
||||
|
POSTGRES_PASSWORD: plone |
||||
|
POSTGRES_DB: postgresdbtesting |
||||
|
volumes: |
||||
|
- data:/var/lib/postgresql/data |
||||
|
ports: |
||||
|
- "5432:5432" |
||||
|
|
||||
|
volumes: |
||||
|
data: {} |
||||
|
``` |
||||
Loading…
Reference in new issue