« Tüm yayınlar

Cloudflare D1 ücretsiz katmanda 500 MB duvarına ne olur

Cloudflare D1'in ücretsiz 500 MB depolama sınırı REST API üzerinden test edildi: kesin bayt sınırı, DELETE ile kurtarma ve blob kolonuna indeks eklemenin depolamayı ikiye katlaması ortaya çıktı.

Bir geliştirici, Cloudflare Workers Free planındaki D1 veritabanını REST API üzerinden doldurarak 500 MB'lık depolama sınırında gerçekte ne olduğunu test etti. Sonuç, çoğu karşılaştırmanın atladığı pratik detaylarla dolu: duvar tam olarak salt-okunur bir kilitlenme değil, okuma işlemleri her zaman geçiyor ve yazmalar sadece kalan alan (headroom) bittiğinde reddediliyor. Tek satırlık ekleme denemeleriyle sınır, 4 KB'lık SQLite sayfa büyüklüğüne göre 499.994.624 bayta kadar kesin olarak sabitlendi.

Kurtarma basit bir DELETE ile anında gerçekleşiyor — plan yükseltmesi ya da VACUUM gerekmiyor — ama bu işlem ücretsiz günlük 100.000 yazma kotasından pay çekiyor, çünkü D1 DELETE'i de yazma olarak sayıyor. Yazar en dikkat çekici bulguyu iki kez yanlış yorumladıktan sonra düzeltti: blob kolonuna CREATE INDEX çalıştırmak, indeks anahtarlarının kolon verisinin bir kopyasını taşıması nedeniyle depolamayı kabaca ikiye katlıyor. Bu da sınırın altındaki bir veritabanının salt indeks oluşturma yüzünden 500 MB duvarına çarpmasına yol açabiliyor; SQLITE_NOMEM hatası bağımsız bir bellek sorunu değil, aslında depolama sınırının bir belirtisi.

Bulgular mühendisler için önemli çünkü D1'in hata kodu 7500 dokümantasyonda yer almıyor ve mesaj metni asıl ayırt edici unsur. Ayrıca hesap düzeyinde 5 GB depolama, günlük 5 milyon okuma ve 100.000 yazma gibi başka sınırlar da mevcut ancak bu deneyde test edilmedi. Yazar, bulgularının çoğunun tek denemeye (n=1) dayandığını ve genellemelerin dikkatli yapılması gerektiğini açıkça belirtiyor; kod ve ham veriler GitHub'da paylaşılmış durumda.