paint-brush
Firebase Bizi Oynattı!ile@sipping
1,133 okumalar
1,133 okumalar

Firebase Bizi Oynattı!

ile sipping5m2023/05/01
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Firebase, Google tarafından sağlanan harici bir veritabanı hizmetidir. Daha sonraki analiz, veri değişikliği, veri koruma, veri restorasyonu vb. için kullanıcı verilerini depolamak için kullanılır. Üç ana seçenek vardır: Merkezi veritabanları, Merkezi olmayan veritabanları ve Hizmet Olarak Veritabanı (DBaaS)
featured image - Firebase Bizi Oynattı!
sipping HackerNoon profile picture
0-item
1-item

Firebase nedir?

Çok basit bir şekilde ifade etmek gerekirse Firebase harici bir veritabanı hizmetidir. Kendilerini şöyle tanımlıyorlar:

"Google tarafından sağlanan bir dizi arka uç bulut bilişim hizmeti ve uygulama geliştirme platformu" Daha fazla bilgi için burayı kontrol edin: https://firebase.google.com/


Veritabanı hizmetlerinin yanı sıra çeşitli uygulamalar için kimlik doğrulama ve entegrasyon hizmetleri de sunuyorlar. Desteklenen uygulamalar ve programlama dilleri şunlardır: Flutter, Dart, C++, Android, IOS, JavaScript , Unity motorları ve Java.


Bütün bunlar neden önemli? Çünkü uygulamamızın geliştirilmesinde Firebase'i kullandık. Sadece bu da değil, aynı zamanda en popüler hizmetini de kullandık: veritabanı hizmeti.


Veritabanı tercihleri?

Firebase'i neden kullandığımızı sorabiliriz. Firebase kolaydır . Kullanıcı verilerini bazı formlarda kaydetmenizi gerektiren herhangi bir tür geliştirme projesi yaparken bir veritabanına ihtiyacınız olacaktır. Bu, kullanıcı verilerinin daha sonraki analizler, veri değişiklikleri, veri koruma, veri restorasyonu vb. için saklanması olabilir. Bu, şirketler, bireyler ve kuruluşlar ve hatta daha fazla grup için geçerlidir.


Artık veritabanlarını neden kullandığımızı bildiğimize göre bir sonraki soruyu sormalıyız. Hangi veritabanı türleri bizim için daha iyidir?


Üç ana seçenek vardır:


  1. Merkezi veritabanları
  2. Merkezi olmayan veritabanları
  3. Hizmet Olarak Veritabanı (DBaaS)


Bu farklılıkları keşfedelim. Biz bunu yaparken, Firebase'in hangi veritabanı tipine dahil olduğunu tahmin etmeye çalışın ;) .


Merkezi veritabanları : Uygulama için kullanılan veri tabanının, onu kullanan kişilerin doğrudan fiziksel erişiminin olduğu bir yerde saklanmasıdır. Ayrıca veritabanını diledikleri şekilde düzenleyebilir, geliştirebilir, güncelleyebilir ve yeniden yapılandırabilirler. Temel olarak, veritabanının tüm fiziksel, dahili ve dijital altyapı açısından tam sahipliğine ve düzenlenebilirliğine sahipsiniz.


Merkezi olmayan veritabanları : Merkezi veritabanlarının tam tersidir. Web3 tabanlı veritabanlarıdır. Depolama aygıtlarının farklı bilgi işlem aygıtlarına yayıldığı veritabanlarıdır. Yalnızca belirli kuruluşlar veritabanlarının dahili işlevselliğini özelleştirebilir ve geliştirebilir. Kullanım durumları sınırlıdır. Çoğunlukla web3 uygulamaları, belirteçler ve diğer web3 ürünlerini barındırmak için yapılırlar.


Web3 veritabanları hakkında daha fazla bilgi edinmek ve onları daha kapsamlı bir şekilde incelemek için burayı kontrol edin: https://www.makeuseof.com/what-is-web3-storage-how-does-it-work/


DBaaS : Bu veritabanı türüne genellikle “sunucusuz” denir. Çünkü merkezi veri tabanlarına benzeyen bu veri tabanı tipi ile yakınınızdaki veri tabanını lokal olarak tutmazsınız. Veritabanı 3. taraf bir şirket tarafından barındırılıyor ve veritabanınızın belirli dijital altyapısını özelleştirmenize izin veriyor, daha fazlasını değil. Bu veritabanının ana satış noktası maliyet etkinliğidir. Kendi merkezi veri tabanınızı oluşturmak için para harcamak yerine, çabaları dışarıdan almayı tercih edersiniz. Birisi kirli inşaat işini yapıyor ve veritabanı hizmetlerini kullanmak için onlardan kiralayabilirsiniz. Farklı ödeme kademesi seviyeleri için farklı işlevler elde edersiniz.


DBaaS kullanmayı tercih ettim. Firebase bir DBaaS'tır. Bu veritabanı modelinin uygun maliyetli yapısı nedeniyle bunu tercih ettim.


Firebase kullanıcılarımı reddediyor:



