Market Data Service is a high-performance financial data API that provides comprehensive Symbol prices of different markets through both RESTful endpoints and real-time WebSocket connections.

schema.sql 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. -- symbols table
  2. -- Stores metadata for each trading symbol
  3. CREATE TABLE symbols (
  4. id SERIAL PRIMARY KEY,
  5. symbol VARCHAR(50) NOT NULL UNIQUE,
  6. base_asset VARCHAR(50),
  7. quote_asset VARCHAR(50),
  8. exchange VARCHAR(50),
  9. instrument_type VARCHAR(20) CHECK (instrument_type IN ('crypto', 'stock', 'forex', 'commodity', 'index')),
  10. is_active BOOLEAN DEFAULT TRUE,
  11. created_at TIMESTAMPTZ DEFAULT NOW(),
  12. updated_at TIMESTAMPTZ DEFAULT NOW()
  13. );
  14. CREATE INDEX idx_symbols_exchange ON symbols(exchange);
  15. CREATE INDEX idx_symbols_type ON symbols(instrument_type);
  16. -- candles table
  17. -- Stores multi-timeframe OHLCV data for each symbol
  18. CREATE TABLE candles (
  19. id BIGSERIAL PRIMARY KEY,
  20. symbol_id INT NOT NULL REFERENCES symbols(id) ON DELETE CASCADE,
  21. timeframe ENUM('15m', '30m', '1h', '1D', '1W', '1M') NOT NULL DEFAULT '1h',
  22. open_time TIMESTAMPTZ NOT NULL,
  23. close_time TIMESTAMPTZ NOT NULL,
  24. open NUMERIC(18,8) NOT NULL,
  25. high NUMERIC(18,8) NOT NULL,
  26. low NUMERIC(18,8) NOT NULL,
  27. close NUMERIC(18,8) NOT NULL,
  28. volume NUMERIC(20,8),
  29. trades_count INT,
  30. quote_volume NUMERIC(20,8),
  31. created_at TIMESTAMPTZ DEFAULT NOW(),
  32. updated_at TIMESTAMPTZ DEFAULT NOW()
  33. );
  34. CREATE UNIQUE INDEX idx_candles_symbol_time_timeframe ON candles(symbol_id, open_time, timeframe);
  35. CREATE INDEX idx_candles_open_time_timeframe ON candles(open_time, timeframe);
  36. -- live_prices table
  37. -- Stores the latest live market prices per symbol
  38. CREATE TABLE live_prices (
  39. symbol_id INT PRIMARY KEY REFERENCES symbols(id) ON DELETE CASCADE,
  40. price NUMERIC(18,8) NOT NULL,
  41. bid NUMERIC(18,8),
  42. ask NUMERIC(18,8),
  43. bid_size NUMERIC(18,8),
  44. ask_size NUMERIC(18,8),
  45. last_updated TIMESTAMPTZ DEFAULT NOW(),
  46. created_at TIMESTAMPTZ DEFAULT NOW(),
  47. updated_at TIMESTAMPTZ DEFAULT NOW()
  48. );
  49. CREATE INDEX idx_live_prices_price ON live_prices(price);