Film Sorgulama Uygulaması

Herkese merhaba. Burada, bir MongoDB veritabanı üzerinde arama yapıp, aradığımız filmin özelliklerini bize gösteren bir uygulamadan bahsedeceğim. Extra olarak, RedisCache kullanımı ve sorgulama işlemlerinin hızlandırılmasını göreceğiz. Kaynak kodlar için Github hesabımı takip edebilirsiniz:

Fork me

Kullanılan Teknolojiler
MongoDB

Uygulamanın detaylarına geçmeden önce kısaca MongoDB'den bahselim. MongoDB, basit anlatımı ile açık kaynak kodlu bir NoSQL veritabanı uygulamasıdır. Esnek ve kullanımı kolay olması nedeniyle kısa zamanda popüler olmuş olup, yaygın bir kitle tarafından kullanılmaktadır. Özelliklerini şu şekilde sıralayabiliriz:

Windows için MongoDB Kurulumu
Redis Cache

Redis; no-sql veritabanı olarak, önbellekleme için ve mesaj sunucusu amacıyla kullanılan, in-memory bir veri-yapıları deposudur. Redis’in kendisini veri-yapıları deposu olarak adlandırmasındaki sebep diğer alternatiflerine göre daha fazla veri türünü desteklemesidir. Avantajlarını şu şekilde sıralayabiliriz:

Projenin Çalıştırılması

Bu proje github sayfasında yer alan Movies.csv dosyasını kullanan bir web uygulamasıdır ve Node.js/Express/MongoDB/RedisCache ile yazılmış olup, lokal bilgisayarımızda çalıştırabilmekteyiz. Öncelikli olarak Movies.csv dosyasını bilgisayarınızdaki MongoDB veri tabanına import etmemiz gerekmektedir.

mongoimport --db dataBaseAdi --collection collectionAdi --type csv --headerline --file csvDosyaAdi.csv

Kök dizinine yapılan get request’ler kullanıcının veri girişi yapabileceği bir text kutusu ve sorgula butonu içeren bir html sayfasını response olarak geri döndürüyor. Kullanıcının bu text kutucuğunun içerisine yazdığı bir film adını sorgula butonunu tıklayarak web sunucusuna ilettiği bir post request sonrasında ilgili filmin tüm özellikleri bir tablo içerisinde response olarak geriye döndürülüyor. Post request ile sunucuya ulaşan film adı önce ön bellekte aranıyor ve bulunursa hemen geriye gönderiliyor. Ön bellekte rastlanamayan film bilgisi veri tabanında aranıyor ve bulunursa hem ön belleğe getiriliyor, hem de yine tablo formatında kullanıcıya response olarak iletiliyor. Ön bellekte saklanan veriler için Hash veri yapısından faydalanılıldı.

Projeyi çalıştırırken, projenin bulunduğu kök dizininde komut ekranı açılmalı ve ortamı oluşturmak için ilk önce initialize işlemini yapmamız gerekli. Bu işlemin ardından bize çeşitli sorular gelecektir. İstersek bunları cevaplayabiliriz, istersek de enter diyerek atlayabiliriz.

npm init

Daha sonra projeyi yazarken kullandığımız modüller sırayla install edilmeli.

npm install express
npm install redis
npm install body-parser
npm install mongoose

Modülleri indirdikten sonra projemizi çalıştırabiliriz.

node moviesIndexDemo.js

Komut ekranında gösterilen port adresini web tarayıcımıza yazdıktan sonra karşımıza uygulamamız gelecek.


Ana sayfamızda bulunan arama ekranına veritabanımızda bulunan bir film adı yazıp Ara butonuna basmamız gerekiyor. İşlemin ardından bize aradığımız film ile ilgili veritabanındaki tüm bilgiler yansıtılıyor.


Aradığımız film Redis Cache'de bulunmuyorsa, film Redis Cache'e ekleniyor. Diğer aramalarda Redis Cache'den kullanılıyor.


Eğer kutucuğu boş bırakırsak bize bir uyarı kutucuğu gösteriliyor.


Kutucuğa veritabanında bulunmayan bir film adı girdiğimizde ise karşımıza filmin bulunamadığına dair bir yazı çıkıyor.



Uygulamanın arayüzleri ve işleyişi bu şekildedir.