Bir uygulama yapıyorum. Uygulamanın sahip olduğu işlevlerden biri, kullanıcıları kaydetme, oturum açma ve çıkış yapma yeteneğidir. Yukarıdaki resimde gördüğünüz gibi kayıt olmak için bir test kullanıcı adı ve bir test şifresi oluşturdum. “Kayıt ol” butonuna bastığımda uygulama bilgileri ilgili veritabanıma gönderdi. Firebase'de barındırılan veritabanı. Kaydolmayı denedikten sonra aynı uygulama sayfasında kaldım ve hiçbir şey değişmedi. Firebase'imdeki kullanıcıları kontrol ettikten sonra o sırada hiçbir yeni kullanıcı kayıtlı değildi. Bu, kullanıcımın kayıtlı olmadığı anlamına gelir.


Yeni kullanıcıları tanımak için uygulamamıza ihtiyacımız var. Bu aşamada bir geliştirici koduna bakacak ve Firebase için Uygulama İşleme Arayüzüne (API) ve bunu kodlarında nasıl adlandırdığına bakabilir. Ayrıca, doğru tanımlandığından ve işlevselliğin iyi olduğundan emin olmak için kullanıcıları tanımlayan değişkenlere de bakacaklar. Ayrıca, kullanılan kitaplıklar veya Firebase API bağlantısının kendisi gibi veritabanı bağlantısını engelleyen veya onunla etkileşime giren herhangi bir şeyin güncellenmesi gerekip gerekmediğini de kontrol edebilirler. Çağrılarımızı görmezden gelerek veritabanına çözüm bulmak için tüm bu adımlar veya daha fazlası yapılabilir. Bir sorun var.


Bunların hiçbiri benim için geçerli değildi . Bu neden böyle?


Bu standart hata ayıklama uygulamalarından herhangi birini yapmak zorunda kalmamamın nedeni, bu yeni denemeden kısa bir süre önce veritabanına yeni kullanıcılar kaydedebilmemdi. Bir hafta içinde bu durum aniden durdu. Kodumdan herhangi birini değiştirmeden, daha önce çalışan süreç artık çalışmıyordu. Bu kafamı çok karıştırdı ve defalarca API çağrı bağlantımı değiştirip farklı alanlara koydum. Alıştığım kütüphanelerim ve farklı dosya aramalarım için referans aramalarımı düzenledim. Firebase'in veritabanı hizmetinin kapalı olup olmadığını öğrenmek için internete bile girdim. Durum böyle değildi. O zamanlar standart hata ayıklama uygulamalarına başlamak üzereydim….. Sonra sonunda çözümü buldum ! başından beri e-postalarımdaydı.


Çözüm Bulundu:

Evet, e-postamda bunca zamandır çözüm vardı! Bu sorunla ilgili günlerce süren durgunluğun ardından e-postamı kontrol ettiğimde Firebase'den bir bildirim e-postası buldum. Firebase bana veritabanı erişimimin kesildiğini bildirdi. Bunun nedeni, Firebase veritabanı kurulumu sırasında, güvenlik nedeniyle veritabanı erişimimin belirli bir tarihte kesilmesini ayarlamış olmamdı. Kendim için eklediğim bu kuralı unutmuştum. Belirttiğim tarihi unutmuştum. Sonuç olarak e-postamı kontrol edene kadar bağlantımın kesildiğini fark etmedim. Aşağıda veritabanını 12 Mart 2023 tarihinde bağlantımı kesecek şekilde ayarladığımı görüyoruz.


Bu sorunu düzeltmek için, "kesinti" tarihimin zaman çerçevesini uzatacak şekilde kuralları güncellemem gerekiyordu. Burada görüldüğü gibi:


Sorunu çözmek için bir sonraki son tarihi 29 Haziran olarak belirledim. Bu sayede o tarihe kadar bir daha kesinti yaşamayacağım.


Biri şu soruyu sorabilir: " Neden bunu birkaç yıl sonrasına ya da birkaç ay sonrasına ayarlamıyorsunuz ki bundan rahatsız olmuyorsunuz?" iyi soru. Bunu yapmayacağım çünkü yıl boyunca üç ayda bir bana bu bağımlılığı hatırlatmak için birkaç hatırlatma yapmak istiyorum. Uzun vadeli bir son tarih belirleyip sonra tekrar unutup bir yıl sonra aynı duruma düşmek istemiyorum. Beynimde sürekli olarak bilinçli olması, uygulama geliştirmeyi etkileyebilecek tüm faktörleri sürekli olarak düşündüğüm anlamına gelir ve bu, geliştirme sürecine devam ederken yardımcı olacaktır. Buna öğrenme tercihi diyebiliriz.


Aşağıda artık işleyen kayıt işlevimi görebiliyoruz:

Firebase Kimlik Doğrulama prosedürünün, kullanıcının özel tanımlayıcısı olarak bir kullanıcı kimliği jetonunu bile döndürdüğünü görebiliriz, bu şekilde onun kayıtlı olduğunu kesinlikle biliyoruz.


Gelişme eğlencelidir ama her zaman küçük şeylerin bilincinde olmalıyız. Uygulamada sorun yaşandığında çoğu zaman bunun nedeni büyük olasılıkla kendi kod hatamızdır. Ancak bazen sorunlar kodlarımızdan bile kaynaklanmayabilir. Bu gerçekten gerekli bir güncelleme kadar basit bir şey olabilir veya bu durumda basit veritabanı kurallarının gözden geçirilmesi gibi bir şey olabilir.