Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Verimli Denetim: PostgreSQL JSONB’yi Laravel’de Ustalıkla Kullanma
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Verimli Denetim: PostgreSQL JSONB’yi Laravel’de Ustalıkla Kullanma

Yazılım

Verimli Denetim: PostgreSQL JSONB’yi Laravel’de Ustalıkla Kullanma

teknomers
Son güncelleme: 15 Mayıs 2026 08:15
teknomers
Paylaş
Paylaş

Polimorfik Denetim Günlüklerinin Sorunları

<p>B2B SaaS mühendisliğinde, Smart Tech Devs'te sağlam bir denetim izi oluşturmak—tam olarak kimin neyi değiştirdiğini ve ne zaman değiştirdiğini takip etmek—genellikle zorunlu bir uyumluluk gereksinimidir. Standart Laravel yaklaşımı, merkezi bir <code>audits</code> tablosuna polimorfik ilişkiler kullanarak her bir model güncellemesi için yeni bir satır oluşturmaktır.</p>

<p>Platformunuz <code>invoices</code> veya <code>users</code> gibi ana tablolarda milyonlarca satıra ölçeklendiğinde, bu denetim stratejisi artık işlevsel olmaktan çıkar. Merkezi denetim tablonuz devasa hale gelir, bu da veritabanınızı boğar ve eski verileri temizlemek pahalı bir kilitleme işlemi haline gelir. Dahası, standart günlük kaydı genellikle tüm model durumunu yakalar, sadece değişen verileri değil, bu da değerli disk alanı israfına yol açar. Kalıcı bir mimari oluşturmak için  PostgreSQL JSONB  gücünden yararlanmalıyız.</p>

<h2>JSONB Kompakt Değişiklik Kümeleri</h2>

<p>PostgreSQL'in JSONB veri türü, yapısal olmayan, indekslenmiş JSON verilerini verimli bir şekilde depolamamıza olanak tanır. Devasa polimorfik günlük tabloları oluşturmak yerine, bir "değişiklik kümesini" doğrudan ana modeldeki özel bir denetim sütununa veya bir yan tabloya JSONB ile ekleyebiliriz.</p>

<h3>Adım 1: Veritabanı Migration'ı</h3>

<p>Ayrı bir tablo yerine, denetimini yapmak istediğimiz modele bir <code>jsonb</code> sütunu ekliyoruz. Ayrıca bu sütunda hızlı aramalar için bir GIN indeksi oluşturduğumuzdan emin oluyoruz.</p>

<pre><code>

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddAuditLogToInvoicesTable extends Migration
{
public function up(): void
{
Schema::table(‘invoices’, function (Blueprint $table) {
// Değişiklik kümesinin kompakt bir dizisini saklıyoruz: [{user_id, changed_at, old: {}, new: {}}, …]
$table->jsonb(‘audit_log’)->nullable();
});

    // JSONB verilerinde verimli sorgulama için bir GIN indeksi ekleyin
    DB::statement('CREATE INDEX invoices_audit_log_gin ON invoices USING GIN (audit_log);');
}

}

<h3>Adım 2: Model Gözlemcileri ile Verimli Denetim</h3>

<p>Tüm modeli yakalamıyoruz. Bir Eloquent Observer kullanarak <code>updating</code> olayına bağlanıyoruz, Laravel'in <code>getDirty()</code> ve <code>getOriginal()</code> yöntemlerini kullanarak sıkı bir değişiklik kümesi hesaplıyoruz ve minimal JSON delta'yı denetim sütunumuza ekliyoruz.</p>

<pre><code>

namespace App\Observers;

use App\Models\Invoice;
use Illuminate\Support\Facades\Auth;

class InvoiceObserver
{
/ 

  • Invoice “updating” olayını ele al.
    */
    public function updating(Invoice $invoice): void
    {
    // 1. Yalnızca değiştirilen özellikleri ve orijinal değerlerini al
    $dirty = $invoice->getDirty();
    $original = array_intersect_key($invoice->getOriginal(), $dirty);

    if (empty($dirty)) {
    return; // Değişiklik yapılmadı
    }

    // 2. Kompakt bir değişiklik kümesi oluştur
    $changeset = [
    ‘user_id’ => Auth::id() ?? ‘system’,
    ‘changed_at’ => now()->toIso8601String(),
    ‘old’ => $original,
    ‘new’ => $dirty,
    ];

    // 3. Mevcut JSONB dizisine değişiklik kümesini ekleyin (veritabanı düzeyinde birleştirme kullanarak)
    // Bunu yapmak, tüm denetim geçmişini belleğe yüklenmeden eklemeyi sağlıyor.
    $invoice->audit_log = DB::raw(“jsonb_insert(COALESCE(audit_log, ‘[]’), ‘{0}’, ‘” . json_encode($changeset) . “‘)”);
    }
    }

