Flutter'da Hive Kullanımı


Görsel Referansı


Herkese merhaba. Bu yazımızda Flutter'da veritabanı işlemleri için kullanımı hızlı ve sade olan Hive paketinden bahsedeceğiz.


Hive, bir NoSQL veritabanıdır. Verileri local olarak depolamak ve işlemek için Flutter uygulamalarında kullanılan bir dart paketidir. Verileri key-value değerleri ile kayıt etmemize, verilerimiz üzerinde işlem yapmamıza imkan sağlar.


Mevcut birkaç paket arasında (örneğin; Floor, Moor, sqflite) Hive, CRUD işlemlerinde çok hızlı olmasıyla öne çıkıyor. Aynı zamanda AES-256 (sağlam bir şifreleme standardı) şifrelemesi kullanarak verileri güvenli bir şekilde depolamamızı sağlıyor.


İlişkisel veritabanlarında verilerimizi tablolar altında, gerekiyorsa, başka tablolar ile ilişki kurarak yönetiriz. Tabii burada önemli olan uygulamamız için hangi veritabanı çeşidinin daha uygun olduğunu belirleyip, ilişkisel veya NoSQL veritabanı kullanmayı tercih edebiliriz.


Hive Kullanma Nedenleri


Projenizde Hive'ı kullanmak isteyebileceğimiz birkaç neden var:

  • Hızlı.

  • Kullanımı oldukça kolay, herhangi bir SQL ifadesi düşünmemiz veya yazmamız gerekmiyor.

  • Saf darttır, bu nedenle Flutter Web/Masaüstü'nde de sorunsuz çalışır.


Hive'dan Kaçınmak İçin Nedenler


Hive yerine farklı bir çözüm seçmek isteyebileceğimiz bazı nedenler şunlardır:

  • Henüz sorgu desteği yok.

  • Çok büyük veriler için uygun değil.

  • Şifrelenmiş verileri başka bir yere taşımak istediğimizde zorluk çıkartır.


TypeAdapters


Hive, çoğu standart türü (String, int, Map, List, DateTime) saklamamıza izin verir, ancak çoğu zaman verilerimiz için bir model sınıf oluşturmak isteriz. Çünkü bu, geliştirmeyi çok daha kolay ve hızlı hale getirir. Bu model türlerini kullanmak için, nesnemizi diskte binary biçimde encode/decode çözmemize yardımcı olan TypeAdapters'ı kaydetmemiz gerekir. Tip adaptörleri manuel olarak yazabiliriz. Ancak dev_dependencies'e ekleyeceğimiz hive_generator ve build_runner paketleriyle oluşturuyor olacağız.


Box


Hive'da depolanan tüm veriler kutularda (box) düzenlenir. Box, SQL'de tabloya benzetilebilir, ancak bir yapısı yoktur ve herhangi bir şey içerebilir. Küçük bir uygulama için tek bir box yeterli olabilir. Daha ileri düzey sorunlar için box'lar gerekir. Ama korkmayın, verileri düzenlemek oldukça kolaydır. Box'lar ayrıca hassas verileri depolamak için şifrelenebilir.


Lazy Box