Redis vs Memcached
In-memory veri depolama dünyasında çok amaçlı Redis ile odaklı Memcached karşı karşıya. Önbellekleme ihtiyaçlarınız için hangisi daha uygun?
Gelişmiş açık kaynak ilişkisel veritabanı
Esnek NoSQL belge veritabanı
-- PostgreSQL - kullanıcı ve sipariş sorgusu
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
profile JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id),
total NUMERIC(10,2) NOT NULL,
status TEXT CHECK (status IN ('pending','paid','shipped'))
);
-- Window fonksiyonu ile kullanıcı bazlı toplam
SELECT u.email,
SUM(o.total) AS toplam_harcama,
RANK() OVER (ORDER BY SUM(o.total) DESC) AS siralama
FROM users u
JOIN orders o ON o.user_id = u.id
GROUP BY u.email;// MongoDB - kullanıcı ve sipariş işlemleri (Node.js)
import { MongoClient } from 'mongodb';
const client = new MongoClient(process.env.MONGO_URI!);
const db = client.db('shop');
// Esnek belge yapısı — şema migration yok
await db.collection('users').insertOne({
email: '[email protected]',
profile: { bio: 'Geliştirici', social: { github: 'ali' } },
createdAt: new Date()
});
// Aggregation pipeline ile sipariş toplamları
const result = await db.collection('orders').aggregate([
{ $match: { status: 'paid' } },
{ $group: { _id: '$userId', toplamHarcama: { $sum: '$total' } } },
{ $sort: { toplamHarcama: -1 } },
{ $limit: 10 }
]).toArray();PostgreSQL, veri bütünlüğü ve güçlü sorgulama gerektiren finansal, kurumsal ve analitik sistemler için üstün bir tercih. MongoDB ise esnek şema, yatay ölçeklenebilirlik ve hız gerektiren içerik odaklı veya IoT uygulamalarında parlar. JSONB desteğiyle PostgreSQL artık hem ilişkisel hem belge odaklı ihtiyaçları karşılıyor.
Basit belge okuma/yazma işlemlerinde MongoDB genellikle öne çıkar. Karmaşık sorgu ve JOIN'lerde ise PostgreSQL'in sorgu optimizasyonu MongoDB'nin $lookup'ından daha verimlidir. Gerçek performans, veri modeline ve kullanım senaryosuna bağlıdır.