PostgreSQL vs MongoDB
İlişkisel veritabanlarının açık kaynak şampiyonu PostgreSQL ile esnek NoSQL belgeli MongoDB. Veri modelinize göre doğru veritabanını nasıl seçersiniz?
Çok amaçlı in-memory veri yapıları
Basit ve hızlı dağıtık önbellekleme
// Redis — önbellekleme ve pub/sub (Node.js ioredis)
import Redis from 'ioredis';
const redis = new Redis(process.env.REDIS_URL);
// TTL'li önbellekleme
async function getUserCached(userId: string) {
const cached = await redis.get(`user:${userId}`);
if (cached) return JSON.parse(cached);
const user = await db.users.findById(userId);
await redis.setex(`user:${userId}`, 3600, JSON.stringify(user));
return user;
}
// Sorted set ile liderlik tablosu
await redis.zadd('leaderboard', 1500, 'ali');
await redis.zadd('leaderboard', 2300, 'ayse');
const top10 = await redis.zrevrange('leaderboard', 0, 9, 'WITHSCORES');
// Rate limiting
const key = `rate:${ip}`;
const count = await redis.incr(key);
if (count === 1) await redis.expire(key, 60);
if (count > 100) throw new Error('Çok fazla istek');// Memcached — basit önbellekleme (Node.js memjs)
import Memcached from 'memjs';
const client = Memcached.Client.create(
process.env.MEMCACHIER_SERVERS!,
{
username: process.env.MEMCACHIER_USERNAME,
password: process.env.MEMCACHIER_PASSWORD
}
);
// Veri önbellekleme (TTL: 1 saat)
async function getPageCached(path: string) {
const { value } = await client.get(path);
if (value) return value.toString();
const html = await renderPage(path);
await client.set(path, html, { expires: 3600 });
return html;
}
// Önbelleği temizle
await client.delete('home-page');Yeni projeler için Redis neredeyse her zaman daha iyi bir tercih — zengin veri yapıları, kalıcılık seçenekleri ve aktif ekosistemi ile Memcached'in önüne geçiyor. Memcached yalnızca mevcut altyapı yatırımı olan veya çok basit, saf önbellekleme ihtiyacı olan sistemlerde değerini koruyor.
Ücretsiz Danışmanlık AlBasit key-value get/set işlemlerinde ikisi benzer performans gösterir. Paralel bağlantı yükünde Memcached'in multi-thread mimarisi avantaj sağlar. Pratik uygulamalarda fark ihmal edilebilir düzeydedir.