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