Database de trading-platform - Workspace V2
ST-2.1: Unify timeframe enum - Created ddl/00-global-types.sql with public.trading_timeframe - Marked trading.timeframe and market_data.timeframe as DEPRECATED ST-2.2: Resolve transaction_type conflict - Documented rename plan: financial.wallet_transaction_type - Documented rename plan: investment.investment_transaction_type - Added deprecation comments to both enums ST-2.3: Unify common functions - Created ddl/00-global-functions.sql with public.update_updated_at() - Marked schema-specific functions as DEPRECATED: - auth.update_updated_at() - education.update_updated_at_column() - financial.update_timestamp() - feature_flags.update_timestamp() Migrations created (not executed): - 2026-02-03_unify_timeframe_enum.sql - 2026-02-03_rename_transaction_type_enums.sql - 2026-02-03_unify_common_functions.sql Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| ddl | ||
| migrations | ||
| schemas | ||
| scripts | ||
| seeds/prod | ||
| .gitignore | ||
| DIRECTIVA-POLITICA-CARGA-LIMPIA.md | ||
| README.md | ||
Trading Platform Database
Definiciones DDL y scripts de base de datos para Trading Platform.
Stack Tecnologico
- DBMS: PostgreSQL 16
- Extension ML: pgvector (embeddings LLM)
- Contenedor: Docker (pgvector/pgvector:pg16)
Estructura del Proyecto
database/
├── ddl/
│ └── schemas/ # Definiciones DDL por schema
│ ├── audit/ # Logs de auditoria
│ ├── auth/ # Autenticacion y sesiones
│ ├── education/ # Cursos y gamificacion
│ ├── financial/ # Transacciones y wallets
│ ├── investment/ # Inversiones y portfolios
│ ├── llm/ # Embeddings y contextos LLM
│ ├── ml/ # Modelos y predicciones ML
│ └── trading/ # Ordenes y operaciones
├── schemas/ # _MAP.md e indices
├── scripts/ # Scripts de gestion
│ ├── create-database.sh
│ ├── drop-and-recreate-database.sh
│ └── validate-ddl.sh
└── seeds/ # Datos iniciales (dev)
Schemas
| Schema | Tablas | Descripcion |
|---|---|---|
auth |
12 | Usuarios, sesiones, tokens, OAuth |
education |
15 | Cursos, lecciones, quizzes, progreso |
trading |
18 | Ordenes, posiciones, historial |
investment |
12 | Portfolios, assets, distribuciones |
financial |
10 | Wallets, transacciones, pagos |
ml |
8 | Modelos, predicciones, senales |
llm |
6 | Embeddings, conversaciones, contextos |
audit |
9 | Logs, eventos, trazabilidad |
Total: ~90 tablas, 102+ foreign keys
Instalacion
Opcion 1: Docker (Recomendado)
# Desde raiz del proyecto trading-platform
docker-compose up -d postgres
# Crear base de datos
cd apps/database/scripts
./create-database.sh
Opcion 2: PostgreSQL Local
# Requiere PostgreSQL 16 con pgvector instalado
# Ubuntu/Debian:
sudo apt install postgresql-16-pgvector
# Crear base de datos
cd apps/database/scripts
./create-database.sh
Scripts Disponibles
| Script | Descripcion |
|---|---|
create-database.sh |
Crear BD y cargar DDL |
drop-and-recreate-database.sh |
Recrear BD desde cero |
validate-ddl.sh |
Validar sintaxis SQL |
Variables de Entorno
# Database connection - Instancia nativa compartida
# Ref: orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml
DB_HOST=localhost
DB_PORT=5432 # Instancia NATIVA (NO Docker)
DB_NAME=trading_platform
DB_USER=trading_user
DB_PASSWORD=trading_dev_2025
IMPORTANTE: El workspace usa arquitectura de instancia única compartida. PostgreSQL nativo en puerto 5432, NO Docker. Los proyectos se separan por DATABASE + USER.
Uso de Scripts
Crear Base de Datos
cd apps/database/scripts
# Con variables de entorno (instancia nativa)
export DB_HOST=localhost
export DB_PORT=5432
export DB_NAME=trading_platform
export DB_USER=trading_user
export DB_PASSWORD=trading_dev_2025
./create-database.sh
Recrear Base de Datos (Development)
# ADVERTENCIA: Elimina todos los datos
./drop-and-recreate-database.sh
Estructura DDL
Cada schema sigue la estructura:
ddl/schemas/{schema}/
├── 00-extensions.sql # Extensiones (si aplica)
├── tables/
│ ├── 01-{tabla}.sql
│ ├── 02-{tabla}.sql
│ └── ...
├── functions/
│ ├── 01-{funcion}.sql
│ └── ...
└── triggers/
└── 01-{trigger}.sql
Convencion de Nombres
- Tablas: snake_case plural (
users,trading_orders) - Columnas: snake_case (
created_at,user_id) - Primary Keys:
id(UUID) - Foreign Keys:
{tabla_singular}_id - Indices:
idx_{tabla}_{columna} - Triggers:
trg_{tabla}_{accion}
Seguridad
- Row Level Security (RLS) habilitado en tablas multi-tenant
- Funciones con
SECURITY DEFINERdonde corresponde - Passwords hasheados con bcrypt (en aplicacion)
- Audit logs automaticos via triggers
Migraciones
Actualmente se usa DDL directo sin sistema de migraciones. Para cambios:
- Modificar archivo DDL correspondiente
- Documentar en
_MAP.mddel schema - Ejecutar
drop-and-recreate-database.sh(dev) - En produccion: scripts de migracion manuales
Documentacion Relacionada
Proyecto: Trading Platform Version: 0.1.0 Actualizado: 2026-01-07