Ma'lumotlar Bazasi: SQL vs NoSQL
📅 20 Yanvar, 2026 | ⏱️ 9 daqiqa
Ma'lumotlar bazasi - bu har qanday zamonaviy ilovaning asosi. Instagram, YouTube, Amazon - bularning barchasi ma'lumotlar bazasidan foydalanadi. Lekin qaysi turni tanlash kerak: SQL yoki NoSQL? Keling, birgalikda o'rganaylik!
Ma'lumotlar Bazasi nima?
Ma'lumotlar bazasi - bu ma'lumotlarni tartibli ravishda saqlash, boshqarish va olish uchun tizim. Masalan:
- Foydalanuvchilar ro'yxati
- Mahsulotlar ma'lumotlari
- Xabarlar va sharhlar
- Tranzaksiyalar tarixi
SQL Ma'lumotlar Bazalari
📊 SQL - Structured Query Language
SQL bazalari - bu ma'lumotlarni jadvallar shaklida saqlaydigan relatsion bazalar. Ular qat'iy struktura va munosabatlarga ega.
Mashhur SQL Bazalari:
- MySQL: Eng mashhur, ochiq manba, veb-saytlar uchun ideal
- PostgreSQL: Kuchli, murakkab so'rovlar uchun
- SQLite: Yengil, mobil ilovalar uchun
- Microsoft SQL Server: Enterprise uchun
- Oracle: Katta korporatsiyalar uchun
SQL Misoli:
Jadval yaratish:
id INT PRIMARY KEY AUTO_INCREMENT,
ism VARCHAR(100),
email VARCHAR(150) UNIQUE,
yosh INT,
yaratilgan_vaqt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Ma'lumot qo'shish:
VALUES ('Ali', 'ali@example.com', 25);
Ma'lumot olish:
Yangilash:
SET yosh = 26
WHERE ism = 'Ali';
O'chirish:
SQL ning Afzalliklari:
- ✅ Qat'iy struktura (data integrity)
- ✅ ACID xususiyatlari (Atomicity, Consistency, Isolation, Durability)
- ✅ Murakkab so'rovlar (JOIN, GROUP BY, va h.k.)
- ✅ O'nlab yillik tajriba va standartlar
- ✅ Ko'plab vositalar va dasturchilar
SQL ning Kamchiliklari:
- ❌ Vertikal scaling (faqat server kuchaytiriladi)
- ❌ Moslashuvchanlik kam (schema o'zgartirish qiyin)
- ❌ Juda katta ma'lumotlar uchun sekinroq
- ❌ Nosql ga nisbatan murakkab
NoSQL Ma'lumotlar Bazalari
🔥 NoSQL - Not Only SQL
NoSQL bazalari - bu moslashuvchan, tez va katta ma'lumotlar uchun mo'ljallangan bazalar. Ular jadval o'rniga turli formatlardan foydalanadi.
NoSQL Turlari:
1. Document Databases (Hujjat bazalar)
- MongoDB: Eng mashhur, JSON formatda
- CouchDB: Offline-first ilovalar uchun
- Firebase Firestore: Real-time ilovalar uchun
2. Key-Value Stores
- Redis: Juda tez, cache uchun
- Amazon DynamoDB: AWS da
3. Column-Family Stores
- Cassandra: Katta hajmli ma'lumotlar
- HBase: Hadoop bilan ishlaydi
4. Graph Databases
- Neo4j: Munosabatlar uchun (ijtimoiy tarmoqlar)
MongoDB Misoli:
Ma'lumot qo'shish:
ism: "Ali",
email: "ali@example.com",
yosh: 25,
manzil: {
shahar: "Toshkent",
mahalla: "Yunusobod"
},
qiziqishlar: ["dasturlash", "kitob o'qish"]
});
Ma'lumot olish:
Yangilash:
{ ism: "Ali" },
{ $set: { yosh: 26 } }
);
NoSQL ning Afzalliklari:
- ✅ Moslashuvchan (schema o'zgartirish oson)
- ✅ Horizontal scaling (ko'p serverlar qo'shish oson)
- ✅ Tez (oddiy operatsiyalar uchun)
- ✅ Katta ma'lumotlar uchun ideal (Big Data)
- ✅ JSON/BSON formatda (dasturchilar uchun qulay)
NoSQL ning Kamchiliklari:
- ❌ ACID kafolatlari kam
- ❌ Murakkab so'rovlar qiyin
- ❌ Standartlar yo'q (har baza o'zicha)
- ❌ Ma'lumot takrorlanishi (denormalization)
SQL vs NoSQL: To'g'ridan-to'g'ri Taqqoslash
| Xususiyat | SQL | NoSQL |
|---|---|---|
| Struktura | Qat'iy, jadvallar | Moslashuvchan, turli formatlar |
| Schema | Oldindan belgilangan | Dinamik |
| Scaling | Vertikal (server kuchi) | Horizontal (ko'p serverlar) |
| ACID | Ha, to'liq | Cheklangan |
| So'rovlar | Murakkab (JOIN, va h.k.) | Oddiy, lekin tez |
| Ma'lumot turi | Strukturali | Har qanday |
| Ishlatilishi | Bank, buxgalteriya | Ijtimoiy tarmoqlar, IoT |
Qaysi birini tanlash?
SQL ni tanlang agar:
- 📊 Murakkab munosabatlar kerak bo'lsa
- 💰 Pul/moliya bilan ishlasangiz (ACID muhim)
- 📈 Ma'lumotlar strukturasi aniq bo'lsa
- 🔍 Murakkab so'rovlar tez-tez bo'lsa
- 🏢 CRM, ERP, buxgalteriya tizimlari
NoSQL ni tanlang agar:
- 🚀 Tez rivojlanish kerak bo'lsa
- 📱 Real-time ilovalar (chat, ijtimoiy tarmoq)
- 💾 Juda katta ma'lumotlar (Big Data)
- 🌐 Ko'p serverlar kerak bo'lsa
- 📝 Content management, log'lar, sensor ma'lumotlari
Amaliy Misollar
E-commerce Sayti:
SQL: Mahsulotlar, buyurtmalar, to'lovlar (murakkab munosabatlar)
NoSQL: Foydalanuvchi seansları, kesh, tavsiyalar
Yechim: Ikkalasini ham ishlating! (Polyglot Persistence)
Ijtimoiy Tarmoq:
NoSQL: Postlar, kommentariyalar, do'stlar ro'yxati (tez o'zgaradi)
SQL: Foydalanuvchi autentifikatsiyasi, billing
Bank Tizimi:
SQL: Tranzaksiyalar, hisoblar (ACID juda muhim!)
NoSQL: Log'lar, audit ma'lumotlari
Python da Ishlash
MySQL bilan (SQL):
db = mysql.connector.connect(
host="localhost",
user="root",
password="parol",
database="test"
)
cursor = db.cursor()
cursor.execute("SELECT * FROM foydalanuvchilar")
natijalar = cursor.fetchall()
for row in natijalar:
print(row)
MongoDB bilan (NoSQL):
client = MongoClient('mongodb://localhost:27017/')
db = client['test']
collection = db['foydalanuvchilar']
# Qo'shish
collection.insert_one({"ism": "Ali", "yosh": 25})
# Topish
for user in collection.find({"yosh": {"$gt": 18}}):
print(user)
Node.js da Ishlash
MySQL:
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'parol',
database: 'test'
});
connection.query('SELECT * FROM foydalanuvchilar', (err, results) => {
if (err) throw err;
console.log(results);
});
MongoDB (Mongoose bilan):
mongoose.connect('mongodb://localhost/test');
const UserSchema = new mongoose.Schema({
ism: String,
yosh: Number
});
const User = mongoose.model('User', UserSchema);
// Qo'shish
const user = new User({ ism: 'Ali', yosh: 25 });
await user.save();
// Topish
const users = await User.find({ yosh: { $gt: 18 } });
Kelajak Tendensiyalari
- NewSQL: SQL va NoSQL ning yaxshi tomonlari (CockroachDB, Google Spanner)
- Multi-model: Bir bazada SQL va NoSQL (ArangoDB, OrientDB)
- Cloud-native: Bulut uchun maxsus (Firebase, MongoDB Atlas)
- Serverless: Server boshqarish shart emas (Fauna, Supabase)
Xulosa
SQL va NoSQL - ikkalasi ham kuchli vositalar. "Eng yaxshisi" degan narsa yo'q - faqat loyihangiz uchun "eng mos keluvchisi" bor.
Ko'pincha eng yaxshi yechim - ikkalasini ham ishlatish! Har birining kuchli tomonlaridan foydalaning:
- SQL - murakkab munosabatlar va tranzaksiyalar uchun
- NoSQL - tez o'zgaruvchi va katta hajmli ma'lumotlar uchun
Eng muhimi - amaliyot qiling! Ikkalasini ham o'rganib, real loyihalarda sinab ko'ring. Faqat shunda qaysi biri sizga yoqishini bilasiz.
Omad tilaymiz ma'lumotlar bazalari bilan ishlashda! 💾
Muallif: Otabek Shodiyorov
Sana: 20 Yanvar, 2026
Kategoriya: Database, SQL, NoSQL, Backend
Chuqurlashtirilgan SQL Bo‘limi
JOIN turlari
SELECT u.ism, o.summa
FROM users u
INNER JOIN orders o ON o.user_id = u.id;
GROUP BY va agregatsiya
FROM orders
GROUP BY user_id
HAVING COUNT(*) > 3;
Index nima uchun kerak?
- ✅ Qidiruvni tezlashtiradi
- ❌ INSERT/UPDATE sekinlashishi mumkin (index ko‘p bo‘lsa)
- ✅ Katta jadvalda eng foydali optimizatsiya
NoSQLda Data Modeling
- Embed (ichiga joylash): tez o‘qish kerak bo‘lsa
- Reference (aloqa): data ko‘p takrorlanmasin desangiz
- Denormalizatsiya: tezlik uchun ba’zan keraksiz takror ham qilinadi
Mini-Loyiha: “Blog DB”
- SQL: users, posts, comments jadvalini chizing
- NoSQL: post hujjati (document) strukturasini yozing
- Qaysi holatda SQL yaxshiroq? Qaysida NoSQL?
Mashqlar
- 18 yoshdan katta userlarni chiqarish
- Eng ko‘p post yozgan 5 ta user
- Oxirgi 7 kunda yozilgan postlar
📲 Aloqa
Agar savolingiz bo‘lsa yoki hamkorlik qilishni xohlasangiz:
- Telefon: +998 90 459 94 09
- Telegram: t.me/otabekie (@otabekie)
SQL/NoSQL: “To‘liq” Amaliy Bo‘lim
Bu bo‘lim ma’lumotlar bazasini real loyihalarda to‘g‘ri tanlash va ishlatishni chuqurroq o‘rgatadi.
1) Normalizatsiya (SQL)
- 1NF: har ustun atomar qiymat
- 2NF: qisman bog‘liqlik yo‘q
- 3NF: tranzitiv bog‘liqlik yo‘q
2) Index va performans
EXPLAIN SELECT * FROM users WHERE email='a@b.com';
Maslahat: ko‘p filter bo‘ladigan ustunlarga index qo‘yiladi, lekin juda ko‘p index INSERT/UPDATE ni sekinlashtiradi.
3) JOIN turlari
SELECT u.username, p.title
FROM users u
JOIN posts p ON p.user_id = u.id;
4) Transaction (ACID) misoli
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
5) NoSQL’da modeling
- Embed: tez o‘qish uchun ichiga joylash
- Reference: data takrorlanmasin, alohida collection
Mini-loyiha: “User + Post”
SQL’da 2 jadval (users/posts) va JOIN, NoSQL’da esa bitta user ichiga posts embed qilingan variantni taqqoslab ko‘ring.
FAQ
- Qachon SQL? moliya, to‘lov, qat’iy integrity kerak bo‘lsa.
- Qachon NoSQL? schema tez o‘zgaradigan, katta trafik, real-time bo‘lsa.
📲 Aloqa
Savol, taklif yoki hamkorlik uchun:
- Telefon: +998 90 459 94 09
- Telegram: t.me/otabekie (@otabekie)
✅ Amaliy mashqlar
- Bugungi mavzu bo‘yicha 5 ta savol yozib, o‘zing javob ber.
- 3 ta real misol top: “qayerda ishlatiladi?”, “nima uchun kerak?”, “qanday foyda beradi?”.
- Mini-lug‘at: 10 ta termin + izoh.
🧩 Mini-loyiha g‘oyasi
Shu sahifadagi bilimga tayangan holda kichik loyiha qiling. Maqsad — “o‘qib” qolmasdan, qo‘l bilan qilish:
- 1 betlik konspekt + 1 betlik amaliy misol
- Har bo‘limdan keyin 1 ta “demo” (kod yoki diagramma)
- Oxirida: o‘zingizga “cheatsheet” (tezkor eslatma)
❓ Tez-tez so‘raladigan savollar
- Qachon amalda qo‘llayman? — Birinchi kichik loyiha qilganingizdan keyin darhol.
- Nimani yodlash kerak? — Yodlashdan ko‘ra, ko‘p takroriy mashq qiling.
- Keyingi qadam? — Keyingi sahifalarga o‘ting va “mini-loyiha”larni ketma-ket bajaring.
- HTML/CSS/JS darsliklarini parallel o‘ting.
- Linux va Windows buyruqlarini amalda sinab boring.
- SSH/Nmap bo‘limini faqat ruxsatli labda ishlating.