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:

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:

SQL Misoli:

Jadval yaratish:

CREATE TABLE foydalanuvchilar (
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:

INSERT INTO foydalanuvchilar (ism, email, yosh)
VALUES ('Ali', 'ali@example.com', 25);

Ma'lumot olish:

SELECT * FROM foydalanuvchilar WHERE yosh > 18;

Yangilash:

UPDATE foydalanuvchilar
SET yosh = 26
WHERE ism = 'Ali';

O'chirish:

DELETE FROM foydalanuvchilar WHERE id = 1;

SQL ning Afzalliklari:

SQL ning Kamchiliklari:

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)

2. Key-Value Stores

3. Column-Family Stores

4. Graph Databases

MongoDB Misoli:

Ma'lumot qo'shish:

db.foydalanuvchilar.insertOne({
ism: "Ali",
email: "ali@example.com",
yosh: 25,
manzil: {
shahar: "Toshkent",
mahalla: "Yunusobod"
},
qiziqishlar: ["dasturlash", "kitob o'qish"]
});

Ma'lumot olish:

db.foydalanuvchilar.find({ yosh: { $gt: 18 } });

Yangilash:

db.foydalanuvchilar.updateOne(
{ ism: "Ali" },
{ $set: { yosh: 26 } }
);

NoSQL ning Afzalliklari:

NoSQL ning Kamchiliklari:

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:

NoSQL ni tanlang agar:

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):

import mysql.connector

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):

from pymongo import MongoClient

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 mysql = require('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):

const mongoose = require('mongoose');

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

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:

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

-- INNER JOIN
SELECT u.ism, o.summa
FROM users u
INNER JOIN orders o ON o.user_id = u.id;

GROUP BY va agregatsiya

SELECT user_id, COUNT(*) AS buyurtmalar_soni
FROM orders
GROUP BY user_id
HAVING COUNT(*) > 3;

Index nima uchun kerak?

NoSQLda Data Modeling

Mini-Loyiha: “Blog DB”

  1. SQL: users, posts, comments jadvalini chizing
  2. NoSQL: post hujjati (document) strukturasini yozing
  3. Qaysi holatda SQL yaxshiroq? Qaysida NoSQL?

Mashqlar

📲 Aloqa

Agar savolingiz bo‘lsa yoki hamkorlik qilishni xohlasangiz:

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)

2) Index va performans

CREATE INDEX idx_users_email ON users(email);
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

-- INNER JOIN
SELECT u.username, p.title
FROM users u
JOIN posts p ON p.user_id = u.id;

4) Transaction (ACID) misoli

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

5) NoSQL’da modeling

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

📲 Aloqa

Savol, taklif yoki hamkorlik uchun:


✅ Amaliy mashqlar

🧩 Mini-loyiha g‘oyasi

Shu sahifadagi bilimga tayangan holda kichik loyiha qiling. Maqsad — “o‘qib” qolmasdan, qo‘l bilan qilish:

❓ Tez-tez so‘raladigan savollar

📌 Keyingi qadamlar
  • HTML/CSS/JS darsliklarini parallel o‘ting.
  • Linux va Windows buyruqlarini amalda sinab boring.
  • SSH/Nmap bo‘limini faqat ruxsatli labda ishlating.