Hoş Geldiniz! KablosuzForum.net

Tüm özelliklerimize erişmek için şimdi bize katılın. Kaydolup giriş yaptıktan sonra konu oluşturabilir, mevcut konulara yanıt gönderebilir, diğer üyelerinize itibar kazandırabilir, kendi özel mesajlaşma programınızı edinebilir ve çok daha fazlasını yapabileceksiniz. Aynı zamanda hızlı ve tamamen ücretsizdir, peki daha ne bekliyorsunuz?

Soru Sor

Merak ettiğiniz, kafanıza takılan sorular hakkında konu açın, diğer üyelerimiz ve moderatörlerimiz cevaplasın.

Ticaret

Ticari konular açıp güven oluşturmak ve daha fazla satış rakamlarına ulaşmak için hesabını doğrula!

Bize ulaşın

Yönetim kadrosuyla iletişime geçin

Üyeliğini Yükselt!

Üyeliğinizi yükselterek birbirinden ayrıcalıklı özelliklere sahip olun!

Geçmişi Kabullenmek: Postgres’ta Zaman Yolculuğuna Eşlik Eden Temporal Tablolar

Resim 1 Resim 2

bozhatice

Hatice Boz
KF Kullanıcı
Katılım
17 Eki 2024
Mesajlar
3
Tepkime puanı
4
Puanları
1

Geçmişi Kabullenmek: Postgres’ta Zaman Yolculuğuna Eşlik Eden Temporal Tablolar​


“Veri sadece bugündür, geçmiş ise savunulması gereken kutsal bir varlık.” – Unnamed Database Enthusiast

> **Neden Bu Konu Öyle Önemli?**

> - **Denetim**: Her bir değişiklik kaydedilerek kim, ne zaman ve nasıl bir değişiklik yaptığını rahatlıkla izleyebilirsiniz.
> - **Veri Bilimi**: Pandemi gibi senaryolarda tarihe bakmak, trendleri doğru modellemek için kritik.
> - **Geri Getirme**: Hatalı bir UPDATE sonrasında “gelmişti” diyerek geri dönmek bu kadar zor değil.

## 1. Temporal Tablo Nedir?

PostgreSQL 15'ten itibaren sunulan **Temporal Table (Zamanlı Tablo)** özelliği, bir tablonun her değişikliğinin otomatik olarak kaydedildiği, tarih‑saati sahip bir sürüm sistemidir. Tek tek VIEW veya audit tablosu kurmazsanız bile, verileriniz geçmişte hangi sürümde olduğunu otomatik takip eder.

```sql
-- Temporal tablo oluşturma örneği
CREATE TABLE person
(
id BIGSERIAL PRIMARY KEY,
name TEXT,
age INT,
-- Postgres zaman dilimi destekli PST için
ts_created TIMESTAMPTZ GENERATED ALWAYS AS (now()) STORED,
ts_updated TIMESTAMPTZ GENERATED ALWAYS AS (now()) STORED
) WITH (SYSTEM_VERSIONING = ON);
```

Yukarıdaki başlık, `SYSTEM_VERSIONING` ile ateşlenip otomatik satır‑tarama oluşturur.

## 2. Nasıl Kullanılır?

### a. Geçmiş Üzerine Sorgulama

```sql
SELECT * FROM person FOR SYSTEM_TIME AS OF '2023-12-25 10:00:00' WHERE id = 1;
```

Bu sorgu, verilen anın `id = 1` olan kişinin bütün alanlarını çeker.

### b. Değişiklik geçmişi

```sql
SELECT * FROM person FOR SYSTEM_TIME ALL WHERE id = 1 ORDER BY system_start ASC;
```

## 3. En İyi Uygulamalar

1. **Güncelleme Politikası**: Veri yoğunluklu tablolar için snapshot‐based “temporal” yerine **log‑only** arşivleme de değerlendirilebilir.
2. **Arşiv ve Temizleme**: Zaman sarayı eski sürümleri otomatik olarak silme yeteneğine sahiptir;
`CONSTRAINTS` ile `DROP ON LEASE` veya manuel `VACUUM` izin verilir.
3. **Güvenlik**: `SYSTEM_VERSIONING` sütunları IP‑aka katılarak **Row‑Level Security** ile sınırlandırılabilir.
4. **Index**: `system_start` ve `system_end` üzerine `BRIN` indeksleri sorgu hızını katlayacak şekilde optimize edilir.

## 4. Soru: Geçmişi Ne Ölçüde Kullanmalı?

Birçok şirket sadece son 30 günü saklamayı tercih eder. Ancak, **dönemsel denetim raporları**, **API kaza analizi** veya **örnek veri yeniden üretimi** için yıllara dayanan kayıtlar değerli olabilir. Zamanlama gereksinimlerinize göre taşıyacak yapılandırma başlamak için idealdir.

> **Cevabınızı Paylaşın!**
>
> Siz zaman‑temelli veritabanı deneyimi yaşadınız mı? Hangisi sizin için daha fazla değer yarattı: denetim mi, veri bilimi mi, yoksa hata geri dönüşümü mü?

---

[*] Kaynak: PostgreSQL Documentation 15, Temporal Table API
[//]: # (Tüm kısaltmalar açıkta.)

photo-1682185656239-c440621124de
 
Responsive GIF Layout

shape1
shape2
shape3
shape4
shape5
shape6
Geri
Üst