Big Binary Files Upload (PostgreSQL)
PostgreSQL Büyük Nesneler
PostgreSQL, resimler veya PDF belgeleri gibi büyük veri tiplerini depolamak için tasarlanmış olan pg_largeobject
tablosuna erişilebilen büyük nesneler adı verilen bir yapı sunar. Bu yaklaşım, verilerin dosya sistemine geri aktarılmasını sağlayan COPY TO
işlevine göre avantajlıdır ve orijinal dosyanın tam bir kopyasının korunmasını sağlar.
Bu tabloya bir tam dosya depolamak için, bir nesne (LOID tarafından tanımlanan) pg_largeobject
tablosunda oluşturulmalı ve ardından bu nesneye 2KB boyutunda her biri veri parçaları eklenmelidir. Bu parçaların tam olarak 2KB boyutunda olması (son parça hariç) ihracat işlevinin doğru şekilde çalışmasını sağlamak için önemlidir.
Binary verilerinizi 2KB'lık parçalara bölmek için aşağıdaki komutlar kullanılabilir:
Her bir dosyanın Base64 veya Hex formatına kodlanması için aşağıdaki komutlar kullanılabilir:
Önemli: Bu işlemi otomatikleştirirken, açık metin baytlarının 2KB'lık parçalarını gönderdiğinizden emin olun. Hex kodlu dosyaların boyutu ikiye katlandığı için her parça için 4KB veri gerekecektir, Base64 kodlu dosyalar ise ceil(n / 3) * 4
formülünü takip eder.
Büyük nesnelerin içeriği hata ayıklama amaçlı olarak görüntülenebilir:
lo_creat
ve Base64 Kullanımı
Binary verileri depolamak için öncelikle bir LOID oluşturulur:
Hassas kontrol gerektiren durumlarda, örneğin Kör SQL Enjeksiyonu söz konusu olduğunda, sabit bir LOID belirtmek için lo_create
tercih edilir.
Veri parçaları aşağıdaki gibi eklenir:
Büyük nesneyi kullanımdan sonra dışa aktarmak ve potansiyel olarak silmek için:
lo_import
ve Hex Kullanımı
lo_import
fonksiyonu, büyük bir nesne için bir LOID oluşturmak ve belirtmek için kullanılabilir:
Aşağıdaki nesne oluşturulduktan sonra, her sayfa için veri eklenir ve her parça 2KB'ı geçmez:
İşlemi tamamlamak için veriler dışa aktarılır ve büyük nesne silinir:
Sınırlamalar
Büyük nesnelerin ACL'leri (Erişim Kontrol Listeleri) olabileceği belirtilmektedir ve bu, kullanıcınız tarafından oluşturulan nesnelere bile erişimi kısıtlayabilir. Bununla birlikte, daha eski ve izin verici ACL'lere sahip nesneler hala içerik sızdırma için erişilebilir olabilir.
Last updated