---
title: "Databázová schéma a typy kľúčov — Alerts for Laravel | Roundly"
description: "Štyri tabuľky, ich stĺpce a ako key_type typuje polymorfné stĺpce vlastníka pre modely s kľúčmi bigint, UUID alebo ULID."
url: https://roundly-consulting.com/sk/open-source/navody/alerts-for-laravel/databazova-schema
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Alerts for Laravel](https://roundly-consulting.com/sk/open-source/navody/alerts-for-laravel.md)

# Databázová schéma a typy kľúčov

Balík používa štyri tabuľky:

| Tabuľka | Stĺpce | Poznámka |
| --- | --- | --- |
| `health_checks` | id, notifiable\_type + notifiable\_id, health\_check, frequency (nullable), max\_attempts, decay\_minutes, consecutive\_failures, consecutive\_successes, tags (json), meta (json), identity\_hash (char(64), nullable, unique), timestamps, deleted\_at | Jeden riadok pre každú naplánovanú kontrolu každého vlastníka. Null vo frequency označuje riadok na požiadanie, ktorý vytvorí run() — plánovač ho nikdy nespustí. identity\_hash sa vypĺňa len pri aktívnom pláne kontroly, ktorá deklaruje uniqueBy(). Soft deletes. |
| `alerts` | id, notifiable\_type + notifiable\_id, health\_check\_id, status, escalation\_level, message (text), meta (json), triggered\_at, recovered\_at, open\_slot, timestamps, deleted\_at | Jeden riadok pre každý incident — kým je otvorený, recovered\_at je null. open\_slot má hodnotu 1, kým je alert otvorený, a po obnove null; unikátny index (health\_check\_id, open\_slot) pripustí pre kontrolu len jeden otvorený alert. Soft deletes; index na vlastníka + kontrolu. |
| `alert_silences` | id, key, notifiable\_type + notifiable\_id (nullable), reason, starts\_at, ends\_at, identity\_hash (char(64), nullable, unique), timestamps | Záznamy o stlmení: kľúč kontroly, tag alebo \*, voliteľne len pre jedného vlastníka. Null v starts\_at znamená platnosť ihneď, null v ends\_at platnosť do zrušenia. identity\_hash drží jedno stlmenie na kľúč a rozsah, takže mute() záznam aktualizuje namiesto vloženia nového. |
| `health_check_runs` | id, health\_check\_id, status, duration\_ms, message (text), meta (json), ran\_at | Jeden nemenný riadok pre každý vykonaný beh, bez timestamps. Index na kontrolu + ran\_at. |

Tabuľky alerts a health\_check\_runs majú cudzí kľúč na health\_checks s kaskádovým mazaním — preto sa health\_checks publikuje ako prvá. HealthCheck a Alert používajú soft deletes, takže kaskáda sa uplatní pri trvalom zmazaní (forceDelete).

## Typ kľúča vlastníka

Vlastníci sú polymorfní (notifiable\_type + notifiable\_id), takže kontroly môže vlastniť akýkoľvek Eloquent model. key\_type určuje typ stĺpca notifiable\_id v tabuľkách health\_checks, alerts a alert\_silences:

| key\_type | Stĺpce vlastníka | Použite, keď vaši vlastníci… |
| --- | --- | --- |
| `bigint` | morphs() — unsignedBigInteger id | používajú predvolené autoinkrementálne kľúče Laravelu (predvolené) |
| `uuid` | uuidMorphs() | používajú HasUuids |
| `ulid` | ulidMorphs() | používajú HasUlids |

```bash
# Set before you run the migrations — the notifiable columns are typed from it
ALERTS_KEY_TYPE=uuid
```

Všetky modely vlastníkov musia mať rovnaký typ kľúča. Na veľkosti písmen nezáleží; chýbajúci alebo prázdny kľúč znamená bigint a nerozpoznaná hodnota pri behu migrácií vyhodí InvalidConfigurationException — nič sa nenahrádza. Vlastné tabuľky balíka majú vždy autoinkrementálne id.

## Kde sú uložené voľby

Voľby monitoringu, ktoré nemajú vlastný stĺpec — failAfter, recoverAfter, timeout, smerovanie kanálov a eskalačná politika — sa ukladajú do json stĺpca meta pod rezervovanými kľúčmi (pozri Plánovanie kontrol), vedľa vašich vlastných meta údajov.

## Riadky na požiadanie a otvorené alerty

Keď kontrolu spustíte hneď pre vlastníka, ktorý ju nemá naplánovanú, vznikne riadok na požiadanie s frekvenciou null. Medzi ručnými behmi uchováva počítadlá, históriu a alerty tohto vlastníka pre danú kontrolu, plánovač ho však nikdy nespustí (pozri Spúšťanie kontrol). Unikátny index (health\_check\_id, open\_slot) v tabuľke alerts zaručí najviac jeden otvorený alert na kontrolu, aj keď sa dva zlyhané behy prekrývajú. Spolieha sa na to, že hodnoty NULL v unikátnom indexe nikdy nekolidujú, ako v MySQL a PostgreSQL; SQL Server ich považuje za rovnaké, preto podporovaný nie je — indexy na identity\_hash by tam navyše odmietli druhý riadok bez identity. Správy behov a alertov sú stĺpce typu text a ukladá sa z nich najviac 1000 znakov.

## Stĺpce identity

health\_checks.identity\_hash a alert\_silences.identity\_hash (od verzie 1.2) sú stĺpce char(64) s možnosťou null, každý s unikátnym indexom. Prvý identifikuje aktívny plán kontroly, ktorá deklaruje uniqueBy() — pri riadkoch na požiadanie, iných kontrolách a soft-deleted riadkoch je null (pozri Identita plánov a zmena nastavení); druhý identifikuje okamžité stlmenie podľa kľúča a rozsahu, takže mute() záznam aktualizuje namiesto vloženia nového. Stlmenie, ktoré váš kód zapíše priamo cez model, identitu nemá a nikdy sa nezlúči.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/alerts-for-laravel.md)
