Files
aitbc/docs/postgresql_migration.md
oib 9b9c5beb23 ```
chore: enhance .gitignore and remove obsolete documentation files

- Reorganize .gitignore with categorized sections for better maintainability
- Add comprehensive ignore patterns for Python, Node.js, databases, logs, and build artifacts
- Add project-specific ignore rules for coordinator, explorer, and deployment files
- Remove outdated documentation: BITCOIN-WALLET-SETUP.md, LOCAL_ASSETS_SUMMARY.md, README-CONTAINER-DEPLOYMENT.md, README-DOMAIN-DEPLOYMENT.md
```
2026-01-24 14:44:51 +01:00

2.2 KiB

AITBC Exchange - PostgreSQL Migration Complete

Summary

Successfully migrated the AITBC Exchange from SQLite to PostgreSQL for better performance and scalability.

What Was Migrated

  • Trades Table: 5 historical trades
  • Orders Table: 4 initial orders (2 BUY, 2 SELL)
  • All data preserved with proper type conversion (REAL → NUMERIC)

Benefits of PostgreSQL

  1. Better Performance: Optimized for concurrent access
  2. Scalability: Handles high-volume trading
  3. Data Integrity: Proper NUMERIC type for financial data
  4. Indexing: Optimized indexes for fast queries
  5. ACID Compliance: Reliable transactions

Database Schema

-- Trades table with proper types
CREATE TABLE trades (
    id SERIAL PRIMARY KEY,
    amount NUMERIC(20, 8) NOT NULL,
    price NUMERIC(20, 8) NOT NULL,
    total NUMERIC(20, 8) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    tx_hash VARCHAR(66),
    maker_address VARCHAR(66),
    taker_address VARCHAR(66)
);

-- Orders table with constraints
CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    order_type VARCHAR(4) CHECK (order_type IN ('BUY', 'SELL')),
    amount NUMERIC(20, 8) NOT NULL,
    price NUMERIC(20, 8) NOT NULL,
    total NUMERIC(20, 8) NOT NULL,
    remaining NUMERIC(20, 8) NOT NULL,
    filled NUMERIC(20, 8) DEFAULT 0,
    status VARCHAR(20) CHECK (status IN ('OPEN', 'FILLED', 'CANCELLED')),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    user_address VARCHAR(66),
    tx_hash VARCHAR(66)
);

Connection Details

  • Host: localhost
  • Port: 5432
  • Database: aitbc_exchange
  • User: aitbc_user
  • Password: aitbc_password

Performance Indexes

  • idx_trades_created_at: Fast trade history queries
  • idx_orders_type_price: Efficient order book matching
  • idx_orders_status: Quick status filtering
  • idx_orders_user: User order history

Next Steps

  1. Monitor performance with real trading volume
  2. Set up database backups
  3. Consider connection pooling (PgBouncer)
  4. Add read replicas for scaling

Verification

  • Exchange API is running with PostgreSQL
  • All endpoints working correctly
  • Data integrity preserved
  • Real-time trading functional