4 puan yazan xguru 2023-07-07 | 1 yorum | WhatsApp'ta paylaş
  • SQLite veritabanını bulut depolamada sakladıktan sonra, tüm DB'yi indirmeden okuma ve yazmayı mümkün kılan bir sistem
    • Şu anda Azure Blob Storage ve Google Cloud Storage destekleniyor
  • Block Cache VFS modülü kullanılır: Daemonsuz modda (okuma/yazma) ve daemon modunda (salt okunur) çalışır

GN⁺ tarafından özetlenen içerik

  • "Bulut destekli SQLite" (CBS) sistemi, veritabanını bir bulut depolama hesabında saklar ve tüm veritabanını indirmeden depolama istemcilerinin erişmesine olanak tanır.
  • Birden fazla istemci aynı anda veritabanına erişebilir, ancak veritabanına yalnızca bir istemci yazabilir.
  • CBS şu anda Azure Blob Storage ve Google Cloud Storage'ı destekler; ayrıca diğer bulut depolama sistemlerini de destekleyebilir.
  • SQLite veritabanı sabit boyutlu bloklara bölünür ve bulut depolama sisteminde saklanır.
  • Sistem; bulut depolama konteyneri yönetimi için temel bileşenler, uzak veritabanına yerel erişim sağlayan bir daemon süreci ve bulut veritabanına erişmek için bir VFS modülünden oluşur.
  • CBS'yi kullanmak için uygulamanın gerekli C dosyalarını ve header dosyalarını derleyip bağlaması, ayrıca libcurl ve openssl ile link etmesi gerekir.
  • Sistem, otomatik test paketi kullanılarak test edilebilir.
  • Veritabanı, komut satırı aracı kullanılarak bulut depolama hesabına yüklenebilir.
  • Bulut depolamada saklanan veritabanına erişmek için bir VFS oluşturmak, konteyneri bağlamak, veritabanı handle'ını açmak ve SQL betiklerini çalıştırmak gerekir.
  • Sistem, yeni bulut depolama sistemlerini desteklemek ve sanal tabloları uygulamak için bir API sunar.
  • Bu makalede, bulut depolama sisteminde güvenli konteyner kullanımından bahsedilmektedir.
  • Konteynerler güvenli veya güvensiz şekilde bağlanabilir; güvenli bağlantıda veriler AES OFB şifrelemesiyle şifrelenir.
  • Yerel istemci, daemon sürecinden şifreleme anahtarını almak için geçerli bulut depolama kimlik bilgilerine ihtiyaç duyar.
  • Makalede, bulut depolama sistemleri için yerleşik "azure" ve "google" modüllerinden söz edilmektedir.
  • CBS API'si ve komut satırı aracı; modül belirtimi, kullanıcı adı ve kimlik doğrulama değeri gerektirir.
  • Makale, "azure" modülünün ayrıntılarını ve kimlik doğrulama için SAS token oluşturma yöntemini sunar.
  • CBS'yi Google Cloud Storage'a bağlamak için "google" modülü proje kimliği ve access token gerektirir.
  • Makalede, birden fazla istemciden eşzamanlı erişim ve değişiklikleri doğrulamak için konteynerin poll edilmesi gerekliliğinden bahsedilir.
  • Blockcachevfs, bcv_upload, bcv_poll ve bcv_client olmak üzere üç PRAGMA ifadesini destekler.
  • Sanal tablo arayüzü bcv_container ve bcv_database tablolarından oluşur.
  • bcv_container tablosu bağlı konteynerlere ilişkin bilgiler içerir; bcv_database tablosu ise her konteynerin veritabanı bilgilerini içerir.
  • Makalede, blockcachevfs veritabanındaki çeşitli tabloların yapısı ve işlevleri ele alınmaktadır.
  • bcv_database tablosu, veritabanındaki yerel değişikliklerle ilgili bilgiler içerir.
  • bcv_http_log tablosu, VFS veya bağlı daemon tarafından gerçekleştirilen HTTP isteklerini kaydeder.
  • bcv_kv tablosu, uygulamanın bulut depolama konteynerine veri yazmasına olanak tanır.
  • bcv_kv_meta tablosu, bulut depolama sunucusunun HTTP header'larına salt okunur erişim sağlar.
  • Makalede ayrıca, blockcachevfs veritabanında çeşitli işlemler için komut satırı referansı da sunulmaktadır.
  • Daemon komutu, blockcachevfsd sürecinin sunucu olarak çalışıp istemcilerden gelen bağlantıları kabul etmesini sağlar.
  • Daemon süreci, yapılandırma ve loglama için çeşitli seçenekleri destekler.

1 yorum

 
GN⁺ 2023-07-07
Hacker News görüşleri
  • Bir geliştirici, büyük SQLite veritabanlarını parçalara bölerek sunma ve HTTP aralık istekleriyle sorgulama deneyimini paylaşıyor
  • Bu sürece yardımcı olan sql.js-httpvfs adlı bir kütüphaneden bahsediliyor
  • Geliştirici, 350MB boyutundaki bir SQLite veritabanını küçük parçalara ayırıp GitHub'a yüklemiş
  • Projeyi incelemeniz ve konsol ile ağ sekmesinde test etmeniz öneriliyor
  • Başka bir yorumcu, uzak veri depoları kullanılırken önbellek tutarlılığı, eşzamanlılık, ağ kesintileri ve kimlik doğrulama sorunlarıyla ilgili endişelerini dile getiriyor
  • Belirli aralıklarla veritabanını tmpfs dosya sistemine kopyalayıp nesne depolamaya aktaran daha basit bir çözüm öneriliyor
  • Sorun giderme kolaylığı, ucuz ve hızlı dosya kopyalama, harici daemon gerekmemesi, basit genel kilitleme, iş parçacığı güvenliği, ağ kesintisi olmaması ve harici kimlik doğrulama gibi avantajlar vurgulanıyor
  • Başka bir yorumcu, PostgreSQL zaten aynı sorunu çözerken gömülü bir veritabanı olan SQLite'ın neden bulut hizmetine dağıtıldığını sorguluyor
  • Depolamayı buluta taşımanın gecikmeyi artıracağını ve sadeliği azaltacağını savunuyor
  • Başka bir yorumcu, SQLite için pg_dump ve mysqldump benzeri eşdeğer bir komut olup olmadığını soruyor
  • Sistemin şu anda Azure Blob Storage ve Google Cloud Storage'ı desteklediği, AWS'nin ise kapsam dışında kalabileceği belirtiliyor
  • Başka bir yorumcu, bunun resmî olarak desteklenen bir özellik mi yoksa yalnızca "teknik olarak mümkün" bir durum mu olduğundan emin değil
  • Harici bulut depolama üzerinde Datasette çalıştırmanın mümkün olup olmadığını merak ediyor
  • Başka bir yorumcu, veritabanına aynı anda yalnızca tek bir istemcinin yazabildiğinin nasıl garanti edileceğine dair endişe dile getiriyor
  • SQLite'ın VFS katmanının, bulut nesne depolamayı uygulamak için esnek ve kullanımı kolay olduğu belirtiliyor
  • Önbelleklemenin uygulamanın zorlayıcı yönlerinden biri olabileceği ifade ediliyor
  • Başka bir yorumcu, SQLite'ın aslında yerel kullanım için tasarlandığını belirterek, onu bulutta kullanmak yerine neden başka bir ilişkisel veritabanının tercih edilmediği konusunda kafa karışıklığı yaşıyor.