Rust ile MariaDB / Mysql Veritabanı İşlemleri

0 1.027

Bildiğiniz üzere Rust ile geliştirmelerimizi Linux üzerinde yapıyoruz. Tabii ki Pardus kullanıyoruz. Mysql kurulumunu daha önceki .net core makalemde anlatmıştım. Buradan o makaleye erişip mysql kurulum adımlarını tamamlayabilirsiniz. Başlangıçta makaleleri daha basit tutacağım. Günün sonunda Rust ile web servis katmanı ile güzel bir mini uygulama yazacağız.

MySql daha doğrusu MariaDB üzerinde Demo veritabanını oluşturarak işe başlayabiliriz. Daha sonra aşağıdaki tabloyu oluşturup veri ekleme scriptlerini çalıştırabilirsiniz. Ben CALISAN adında bir tablo ekledim. o tablo üzerinden basit sorgular oluşturacağız.

Projeyi oluşturma

Visual Studio Code açtıktan sonra terminal kısmına gelelim. Buradan yeni Rust projemizi cargo komutları ile oluşturabiliriz.

Daha sonra VS.Code üzerinden ilgili klasörü açabiliriz. Cargo.toml dosyasını aşağıdaki gibi düzenleyelim. Aşağıdaki kısımda karşımıza edition denilen yeni bir alan geliyor. Rust 2015 ve 2018 olmak üzere iki ana versiyondan oluşmaktadır. Paketler cargo ile yüklenirken biz en son versiyonu olan 2018 sürümü ve paket mantığıyla ilerliyor olacağız.

Artık projemizi oluşturduk. Kod yazmaya başlayabiliriz.

Hadi Kodlayalım

Src altındaki main.rs dosyasını açalım ve ilk olarak aşağıdaki satırları ekleyelim. Böylece gerekli olan namespaceleri eklemiş olacağız.

 

Uygulamada önce mariadb için bağlantı kısımlarını birlikte girelim. ilk olarak yapacağımız bağlantıyı deneme olacaktır. main fonksiyonu içine aşağıdaki satırları yazalım .

Komutu çalıştıralım. Paketlerin indiğini ve uygulamanın çalıştığını görelim.

 

Sorgular

Rust tarafında çeşitli sorgulama teknikleri bulunuyor. Bunları birlikte kullanacağız. Ben zaman ölçümlerini de ekleyerek bunların performans farklarınıda görmenizi istedim. Hadi o zaman kaldığımız yerden devam edelim. Main fonksiyonunda kaldığımız yerden bir enter yapıp aşağıdaki kodları eklemeye devam edelim.

 

query_iter ile sonuç verileri satır satır okunur. Tüm veriler asla hafızada saklanmaz. Dışa veri aktarmak istiyorsanız veya büyük veri ile çalışacaksanız bu tekniği kullanabilirsiniz. Fakat zaman sürelerine baktığınızda yavaş olduğunu göreceksiniz.

 

Gerçek hayatta uygulamalarında çalışırken ise hem hızı hem de kullanışlığı yönünden query_map yapısını kullanmak daha iyi görünüyor. Ama unutmayın kullanılan teknikler işe özel olabilir.Verilerimizi struct bir yapıya atarak daha kullanışlı hale getirebiliriz.

 

Uygulamamızı çalıştırdığımızda ise aşağıdaki sonuçları alacağız. Gördüğünüz üzere map yapısı çok daha hızlı çalışmaktadır.

 

Veri Ekleme

Listeleme işlemlerine baktıktan sonra ekleme işlemlerinede bakabiliriz.Öncelikle hem bir fonksiyon tanımının nasıl yapıldığını anlamak hemde insert işlemindeki tarih bilgisini daha düzgün oluşturmak için main fonksiyonu dışına aşağıdaki today fonksiyonunu ekleyelim.

Fonksiyonumuzu oluşturduktan sonra insert işlemimize dönebiliriz.Insert işlemini daha hızlı çalışabilmesi için veritabanında önceden compile edilmiş bir sorgu mantığını kullanmak daha iyi oluyor.

İşlem bilgisini veritabanına yolladıktan sonra parametrik insert işlemimiz aşağıdadır. Delete ve update işlemleride buna benzer olarak yapılmaktadır.

Veri tabanı tarafında tablomuzun oluşma şeklini hatırlarsanız sicil kolonunu otomatik artan bir sayı olarak yapmıştık. Aşağıda insert işlemi sonrasında bize dönen bu otomatik artan id bilgisini nasıl alacağımızı görebilirsiniz.

Bu kısım aslında bir tekrar kod olarak yazdım. insert ettiğimiz veriyi yeniden geri listeliyoruz. Burada bu kodu tekrarlı olarak yazmamın sebebi Rust ile ilgilenen arkadaşların yukarıda örnek olarak verdiğim today() fonksiyonu gibi bu kod parçacığını da ona çevirmeleri içindir. Kod hakimiyeti ve el yatkınlığınız için bunu bu şekilde yapabilirsiniz.

Bir sonraki makalede görüşmek üzere

Email adresiniz yayınlanmayacaktır.