Data Models
exchanges
Основная таблица проекта.
| Column | Type | Notes |
|---|---|---|
exchange_id |
text PK | slug биржи |
display_name |
text | отображаемое имя |
website_url |
text | URL сайта |
category |
text | cex/dex и т.д. |
is_active |
bool | участвует ли в sync |
api_base_url |
text | опционально |
rate_limit_rps |
int | лимит |
country |
text | страна |
launch_year |
smallint | год запуска |
has_fiat |
bool | fiat support |
trust_score |
smallint | 0..10 |
last_checked |
timestamptz | последний sync |
metadata |
jsonb | доп. поля CoinGecko |
created_at |
timestamptz | created |
updated_at |
timestamptz | updated |
networks_catalog
Каталог сетей/чейнов (EVM + non-EVM).
| Column | Type | Notes |
|---|---|---|
network_key |
text PK | канонический ключ (evm:<chain_id>, cg:<id>, llama:<slug>) |
display_name |
text | отображаемое имя |
family |
text | evm/utxo/cosmos/other |
is_evm |
bool | флаг EVM-сети |
chain_id |
bigint | EVM chain id, UNIQUE WHERE NOT NULL |
native_symbol |
text | символ нативной монеты |
native_name |
text | название нативной монеты |
native_decimals |
smallint | decimals нативной монеты |
is_active |
bool | soft-delete флаг |
first_seen_at |
timestamptz | первый раз встречена |
last_seen_at |
timestamptz | последний раз встречена в sync |
last_synced_at |
timestamptz | последний успешный upsert |
metrics_source |
text | источник последних метрик |
last_metrics_at |
timestamptz | когда метрики были свежими |
metrics_stale |
bool | флаг stale-метрик |
tvl_usd |
numeric(38,8) | TVL |
fees_24h_usd |
numeric(38,8) | fees за 24ч |
volume_24h_usd |
numeric(38,8) | volume за 24ч |
tx_count_24h |
bigint | tx count за 24ч |
active_addresses_24h |
bigint | активные адреса за 24ч |
metadata |
jsonb | метаданные/сырьё источников |
created_at |
timestamptz | created |
updated_at |
timestamptz | updated |
network_identifiers
Связки внешних идентификаторов сетей.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
network_key |
text FK | ссылка на networks_catalog |
source |
text | coingecko/chainid/defillama |
id_type |
text | coingecko_platform_id/chainid_slug/defillama_slug |
id_value |
text | значение идентификатора |
is_primary |
bool | primary mapping для типа |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
metadata |
jsonb | доп. поля |
UNIQUE (source, id_type, id_value).
network_endpoints
Сетевые endpoint-ы (rpc, explorer) по каждой сети.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
network_key |
text FK | ссылка на networks_catalog |
endpoint_type |
text | rpc/explorer |
url |
text | endpoint URL |
is_active |
bool | активность endpoint-а |
source |
text | источник endpoint-а |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
UNIQUE (network_key, endpoint_type, url).
network_metrics_snapshots
История метрик сетей по времени.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
network_key |
text FK | ссылка на networks_catalog |
observed_at |
timestamptz | timestamp среза |
source |
text | источник метрик |
tvl_usd |
numeric(38,8) | TVL |
fees_24h_usd |
numeric(38,8) | fees 24h |
volume_24h_usd |
numeric(38,8) | volume 24h |
tx_count_24h |
bigint | tx count 24h |
active_addresses_24h |
bigint | active addresses 24h |
is_stale |
bool | stale snapshot |
payload |
jsonb | raw payload |
UNIQUE (network_key, observed_at, source).
global_assets
Global registry активов для conservative mapping.
| Column | Type | Notes |
|---|---|---|
global_id |
uuid PK | внутренний UUID идентификатор |
canonical_symbol |
text | канонический символ |
canonical_name |
text | каноническое имя |
status |
text | active/provisional/manual |
created_at |
timestamptz | created |
updated_at |
timestamptz | updated |
global_asset_identifiers
Внешние и служебные идентификаторы глобального актива.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
global_id |
uuid FK | ссылка на global_assets |
source |
text | contract/manual/exchange |
id_type |
text | network_contract/exchange_scoped_key/manual_alias |
id_value |
text | значение идентификатора |
network_key |
text FK nullable | ссылка на networks_catalog |
is_primary |
bool | primary flag |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
UNIQUE (source, id_type, id_value, COALESCE(network_key,'')) через expression index.
exchange_assets
Каталог монет по бирже.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_id |
text FK | ссылка на exchanges |
local_coin |
text | локальный символ монеты на бирже |
local_name |
text | локальное имя |
is_active |
bool | soft-delete флаг |
metadata |
jsonb | доп. сырой payload |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
updated_at |
timestamptz | updated |
UNIQUE (exchange_id, local_coin).
exchange_asset_networks
Сетевые записи монеты внутри биржи.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_asset_id |
bigint FK | ссылка на exchange_assets |
local_network |
text | локальный идентификатор сети |
network_key |
text FK nullable | сопоставление на networks_catalog |
contract_address |
text nullable | адрес контракта (normalized lower-case) |
deposit_enabled |
bool nullable | статус депозита |
withdraw_enabled |
bool nullable | статус вывода |
withdraw_fee |
text nullable | fee |
withdraw_min |
text nullable | min |
withdraw_max |
text nullable | max |
confirmations |
text nullable | подтверждения |
memo_required |
bool nullable | memo/tag required |
raw_payload |
jsonb | сырой payload сети |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
updated_at |
timestamptz | updated |
UNIQUE (exchange_asset_id, local_network).
global_asset_networks
Network-level представление глобального актива (AssetOnNetwork).
| Column | Type | Notes |
|---|---|---|
network_global_id |
uuid PK | UUID network-level сущности |
global_id |
uuid FK | ссылка на global_assets (asset-level) |
network_key |
text FK | ссылка на networks_catalog |
contract_address |
text nullable | контракт в сети (если есть) |
exchange_id |
text FK | биржа-источник |
local_symbol |
text | symbol на бирже |
source |
text | contract/exchange_symbol_network/manual |
confidence |
real | confidence score |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
updated_at |
timestamptz | updated |
Ограничения:
- UNIQUE (network_key, contract_address) при contract_address IS NOT NULL;
- UNIQUE (exchange_id, local_symbol, network_key).
exchange_symbol_assets
Asset-level mapping для symbol внутри биржи (exchange_id + symbol -> global_id).
| Column | Type | Notes |
|---|---|---|
exchange_id |
text FK | биржа |
symbol |
text | symbol на бирже |
global_id |
uuid FK | ссылка на global_assets |
mapped_by |
text | auto_contract/auto_exchange_symbol_network/manual |
confidence |
real | confidence score |
mapped_at |
timestamptz | timestamp маппинга |
PRIMARY KEY (exchange_id, symbol).
exchange_asset_mappings
Mapping exchange network row -> network-level global asset.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_asset_network_id |
bigint FK | ссылка на exchange_asset_networks |
network_global_id |
uuid FK nullable | ссылка на global_asset_networks |
confidence |
real | confidence score |
mapped_by |
text | auto_contract/auto_exchange_symbol_network/manual/none |
mapped_at |
timestamptz | mapping timestamp |
UNIQUE (exchange_asset_network_id).
asset_mapping_quarantine
Очередь нерешенных кейсов нормализации/маппинга.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_id |
text nullable | биржа |
local_coin |
text nullable | локальная монета |
local_network |
text nullable | локальная сеть |
candidate_global_ids |
uuid[] nullable | кандидаты на маппинг |
reason |
text | missing_network_mapping/missing_contract/ambiguous/missing_credentials/api_error/symbol_collision |
details |
jsonb | подробности причины |
snapshot_at |
timestamptz | timestamp записи |
fct_gate_launchpool_snapshot
Snapshot fact table проектов Gate Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | pid из Gate |
exchange_id |
text FK | gate |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text | проектная монета |
project_name |
text | имя проекта |
project_state |
integer | state из Gate |
exchange_status |
bool | exchange status |
project_url |
text | product_url |
start_time / end_time |
timestamptz | окно проекта |
raw_project |
jsonb | полный raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_gate_launchpool_subpool_snapshot
Snapshot fact table сабпулов Gate Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | pid |
subpool_key |
text PK part | rid::text, fallback coin#row_in_project |
subpool_id |
bigint nullable | rid |
exchange_id |
text FK | gate |
project_asset_id |
uuid FK nullable | asset-level mapping проекта |
subpool_asset_id |
uuid FK nullable | asset-level mapping сабпула |
project_coin / subpool_coin |
text | символы |
rate_year / maybe_year_rate |
numeric | APR поля |
order_count |
integer | participants |
raw_subpool |
jsonb | полный raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_gate_launchpool_response_snapshot
Raw API response snapshot для аудита и дедупа payload-ов.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | gate |
request_path |
text | метод из envelope |
response_code |
integer | code |
response_msg |
text | message |
payload |
jsonb | полный ответ API |
fct_gate_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста Gate Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | gate |
project_id |
bigint nullable | pid |
subpool_key |
text nullable | ключ сабпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, ambiguous_*, api_error, parse_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_gate_launchpool_5min / fct_gate_launchpool_daily
Continuous aggregates:
- fct_gate_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_gate_launchpool_daily: bucket 1 day поверх fct_gate_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bingx_launchpool_snapshot
Snapshot fact table проектов BingX Launchpool (источник: Playwright scraping).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в BingX |
exchange_id |
text FK | bingx |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на detail страницу |
project_status |
text | Active/Ended/Upcoming |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bingx_launchpool_subpool_snapshot
Snapshot fact table подпулов BingX Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bingx |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
pool_name |
text | имя подпула |
est_apr_text / est_apr |
text / numeric | APR |
participants_text / participants |
text / numeric | участники |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bingx_launchpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bingx |
request_path |
text | internal request source |
response_code |
integer | технический статус (ingest) |
response_msg |
text | источник (playwright) |
payload |
jsonb | полный payload для SQL ingest |
fct_bingx_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста BingX Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bingx |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, scrape_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bingx_launchpool_5min / fct_bingx_launchpool_daily
Continuous aggregates:
- fct_bingx_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bingx_launchpool_daily: bucket 1 day поверх fct_bingx_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bingx_xpool_snapshot
Snapshot fact table проектов BingX XPool (источник: Playwright scraping).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в BingX |
exchange_id |
text FK | bingx |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на detail страницу |
project_status |
text | Active/Ended/Upcoming |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bingx_xpool_subpool_snapshot
Snapshot fact table подпулов BingX XPool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bingx |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
pool_name |
text | имя подпула |
est_apr_text / est_apr |
text / numeric | APR |
participants_text / participants |
text / numeric | участники |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bingx_xpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bingx |
request_path |
text | internal request source |
response_code |
integer | технический статус (ingest) |
response_msg |
text | источник (playwright) |
payload |
jsonb | полный payload для SQL ingest |
fct_bingx_xpool_quarantine
Неразрешенные кейсы маппинга/ингеста BingX XPool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bingx |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, scrape_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bingx_xpool_5min / fct_bingx_xpool_daily
Continuous aggregates:
- fct_bingx_xpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bingx_xpool_daily: bucket 1 day поверх fct_bingx_xpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bitget_launchpool_snapshot
Snapshot fact table проектов Bitget Launchpool (источник: Playwright scraping).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в Bitget |
exchange_id |
text FK | bitget |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на detail страницу |
project_status |
text | Active/Ended/Upcoming |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bitget_launchpool_subpool_snapshot
Snapshot fact table подпулов Bitget Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bitget |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
pool_name |
text | имя подпула |
est_apr_text / est_apr |
text / numeric | APR |
participants_text / participants |
text / numeric | участники |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bitget_launchpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bitget |
request_path |
text | internal request source |
response_code |
integer | технический статус (ingest) |
response_msg |
text | источник (playwright) |
payload |
jsonb | полный payload для SQL ingest |
fct_bitget_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста Bitget Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bitget |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, scrape_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bitget_launchpool_5min / fct_bitget_launchpool_daily
Continuous aggregates:
- fct_bitget_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bitget_launchpool_daily: bucket 1 day поверх fct_bitget_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.