Müasir veb tətbiqləri, mobil xidmətlər, korporativ sistemlər və analitika platformaları hər saniyə nəhəng həcmdə informasiya emal edir. İstifadəçi profilləri, maliyyə əməliyyatları, məhsul kataloqları, loq qeydləri və analitik göstəricilər etibarlı, sürətli və nizamlı saxlanc tələb edir. Verilənlər bazasının və verilənlər bazasını idarəetmə sistemlərinin (VBİS) təməl prinsiplərini anlamaq hər bir proqramçı və mühəndis üçün ən vacib təməl biliklərdən biridir.
1. Verilənlər, verilənlər bazası və VBİS arasındakı fərq
Gündəlik danışıqda "verilənlər bazası" və "VBİS" terminləri çox vaxt bir-birinin yerinə işlədilir, lakin texniki baxımdan onların arasında aydın fərq mövcuddur:
- Verilənlər (Data) — hər hansı daşıyıcıda qeydə alınmış xam faktlar, qiymətlər və ya müşahidələrdir (məsələn:
45.50ədədi,"Bakı"mətni və ya"2026-03-15"tarixi). - Verilənlər bazası (Database / DB) — müəyyən qaydalar və sxem əsasında təşkil edilmiş, uzunmüddətli saxlama üçün nəzərdə tutulmuş əlaqəli məlumatlar toplusudur.
- VBİS (Verilənlər Bazasını İdarəetmə Sistemi / DBMS) — verilənlər bazasını yaratmaq, strukturunu dəyişmək, oxuma və yazma sorğularını icra etmək, təhlükəsizliyi təmin etmək və eyni vaxtda müraciətləri nizamlayaraq ehtiyat nüsxələr almaq üçün nəzərdə tutulmuş proqram təminatı kompleksidir.
+-----------------------+ SQL sorğusu +-----------------------------+
| Müştəri / Tətbiq | -------------------------> | VBİS |
| (Node.js, PHP, Python)| <------------------------- | (PostgreSQL, MySQL, SQLite) |
+-----------------------+ Nəticə / Sətirlər +--------------+--------------+
|
Faylları oxuma / yazma
v
+-----------------------------+
| Fayl sistemi / Disk |
| (Cədvəllər, WAL qeydləri) |
+-----------------------------+Məsələn, "Layihənin məlumatlarını PostgreSQL-ə köçürdük" dedikdə, əslində məlumatlarımızı PostgreSQL VBİS-in idarə etdiyi bazada saxladığımızı nəzərdə tuturuq.
2. Niyə adi fayllar yox: Excel, CSV və JSON problemləri
Yeni başlayan proqramçılar bəzən düşünürlər: "Məlumatları diskdə sadə bir JSON və ya CSV faylında saxlaya bildiyimiz halda, niyə ayrıca verilənlər bazası serveri qurmalıyıq?"
Layihə böyüdükcə fayl əsaslı yanaşma bir sıra ciddi problemlərlə qarşılaşır:
| Problem | Fayllarda saxlama (JSON, CSV, Excel) | VBİS-də saxlama (PostgreSQL, MySQL) |
|---|---|---|
| Eyni vaxtda müraciət | Eyni anda iki proses fayla yazdıqda fayl korlanır və ya məlumatlar itir | Kilidlər və MVCC mexanizmi sayəsində minlərlə paralel oxucu və yazıcını dəstəkləyir |
| Məlumatların tamlığı | Təsadüfən mətn yerinə ədəd və ya təkrarlanan ID yazıla bilər | Sxem məhdudiyyətləri (PRIMARY KEY, NOT NULL, CHECK) xətalı məlumatın qarşısını alır |
| Axtarış sürəti | 5 milyon sətir arasından bir qeydi tapmaq üçün bütün fayl yaddaşa oxunmalıdır (O(N)) | B-Tree indeksləri saniyənin mində birində (O(log N)) axtarılan qeydi tapır |
| Giriş hüquqları | Giriş yalnız əməliyyat sistemi hüquqları ilə tənzimlənir (ya hamısı, ya heç biri) | Çevik rol sistemi: baza, sxem, cədvəl və hətta ayrı-ayrı sütunlar üzrə hüquqlar |
| Qəzalara qarşı davamlılıq | Server yazılma anında sönsə, fayl yarımçıq qalır və oxunmaz olur | Qabaqlayıcı qeyd jurnalı (WAL / Redo Log) sayəsində server söndükdə belə məlumat qorunur |
Gəlin real bir nümunəyə baxaq: İki alıcı eyni anda anbarda qalan son məhsulu almaq üçün düyməni sıxır. Əgər qalıq sayı stock.json faylında saxlanılırsa, hər iki proses fayldan 1 ədədini oxuyacaq, onu 0 edib fayla yazacaq. Nəticədə bir ədəd məhsul iki nəfərə satılacaq. Relyasiyalı VBİS tranzaksiyalar vasitəsilə bu cür halların qarşısını tamamilə alır.
-- Məhsul qalığının atomik şəkildə azaldılması və artıq satışın qarşısının alınması
UPDATE products
SET stock_quantity = stock_quantity - 1
WHERE id = 42 AND stock_quantity >= 1;3. Etibarlılıq təminatı: Sadə dildə ACID prinsipləri
Relyasiyalı VBİS-lərin ən güclü cəhəti tranzaksiyaların etibarlılığını təmin edən ACID prinsipləridir:
- Atomicity (Atomarlıq) — "ya hamısı, ya heç biri" prinsipi. Tranzaksiya yarıda qala bilməz. Əgər bir müştərinin balansından 100 AZN çıxılıb mağazanın hesabına köçürülərkən xəta baş verərsə, əməliyyat tamamilə ləğv edilir (ROLLBACK) və pul müştərinin balansında qalır.
- Consistency (Uyğunluq) — baza yalnız qaydalara uyğun olan vəziyyətdən digər düzgün vəziyyətə keçə bilər. Qoyulmuş heç bir məhdudiyyət (məsələn, mənfi balansın qadağan edilməsi) pozula bilməz.
- Isolation (Təcrid olunma) — paralel icra olunan tranzaksiyalar bir-birinin gedişatına mane olmur. Tamamlanmamış tranzaksiyanın aralıq vəziyyəti digər istifadəçilərə görünmür.
- Durability (Davamlılıq) — tranzaksiya uğurla təsdiqləndikdən (COMMIT) sonra serverin elektrik enerjisi dərhal kəsilsə belə, qeyd edilmiş dəyişikliklər itmir və diskdə qorunur.
4. Müştəri-server arxitekturası
Əksər sənaye verilənlər bazaları klassik müştəri-server modeli üzərində qurulub:
- Verilənlər bazası serveri — fonda işləyən xidmətdir (məsələn, PostgreSQL üçün
5432, MySQL üçün3306portu). Server birbaşa disk, operativ yaddaş və keş ilə işləyir. - Müştəri (Client) — tətbiqin arxa tərəfi (Node.js, Go, Python, PHP), konsol utiliti (
psql,mysql) və ya qrafik redaktordur (DBeaver, DataGrip). Müştəri şəbəkə protokolu (TCP/IP) vasitəsilə serverə qoşulur və sorğular göndərir.
# psql konsol klientindən istifadə edərək PostgreSQL serverinə qoşulma
psql -h 127.0.0.1 -p 5432 -U shop_admin -d shop_dbDaxili (embedded) sistemlər, məsələn SQLite isə fərqli işləyir: onların ayrıca serveri və şəbəkə portu yoxdur. SQLite birbaşa proqramın daxilində kitabxana kimi çalışır və diskdəki tək bir faylı oxuyub yazır.
5. VBİS növləri: Relyasiyalı və qeyri-relyasiyalı sistemlər
Məlumatların təşkili və yüklənmə xarakterinə görə VBİS-lər bir neçə əsas qrupa bölünür:
- Relyasiyalı VBİS (RDBMS / OLTP): Məlumatları sətir və sütunlardan ibarət ikiölçülü əlaqəli cədvəllərdə saxlayır. ACID dəstəyi güclüdür və milyonlarla oxuma-yazma əməliyyatını sürətlə idarə edir. Nümunələr: PostgreSQL, MySQL, MariaDB, SQLite.
- Analitik VBİS (OLAP / Sütunlu): Milyardlarla sətir üzərində hesabatlar və aqreqasiya əməliyyatları (cəm, orta qiymət) aparmaq üçün optimallaşdırılıb. Məlumatlar diskdə sətir üzrə deyil, sütunlar üzrə sıxılmış şəkildə saxlanılır. Nümunələr: ClickHouse, Snowflake, DuckDB.
- Sənəd yönümlü (Document NoSQL): Məlumatları iyerarxik sənədlər (JSON, BSON) şəklində saxlayır. Nümunələr: MongoDB, CouchDB.
- Açar-qiymət (Key-Value): Məlumatları operativ yaddaşda cütlüklər şəklində saxlayır. Çox sürətlidir, keş və sessiyaların saxlanması üçün ideal seçimdir. Nümunələr: Redis, Valkey, Memcached.
6. Bu kursda öyrənəcəyimiz 3 əsas VBİS
Bu kurs boyunca biz SQL standartını veb proqramlaşdırmada ən çox tələb olunan üç sistem üzərində tətbiq edəcəyik:
- PostgreSQL — ən qabaqcıl açıq qaynaqlı relyasiyalı sistem. SQL standartlarına dəqiq riayət etməsi, zəngin tipləri (JSONB, massivlər, tam mətnli axtarış) və etibarlılığı ilə tanınır.
- MySQL — internetin ən məşhur verilənlər bazası sistemi. WordPress, Facebook və minlərlə böyük platformanın əsasında dayanır, sadə oxuma sorğularında çox sürətlidir.
- SQLite — dünyada ən çox quraşdırılmış sistem. Hər bir smartfonda və brauzerdə mövcuddur. Sadə tətbiqlər, testlər və server qurmadan dərhal SQL öyrənmək üçün əvəzolunmazdır.
Xülasə
- Verilənlər xam faktlardır; verilənlər bazası onların nizamlı toplusudur; VBİS isə onları idarə edən proqramdır.
- Fayllar (JSON, CSV) paralel giriş, tamlıq məhdudiyyətləri və sürətli axtarış tələblərini ödəyə bilmir.
- ACID prinsipləri əməliyyatların tamlığını, dəqiqliyini və etibarlılığını təmin edir.
- Kursumuzda veb inkişafının üç sütunu olan PostgreSQL, MySQL və SQLite sistemləri ilə işləməyi addım-addım öyrənəcəyik.