Verilənlər bazaları və Data Table
Avtomatlaşdırma bir müddət sonra yaddaş tələb edir: nəyin artıq emal olunduğunu, son sinxronizasiyanın harada dayandığını, hansı qeydin hansı vəziyyətdə olduğunu saxlamaq lazım gəlir. n8n-də bunun üçün iki yol var.
Xarici verilənlər bazası — Postgres, MySQL, MongoDB və digərləri üçün hazır node-lar. Postgres node-unun əməliyyatları: Select, Insert, Update, Insert or Update, Delete və Execute Query.
Data Table — n8n-in öz strukturlaşdırılmış cədvəl saxlama imkanı. Xarici baza qaldırmadan sətir əlavə etmək, oxumaq, yeniləmək və upsert etmək olur. Kiçik vəziyyət datası — emal olunmuş ID-lər, kursorlar, konfiqurasiya — üçün ideal aralıq həlldir.
Seçim qaydası: əməliyyat datası (müştərilər, sifarişlər) xarici bazada, workflow-un öz vəziyyəti (nə emal olunub, harada qalmışıq) Data Table-da yaxşı yaşayır.
| Əməliyyat | Nə edir | Nə vaxt |
|---|---|---|
| Select | Sətirləri oxuyur; şərtlər node interfeysindən qurulur | Sadə oxuma — SQL yazmadan |
| Insert | Yeni sətir əlavə edir; sütunları avtomatik və ya əl ilə map etmək olur | Yeni qeydlərin yazılması |
| Insert or Update | Upsert — varsa yeniləyir, yoxdursa əlavə edir | Ən vacib əməliyyat: workflow-u idempotent edir |
| Execute Query | Xam SQL icra edir; `$1`, `$2` kimi parametr tokenləri dəstəkləyir | JOIN, qruplaşdırma, mürəkkəb hesabat sorğuları |
| Delete | Sətirləri, ya da bütün cədvəli silir | Ehtiyatla — geri qaytarıla bilməz |
SQL injection və query parametrləri. Execute Query əməliyyatında sorğunu expression ilə birləşdirmək cazibədardır, amma təhlükəlidir: gələn data sorğunun strukturunu poza bilər.
Düzgün yol — Query Parameters sahəsindən istifadə etmək. Sorğuda $1, $2 tokenləri yazılır, dəyərlər isə ayrıca ötürülür. Rəsmi sənədləşmə bunu birbaşa deyir: n8n query parametrlərindəki datanı təmizləyir və bu, SQL injection-un qarşısını alır.
Bu, xüsusilə vacibdir, çünki n8n-ə gələn datanın mənbəyi çox vaxt kənardır — webhook, forma, e-poçt. Kənardan gələn hər şey etibarsız sayılmalıdır.
Postgres node-unda Query Batching parametri var: sorğuları bir sorğuda birləşdirmək, ya da ayrı-ayrı göndərmək olar. Yüzlərlə item-i bazaya yazanda bu parametr performansa ciddi təsir edir — hər item üçün ayrıca sorğu göndərmək ən yavaş variantdır.
📚 Mənbələr və sənədlər
- Postgres noderəsmidocs.n8n.io
Əməliyyatlar və query parametrləri ilə SQL injection-dan qorunma buradadır.
- Data Tablerəsmidocs.n8n.io
n8n-in daxili cədvəl saxlama imkanı.
- Data Table node — sətir əməliyyatlarırəsmidocs.n8n.io