Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
PostgreSQL'de Güvenlik ve Operasyon Temelleri: Role, GRANT, pg_hba, SCRAM, Backup ve Major Upgrade
PostgreSQL'de güvenlik üç role ile başlar: şemanın sahibi, yalnızca DML yapan uygulama ve bakım için superuser; default privileges yalnızca adı verilen rolün oluşturduğu nesnelere uygulanır. GRANT, pg_read_all_data, RLS, pg_hba.conf, SCRAM, Npgsql'de SSL Mode=VerifyFull, pg_dump/pg_restore ile restore testi, WAL arşiviyle PITR ve 18'in checksum ve istatistik değişiklikleriyle pg_upgrade.
EF Core ile PostgreSQL: Npgsql Provider, snake_case, Array/JSON Mapping, Enum, xmin Concurrency ve Migration Farkları
EF Core'u PostgreSQL'e taşımak UseNpgsql'den fazlası: karşılaştırma büyük/küçük harfe duyarlıdır ve SQL Server'da çalışan == araması sessizce boş döner. EFCore.NamingConventions ile snake_case, text[] ve @> çevirisi, jsonb'ye eşlenen complex type ve ExecuteUpdate ile jsonb_set, PostgreSQL enum, uuid v7, xmin ile concurrency token, generated tsvector ve CREATE INDEX CONCURRENTLY'nin migration'ı transaction dışına taşıması.
Npgsql ve Dapper ile PostgreSQL: NpgsqlDataSource, Type Mapping, COPY ve LISTEN/NOTIFY
.NET'ten PostgreSQL'e uygulama boyunca tek bir NpgsqlDataSource ile bağlanılır; timestamptz'ye yalnızca UTC değer yazılır, Dapper ise Kind'ı belirsiz DateTime'ı hata vermeden üç saat kaydırabilir. DI ve pool varsayılanları, = ANY(@ids), DateOnly ve jsonb, Dapper'ın enum'ı integer göndermesi, 100.000 satırda Execute, NpgsqlBatch ve binary COPY, otomatik prepare, LISTEN/NOTIFY ile cache invalidation ve OpenTelemetry.
PostgreSQL'de Transaction, Isolation ve Locking: Serializable SSI, SELECT FOR UPDATE SKIP LOCKED ve Advisory Lock
PostgreSQL'de okuyan yazanı hiçbir isolation level'da beklemez; REPEATABLE READ ve SERIALIZABLE çakışmayı kilitle değil 40001 hatasıyla çözer, bu yüzden retry şarttır. Lost update ve write skew denemeleri, foreign key'i bekleten FOR UPDATE yerine FOR NO KEY UPDATE, SKIP LOCKED ile dört worker'lı outbox relay, advisory lock, deadlock, ALTER TABLE'ın lock kuyruğu ve EF Core execution strategy ile retry.
PostgreSQL Nedir? SQL Server Geliştiricisi için Mimari: Process'ler, Shared Buffers, WAL ve MVCC
PostgreSQL her bağlantı için ayrı bir işletim sistemi process'i başlatır, belleğin çoğunu işletim sisteminin cache'ine bırakır ve bir satırın eski sürümünü ayrı bir version store'da değil tablonun içinde tutar; SQL Server bilen biri için farkların çoğu buradan çıkar. Gerçek çıktılarla postmaster ve backend'ler, 97. bağlantıdaki 53300 hatası, connection pool, shared_buffers, WAL ve checkpoint, xmin/xmax ile MVCC, kavram eşlemesi, lisans ve sürüm takvimi.