SHA256
05 01 25
Документы: Описание БД и всех запросов актуализировал!
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
1) Перечень таблиц и кратко о каждой
|
||||
|
||||
solana_users — справочник пользователей: логин + ключ устройства + (опционально) Solana-ключ. База для FK почти во всех таблицах.
|
||||
active_sessions — активные сессии авторизации/работы клиента: пароли сессии/хранилища, времена, push-данные, IP/инфо клиента.
|
||||
users_params — “последние значения параметров” пользователя. Для каждого (login,param) хранится актуальная версия по time_ms (старые обновления игнорируются).
|
||||
ip_geo_cache — кеш геолокации по IP, чтобы не дергать внешние сервисы постоянно.
|
||||
blockchain_state — агрегатное состояние блокчейна по blockchainName: лимиты/размер, последний глобальный блок и последние блоки по линиям 0..7.
|
||||
blocks — локальное хранилище блоков/сообщений: привязка к пользователю и блокчейну, номера/хэши, тип/подтип, тело блока (BLOB), и опциональная “ссылка на другой блок” через поля to*. (PK сейчас намеренно убран.)
|
||||
|
||||
2) Таблицы подробно: параметры по строкам
|
||||
|
||||
solana_users
|
||||
|
||||
login — TEXT PK — уникальный логин пользователя.
|
||||
deviceKey — TEXT NOT NULL — публичный ключ устройства (обычно Base64(32) или HEX(64)).
|
||||
solanaKey — TEXT NULL — публичный ключ Solana-аккаунта (если используется).
|
||||
|
||||
active_sessions
|
||||
|
||||
sessionId — TEXT PK — идентификатор сессии (строка; по смыслу base64(32)).
|
||||
login — TEXT NOT NULL, FK → solana_users(login) — владелец сессии.
|
||||
sessionPwd — TEXT NOT NULL — пароль/секрет сессии (как хранится — строкой).
|
||||
storagePwd — TEXT NOT NULL — пароль/секрет для storage (как хранится — строкой).
|
||||
sessionCreatedAtMs — INTEGER NOT NULL — время создания сессии (Unix ms).
|
||||
lastAuthirificatedAtMs — INTEGER NOT NULL — время последней авторизации/refresh (Unix ms).
|
||||
pushEndpoint — TEXT NULL — endpoint для WebPush.
|
||||
pushP256dhKey — TEXT NULL — p256dh ключ для WebPush.
|
||||
pushAuthKey — TEXT NULL — auth ключ для WebPush.
|
||||
clientIp — TEXT NULL — IP клиента на auth/refresh.
|
||||
clientInfoFromClient — TEXT NULL — строка, присланная клиентом (PWA).
|
||||
clientInfoFromRequest — TEXT NULL — строка, собранная сервером из запроса.
|
||||
userLanguage — TEXT NULL — язык пользователя (например ru-RU).
|
||||
|
||||
users_params
|
||||
|
||||
login — TEXT NOT NULL, FK → solana_users(login) — владелец параметра.
|
||||
param — TEXT NOT NULL — имя параметра (ключ).
|
||||
time_ms — INTEGER NOT NULL — версия/время параметра (Unix ms), используется для “только если новее”.
|
||||
value — TEXT NOT NULL — значение параметра.
|
||||
device_key — TEXT NULL — каким ключом подписано (если используешь), строковый формат.
|
||||
signature — TEXT NULL — подпись (если используешь), строковый формат.
|
||||
|
||||
Ограничение: UNIQUE(login, param) — один актуальный параметр на пару.
|
||||
|
||||
ip_geo_cache
|
||||
|
||||
ip — TEXT PK — IP-адрес (строкой).
|
||||
geo — TEXT NULL — гео-строка (Country/City или как договоритесь).
|
||||
updated_at_ms — INTEGER NOT NULL — когда кеш обновлялся (Unix ms).
|
||||
|
||||
blockchain_state
|
||||
|
||||
blockchainName — TEXT PK — имя/ID блокчейна (уникальное).
|
||||
login — TEXT NOT NULL, FK → solana_users(login) — владелец блокчейна.
|
||||
blockchainKey — TEXT NOT NULL — публичный ключ блокчейна (по смыслу Base64(32)).
|
||||
size_limit — INTEGER NOT NULL — лимит размера (по смыслу bytes; в Java это long).
|
||||
file_size_bytes — INTEGER NOT NULL — текущий размер файла блокчейна в байтах.
|
||||
last_global_number — INTEGER NOT NULL — последний глобальный номер блока (genesis = -1).
|
||||
last_global_hash — TEXT NOT NULL — хэш последнего глобального блока (или пустая строка).
|
||||
updated_at_ms — INTEGER NOT NULL — время обновления состояния (Unix ms).
|
||||
|
||||
Линии 0..7 (для каждой линии две колонки):
|
||||
line0_last_number — INTEGER NOT NULL — последний номер в линии 0.
|
||||
line0_last_hash — TEXT NOT NULL — последний хэш в линии 0.
|
||||
line1_last_number — INTEGER NOT NULL — последний номер в линии 1.
|
||||
line1_last_hash — TEXT NOT NULL — последний хэш в линии 1.
|
||||
line2_last_number — INTEGER NOT NULL — последний номер в линии 2.
|
||||
line2_last_hash — TEXT NOT NULL — последний хэш в линии 2.
|
||||
line3_last_number — INTEGER NOT NULL — последний номер в линии 3.
|
||||
line3_last_hash — TEXT NOT NULL — последний хэш в линии 3.
|
||||
line4_last_number — INTEGER NOT NULL — последний номер в линии 4.
|
||||
line4_last_hash — TEXT NOT NULL — последний хэш в линии 4.
|
||||
line5_last_number — INTEGER NOT NULL — последний номер в линии 5.
|
||||
line5_last_hash — TEXT NOT NULL — последний хэш в линии 5.
|
||||
line6_last_number — INTEGER NOT NULL — последний номер в линии 6.
|
||||
line6_last_hash — TEXT NOT NULL — последний хэш в линии 6.
|
||||
line7_last_number — INTEGER NOT NULL — последний номер в линии 7.
|
||||
line7_last_hash — TEXT NOT NULL — последний хэш в линии 7.
|
||||
|
||||
blocks
|
||||
|
||||
login — TEXT NOT NULL, FK → solana_users(login) — чей блок (логин).
|
||||
bchName — TEXT NOT NULL, FK → blockchain_state(blockchainName) — к какому блокчейну относится блок.
|
||||
blockGlobalNumber — INTEGER NOT NULL — глобальный номер блока.
|
||||
blockGlobalPreHashe — TEXT NOT NULL — хэш предыдущего глобального блока.
|
||||
blockLineIndex — INTEGER NOT NULL — индекс линии (0..7), по смыслу int16.
|
||||
blockLineNumber — INTEGER NOT NULL — номер блока в линии.
|
||||
blockLinePreHashe — TEXT NOT NULL — хэш предыдущего блока в линии.
|
||||
msgType — INTEGER NOT NULL — общий тип сообщения/блока (по смыслу uint16).
|
||||
msgSubType — INTEGER NOT NULL — подтип внутри msgType (по смыслу uint16).
|
||||
blockByte — BLOB NULL — сырой байтовый блок/тело сообщения.
|
||||
|
||||
Ссылка на другой блок (nullable, для ответов/репостов/связей и т.п.):
|
||||
to_login — TEXT NULL — логин “на кого/кому/с кем” (смысловая цель).
|
||||
toBchName — TEXT NULL — целевой блокчейн.
|
||||
toBlockGlobalNumber — INTEGER NULL — целевой глобальный номер.
|
||||
toBlockHashe — TEXT NULL — хэш целевого блока.
|
||||
|
||||
Индексы (кратко, чтобы было понятно зачем)
|
||||
idx_solana_users_login(login) — быстрый поиск по логину.
|
||||
idx_active_sessions_login(login) — быстро получить сессии пользователя.
|
||||
idx_users_params_login(login) — быстро получить параметры пользователя.
|
||||
idx_ip_geo_cache_updated_at(updated_at_ms) — чистка старых записей.
|
||||
idx_blockchain_state_login(login) — блокчейны пользователя.
|
||||
idx_blockchain_state_updated_at(updated_at_ms) — выборки/обслуживание по “свежести”.
|
||||
idx_blocks_chain_global(login,bchName,blockGlobalNumber) — выборки блоков по цепочке.
|
||||
idx_blocks_to_target(to_login,toBchName,toBlockGlobalNumber) — быстрые выборки “по ссылке”.
|
||||
Reference in New Issue
Block a user