<h2>Mühendislik ROI</h2>

<p>Modelin kendisinde (veya bir yan tabloda) JSONB değişiklik kümelerine geçmek, denetim altyapınızı temelden yükseltir:</p>

<ul>
    <li>

Veritabanı Şişmesini Dramatik Şekilde Azaltma: Değişen verileri saklıyorsunuz, tüm model durumunu birden fazla kez kopyalamadığınız için.

  • Düz Sorgu Performansı: Bir modelin denetim geçmişini almak artık o modelin satırında tek bir, indekslenmiş sorgu ile mümkün, karmaşık bir birleşim gerektirmiyor.
  • Sadeleştirilmiş Temizlik: 2 yıldan daha eski verileri temizlemeniz gerektiğinde, merkezi bir tabloda pahalı kilit silmelere ihtiyacınız yok. Basit, bölümlü veritabanı güncellemeleri yürütebilirsiniz veya JSONB yapısındaki daha eski girişleri görmezden gelebilirsiniz.
  • <h2>Sonuç</h2>
    
    <p>Polimorfik denetim günlükleri, ölçeklendiğinde bir yük haline gelir. Laravel Gözlemcileri içinde PostgreSQL'in JSONB esnekliğinden ve performansından yararlanarak, veri bütünlüğünü tehlikeye atmadan sistem performansını koruyan dayanıklı, yüksek verimli bir denetim izi oluşturursunuz.</p>

    Kaynak: Orijinal Makale

    CVE-2025-54068: Laravel Livewire Kod Enjeksiyonu Açığı
    Canlı CRM’den Çoklu Kiracılık ve İkinci İncelemenin Bulduğu İki Eksiklik
    Laravel İçin Basit Bir Görünüm Sayacı Paketi
    Laravel ile Filament Kullanarak MCP Sunucusu Nasıl Oluşturulur
    Kablosuz Cihazlarda Sızma Testi Yapabileceğiniz Bir Yazılım: KİSMET Nedir? Ne İşe Yarar?
    Bu Makaleyi Paylaş
    Facebook Bağlantıyı Kopyala Yazdır
    Paylaş
    Önceki Makale Subnautica 2: Önceki Oyunların Güzelliğini Taşıyor
    Sonraki Makale Acil: CISA, Cisco SD-WAN’a kritik CVE-2026-20182 ekledi!

    Sanal Medya

    FacebookBeğen
    452Takip Et
    PinterestSabitle
    237Takip Et

    Son Eklenenler

    Laufey’in Savaş Taktiği Eski Yunan Üçlemesinden İlham Aldı
    Oyun
    Şimşek, coaxial kablodan apartmana girip PC’yi patlattı
    Donanım
    Outlook’un yıllardır güvenlik açığı, Fedora ve Dovecot güncellemesiyle ortaya çıktı
    Donanım
    Yaz Geliştirici Festivali 2026: Tüm Yenilikler Ortaya Çıkıyor
    Oyun
    Madonna’nın Grindr’daki Cesur ve Heyecan Verici Ticareti
    Genel
    Meta’nın AI Sunucuları İçin Tüm ABD’ye Çadırlar Kurması
    Donanım
    //

    Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

    Kurumsal

    • Hakkımızda
    • Gizlilik politikası
    • Tanıtım Yazısı ve Backlink Hizmeti

    Kategoriler

    • Teknoloji
    • Oyun
    • Sinema
    • Siber Güvenlik
    • Bilim
    • Finans
    • Dünyadan Güncel Haberler

    Populer

    • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

    • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

    • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

    Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
    Bizi Takip Et
    © 2026 Teknomers. All Rights Reserved.
    Welcome Back!

    Sign in to your account

    Kullanıcı Adı veya E-posta Adresi
    Şifre

    Şifrenizi mi unuttunuz?