İçeriğe geç
Muhammet Şafak
en

Uzmanlık

PostgreSQL geliştiricisi — 2010'dan beri

Partial index kuyruk tablosunu küçültür, ama planner onu seçtiği sürece; 2010'dan beri PostgreSQL ile çalışıyorum ve bu çekinceyi varsayım olarak değil, ölçüm olarak yazıyorum.

yıl
16

PostgreSQL benim için bir depo seçiminden çok, bir ölçüm yüzeyi. İndex ve kuyruk tablosu davranışı üzerine yayımladığım ölçümler bir benchmark’a ve açıklanan bir ortama dayanıyor; “genellikle şöyle olur” cümlesi yerine ne ölçtüğümü ve nerede bozulduğunu yazıyorum. Ölçümler Research bölümünde: partial index, bloat ve autovacuum, planner’ın generic plana geçip geçmediği.

Bu işin mimari tarafı Yazılım Mimarisi sayfasındaki çerçeveye bağlanıyor: yeni bir veri deposu eklemek bir karar, işletilecek bir sistem daha. Backend tarafında ise Backend rolünde şema ve sorgu tasarımının gündelik parçası.

MySQL’le daha uzun çalıştım; PostgreSQL’e dair söylediklerim yalnız PostgreSQL üzerinde yaptığım ölçümlerden geliyor.

PostgreSQL Geliştirici nedir?

PostgreSQL, SQL dilini genişleten, açık kaynaklı bir nesne-ilişkisel veritabanı sistemidir; ACID uyumludur, çok sürümlü eşzamanlılık denetimi (MVCC) kullanır ve eklentilerle genişletilebilir. PostgreSQL geliştiricisi, şemayı, sorguyu ve index'i bu sistemin davranışına göre tasarlayan kişidir.

PostgreSQL Geliştirici ne iş yapar?

PostgreSQL'de şema, sorgu ve index tasarlıyorum; özellikle kuyruk tablosu gibi çok güncellenen tablolarda index ve vacuum davranışını ölçüyorum. Vektör aramayı ayrı bir depoya taşımadan pgvector ile PostgreSQL içinde tutabildiğim yerde tutuyorum. Yeni bir veri deposu eklemeden önce PostgreSQL'in kendi araçlarının nerede yettiğine bakıyorum.

Birlikte kullandığım teknolojiler

  • PostgreSQL

    Kuyruk tablosu ve index davranışını üzerinde ölçtüğüm veritabanı.

  • pgvector

    Vektör aramasını ayrı bir depoya taşımadan PostgreSQL içinde tutan eklenti.

  • MySQL

    En uzun süre birlikte çalıştığım ilişkisel depo.

  • Redis

    Önbellek, sayaç ve kısa ömürlü kilit.

  • RabbitMQ

    Servisler arası asenkron teslim; outbox relay'inin çıkış kapısı.

  • Elasticsearch

    İlişkiselin yetmediği yer: tam metin arama ve log analizi.

  • Docker

    Geliştirme ortamı ve dağıtım paketi.

Sık sorulanlar

7 soru

  • PostgreSQL ile kaç yıldır çalışıyorsun?

    2010'dan bu yana, 16 yıldır.

  • PostgreSQL geliştirici ne iş yapar?

    PostgreSQL üzerinde şema, sorgu ve index tasarlar; veritabanının davranışını bilerek uygulamayı ona göre kurar. Bende bu; kuyruk tablosu gibi yoğun güncellenen tablolarda index ve vacuum davranışını ölçmek ve vektör aramayı gerektiği yerde PostgreSQL içinde tutmak demek.

  • PostgreSQL ile MySQL arasında nasıl seçiyorsun?

    MySQL en uzun süre birlikte çalıştığım ilişkisel depo; kuyruk tablosu ve index ölçümlerimi ise PostgreSQL üzerinde yaptım. Elimdeki ölçümler PostgreSQL'e ait, MySQL için aynı iddiayı kurmuyorum. Seçimi marka değil, iş yükü ve ekibin bilgisi belirliyor.

  • Kuyruk tablosunda partial index kullanıyor musun?

    Ölçtüm: partial index, kuyruk tablosunda index boyutunu belirgin biçimde küçültüyor, ama bu planner'ın onu seçmesine bağlı. Bloat ve autovacuum davranışını ve planner'ın generic plana geçip geçmediğini de ayrı ayrı ölçtüm. Bulguların hepsi [Research bölümünde](/tr/research/partial-index-kuyruk-tablosu/).

  • Vektör arama için ayrı bir veritabanı şart mı?

    Her zaman değil. pgvector, vektör aramasını ayrı bir depoya taşımadan PostgreSQL içinde tutuyor. Büyük embedding koleksiyonlarında ise Milvus gibi dağıtık bir vektör veritabanına bakıyorum.

  • Outbox tablosunu poll ederek mi yoksa Debezium CDC ile mi yayınlıyorsun?

    SKIP LOCKED, batch ve partial index'le ayarlanmış bir polling relay çoğu ekibe yetiyor. Debezium'a, gecikme ya da veritabanı yükü ölçülerek sıkıştığı yerde geçiyorum.

  • Yeni bir veri deposu eklemeden önce neye bakıyorsun?

    PostgreSQL'in kendi araçlarının sorunu çözüp çözmediğine. Ayrı bir depo, işletilecek bir sistem daha demek; önce eldeki aracın sınırını ölçüyorum.

Birlikte çalışalım

Bu ekosistemde bir işiniz varsa, ne yaptığınızı anlatın; nasıl kurulacağını konuşalım.

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi