-
Notifications
You must be signed in to change notification settings - Fork 0
4 Database Schema
Mr-Method edited this page Aug 28, 2025
·
1 revision
PON Monitor використовує спеціалізовані таблиці для зберігання інформації про PON мережу. Всі таблиці мають префікс pon_ та розташовані в основній базі даних NoDeny.
erDiagram
pon_bind }o--|| pon_olt : "інформація про OLT"
pon_bind ||--o{ pon_fdb : "має FDB записи"
pon_bind }o--|| pon_onu : "інформація про ONU"
pon_bind ||--o{ z_daily_pon : "архівні дані"
pon_olt {
smallint id PK
varchar ip
varchar name
varchar vendor
varchar model
text param
tinyint enable
}
pon_bind {
int id PK
char sn
smallint olt_id FK
char llid
decimal tx
decimal rx
char status
}
pon_onu {
mediumint id PK
varchar sn UK
varchar vendor
varchar model
varchar place_type
varchar place
}
pon_fdb {
char mac PK
smallint vlan
char llid
smallint olt_id FK
int uid
}
Конфігурація OLT пристроїв для моніторингу.
CREATE TABLE IF NOT EXISTS `pon_olt` (
`id` smallint UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL DEFAULT 'new olt',
`ip` varchar(15) NOT NULL,
`snmp_port` smallint NOT NULL DEFAULT '0',
`vendor` varchar(20) NOT NULL DEFAULT '',
`model` varchar(20) NOT NULL DEFAULT '',
`firmware` varchar(48) NOT NULL DEFAULT '',
`ro_comunity` varchar(32) NOT NULL DEFAULT '',
`rw_comunity` varchar(32) NOT NULL DEFAULT '',
`pon_type` varchar(16) NOT NULL DEFAULT 'gpon',
`mng_tmpl` int(4) NOT NULL DEFAULT '0',
`param` varchar(1024) DEFAULT NULL,
`descr` varchar(250) NOT NULL DEFAULT '',
`status` tinyint(1) NOT NULL DEFAULT '9',
`enable` tinyint(1) NOT NULL DEFAULT '0',
`changed` int NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `olt_uniq` (`ip`,`snmp_port`,`pon_type`)
) ENGINE=InnoDB COMMENT='OLT list';Поля:
-
id- унікальний ідентифікатор OLT -
name- назва OLT для відображення -
ip- IP адреса пристрою -
snmp_port- SNMP порт (зазвичай 161) -
vendor- виробник (ZTE, BDCOM, STELS, V-Solutions) -
model- модель пристрою -
firmware- версія прошивки -
pon_type- тип PON мережі (gpon/epon) -
param- JSON параметри підключення -
descr- опис пристрою -
status- поточний статус (0-9) -
enable- увімкнено моніторинг (0/1/2) -
changed- час останньої зміни (UNIX timestamp)
Зв'язки між ONU та портами OLT з поточними параметрами.
CREATE TABLE IF NOT EXISTS pon_bind (
id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
sn CHAR(18) NOT NULL,
olt_id SMALLINT(4) NOT NULL,
llid CHAR(16) NOT NULL,
name CHAR(32) NOT NULL DEFAULT '',
tx CHAR(6) DEFAULT NULL,
rx CHAR(6) DEFAULT NULL,
STATUS CHAR(30) DEFAULT NULL,
changed INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (id),
UNIQUE KEY uniq (olt_id, llid) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ONU list';Поля:
-
id- унікальний ідентифікатор прив'язки -
sn- серійний номер ONU -
olt_id- ідентифікатор OLT (FK до pon_olt) -
llid- логічний ідентифікатор порту (наприклад: 1/1/1:1) -
name- ім'я ONU в системі -
tx- потужність передачі (dBm, текстовий формат) -
rx- потужність прийому (dBm, текстовий формат) -
STATUS- статус ONU (Online, Offline, LOS тощо) -
changed- час останньої зміни
Детальна інформація про ONU пристрої.
CREATE TABLE IF NOT EXISTS `pon_onu` (
`id` mediumint UNSIGNED NOT NULL AUTO_INCREMENT,
`sn` varchar(32) NOT NULL,
`vendor` varchar(64) DEFAULT NULL,
`model` varchar(24) DEFAULT NULL,
`firmware` varchar(24) DEFAULT NULL,
`place_type` varchar(16) DEFAULT NULL,
`place` varchar(32) DEFAULT NULL,
`descr` char(255) NOT NULL DEFAULT '',
`changed` int NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `sn` (`sn`),
KEY `place_type` (`place_type`),
KEY `place` (`place`)
) ENGINE=InnoDB COMMENT='ONU list';Поля:
-
id- унікальний ідентифікатор ONU -
sn- серійний номер (унікальний) -
vendor- виробник ONU -
model- модель пристрою -
firmware- версія прошивки -
place_type- тип прив'язки (user/location) -
place- ідентифікатор місця (UID абонента або ID ТКД) -
descr- опис пристрою -
changed- час останньої зміни
Кеш MAC адрес за ONU портами.
CREATE TABLE IF NOT EXISTS pon_fdb (
mac CHAR(18) NOT NULL,
vlan SMALLINT(4) NOT NULL,
llid CHAR(16) NOT NULL,
olt_id SMALLINT(4) NOT NULL,
name VARCHAR(32) DEFAULT NULL,
uid INT(10) DEFAULT NULL,
time INT(11) NOT NULL DEFAULT '0',
UNIQUE KEY mac (mac) USING BTREE,
KEY llid (llid),
KEY name (name) USING BTREE,
KEY uid (uid) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ONU list';Поля:
-
mac- MAC адреса (первинний ключ) -
vlan- VLAN ID -
llid- ідентифікатор порту ONU -
olt_id- ідентифікатор OLT -
name- ім'я абонента (з білінгу) -
uid- UID абонента -
TIME- час останнього виявлення
Денні таблиці для зберігання історичних даних графіків.
CREATE TABLE IF NOT EXISTS z2021_01_01_pon (
id int(11) NOT NULL,
sn varchar(32) NOT NULL,
tx CHAR(6) DEFAULT NULL,
rx CHAR(6) DEFAULT NULL,
TIME INT(11) NOT NULL DEFAULT '0',
KEY TIME (TIME)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;Особливості:
- Створюються автоматично щодня
- Назва таблиці:
z{YYYY}_{MM}_{DD}_pon - Зберігають дані для побудови графіків
- Автоматично очищуються через певний період
Warning
У версії v2025.09.01+ тригери були видалені для покращення продуктивності. Якщо ви оновлюєтеся з попередніх версій, обов'язково видаліть їх.
-- Тригер при додаванні ONU
DROP TRIGGER IF EXISTS `tr_aft_ins_pon`;
-- Тригер при оновленні ONU
DROP TRIGGER IF EXISTS `tr_aft_upd_pon`;Для оновлення структури БД використовується скрипт:
perl /usr/local/nodeny/modules/Ponmon/bin/upgrade.plЩо робить скрипт:
- Перевіряє поточну структуру таблиць
- Додає нові, видаляє або оновлює старі поля при необхідності
- Конвертує дані зі старого формату
- Створює нові індекси
- Конвертує параметри з шаблонів в Параметри (v2025.08.20+)