Ana Sayfa

Postgres'te Büyük Veri Yüklerini Yönetmek: Supertoast Tabloları

1 dk okuma

Hatchet ekibi, web uygulamaları için veri depolama ve erişim sorunlarında Postgres'i başlangıç noktası olarak kullanma felsefesini benimsemiş durumda. Bu yaklaşım, görev kuyrukları, önbellekleme ve dosya depolama gibi çeşitli iş yükleri için Postgres'in genel amaçlı bir veritabanı motoru olmasından ve donanım performansındaki gelişmelerden faydalanıyor. Ancak, büyüyen her startup gibi Hatchet da bu yaklaşımın sınırlarına ulaştı: Postgres örneklerinde büyük miktarda jsonb verisi depolamak. Bu durum, veritabanı depolama alanının önemli bir kısmını kaplayan ve yedeklemeleri şişiren büyük veri yükleri nedeniyle maliyet verimliliği ve disk yönetimi açısından sorunlar yaratmaya başladı. Hatchet'ın temel veri yapısı, dayanıklı iş akışlarının ve olayların üzerine inşa edildiği görev kuyruğudur. Bu kuyruktaki her görev, bir girdi ve tamamlandıktan sonra bir çıktı içerir. Bu girdiler ve çıktılar, sisteme hızla giren rastgele JSON yükleridir. Sistem, görevlerin ortalama 25ms'den daha kısa sürede başlayacak şekilde hızlı olması gerektiği için nesne depoları veya kısıtlayıcı IOPS'a sahip ağa bağlı diskler gibi seçenekler elenmiştir; NVMe diskler bu gereksinimi karşılamaktadır. Hatchet, bu yükleri jsonb sütun tipi kullanarak Postgres'e kalıcı olarak kaydeder. Ancak, bu büyük yüklerin çoğu yalnızca çok yakın zamandaki görevler için sıkça erişilirken, bir günden eski yükler nadiren kullanılır. Bu durum, NVMe disklerde büyük miktarda verinin boşta durmasına neden olarak maliyet verimliliğini düşürmekte ve veritabanı yedeklemelerini büyütmektedir. Bu sorunları çözmek için Hatchet, jsonb sütunlarından ve standart TOAST tablolarından, "supertoast tabloları" adını verdikleri özel bir çözüme geçiş yaptı. Bu yeni yaklaşım, büyük veri yüklerinin veritabanı performansını ve depolama maliyetlerini olumsuz etkilemesini engellemeyi amaçlıyor. Bu geçiş, özellikle yüksek veri değişim oranına (churn) sahip sistemlerde, veritabanı doluluğu ve disk değişimi gibi operasyonel zorlukları aşmak için kritik bir adım olarak öne çıkıyor.

İçgörü

Hatchet'ın büyük JSON yüklerini Postgres'te verimli bir şekilde depolamak için geliştirdiği "supertoast tabloları" çözümü, veritabanı performansını ve depolama maliyetlerini optimize etme konusunda önemli bir yenilik sunuyor.

Kaynak