Soft Delete vs Hard Delete: Veri Geri Dönüşü ve Performans

# Soft Delete vs Hard Delete: Veri Geri Dönüşü ve Performans

Hard delete, veritabanından verileri tamamen siler. Geri dönüş yoktur.

Soft delete, verileri silmek yerine "silinmiş" olarak işaretler. Veri kalır ama gösterilmez.

Hangi biri seçmeli? İş gereksinimlerine bağlı.

Hard delete doğrudan satırı siler:

1DELETE FROM users WHERE id = 5;

Avantajları:
- Veritabanı boyutu küçülür
- Sorgu performansı etkilenmez

Dezavantajları:
- Veri geri gelemez
- Hukuki sorunlar (muhasebe, denetim)
- Yanlış silme felaket

Soft delete bir sütun ekler ve işaretler:

1ALTER TABLE users ADD COLUMN deleted_at DATETIME NULL;
2
3UPDATE users SET deleted_at = NOW() WHERE id = 5;

Veri hala tabloda, ama `deleted_at` dolu olduğu için "silinmiş" sayılır.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Avantajları:
- Veri geri dönüş mümkün: `UPDATE users SET deleted_at = NULL WHERE id = 5;`
- Denetim izleri tutulur
- Yasal gereklilikleri karşılar

Dezavantajları:
- Tüm sorgulara `WHERE deleted_at IS NULL` eklemek gerekir
- Tablolar büyür, performans düşer
- Unique constraint sorunları (aynı email iki kere silinebilir)

Kullanıcı tablosu:

1CREATE TABLE users (
2id INT PRIMARY KEY,
3email VARCHAR(100),
4name VARCHAR(100),
5deleted_at DATETIME NULL
6);
7
8INSERT INTO users VALUES (1, 'ali@mail.com', 'Ali', NULL);
9INSERT INTO users VALUES (2, 'veli@mail.com', 'Veli', NULL);
10
11-- Soft delete
12UPDATE users SET deleted_at = NOW() WHERE id = 1;
13
14-- Sadece aktif kullanıcıları getir
15SELECT * FROM users WHERE deleted_at IS NULL;

Çıktı:

1id | email | name | deleted_at
22 | veli@mail.com | Veli | NULL

Ali silinmiş görünüyor ama veri hala var.

- Soft delete: Mali veriler, kullanıcı hesapları, siparişler
- Hard delete: Geçici veriler, log kayıtları, test verileri

Çoğu zaman ikisini karıştır: Önemli veriler için soft delete, eski loglar için hard delete.

Performans sorunuysa, silinmiş verileri ayrı bir tablo veya archive'e taşı.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz