HTML5 IndexedDB ile Veritabanı İşlemleri

HTML5 IndexedDB ile Veritabanı İşlemleri

IndexedDB, web uygulamalarındaki veritabanı işlemlerinin güvenli ve kolay bir şekilde yapılmasını sağlayan bir JavaScript API'dir Verileri depolayabilir, sorgulayabilir ve güncelleyebilirsiniz IndexedDB, tarayıcı tarafından verilen bir veritabanında verileri anahtar-değer çiftleri şeklinde saklar Verilerin filtrelenmesi, sıralanması ve aralık sorguları oluşturulması mümkündür Asenkron veri erişimi sayesinde, verilerin hızlı bir şekilde yüklenmesi ve işlemlerin gerçekleştirilmesi sağlanır Cursor nesnesi sayesinde veriler daha rahat bir şekilde filtrelenerek erişilebilir Store nesnesi, verilerin daha güvenli bir şekilde saklanmasını sağlar IndexedDB, modern web uygulamalarının olmazsa olmazlarından biridir Dudak uçuklatan performans artışları ile, web uygulamaları daha hızlı çalışır

HTML5 IndexedDB ile Veritabanı İşlemleri

HTML5'in bir özelliği olan IndexedDB, web uygulamalarında veritabanı işlemlerinin güvenli ve kolay bir şekilde yapılmasını sağlar. Bu özellik sayesinde JavaScript kullanarak verileri depolayabilir, sorgulayabilir ve güncelleyebilirsiniz.

IndexedDB, web tarayıcısında bulunan veritabanlarına web uygulamalarından erişmek için kullanılan bir JavaScript API'sidir. Bu API, asenkron veri erişimine ve büyük miktarlardaki verilerin depolanmasına olanak tanır.

IndexedDB'nin en büyük avantajlarından biri, localStorage'dan daha gelişmiş özelliklere sahip olmasıdır. Verilerin depolanması işleminde kullanılan store nesnesi, verilerin daha güvenli bir şekilde saklanmasını sağlar. Cursor nesnesi sayesinde veriler daha rahat bir şekilde filtrelenerek erişilebilir.

Performans artırıcı özelliklere sahip olan IndexedDB, web uygulamalarında veritabanı işlemlerinin daha hızlı bir şekilde gerçekleştirilmesini sağlar. Bu sayede web uygulamaları daha hızlı çalışır. IndexedDB kullanarak veri ekleme, silme, güncelleme ve sorgulama işlemlerini yapabilirsiniz. Veritabanı oluşturma işleminden sonra, transaction nesneleri yoluyla işlem yapabilirsiniz.

IndexedDB, modern web uygulamalarının olmazsa olmazlarından biridir. Web uygulamalarındaki veritabanı işlemlerinin güvenli bir şekilde yapılabilmesi için IndexedDB kullanımı önerilir.


IndexedDB Nedir?

IndexedDB, web tarayıcılarındaki veritabanlarına JavaScript kullanarak erişmek ve veritabanı işlemlerini gerçekleştirmek için kullanılan bir API'dir. Bu sayede web uygulamaları, daha önce belirli bir sunucuya veya veritabanına bağımlı olmadan işlemlerini gerçekleştirebilirler.

IndexedDB, web uygulamaları tarafından yerel olarak depolama için kullanılan bir tür NoSQL veritabanıdır. Veriler, anahtar-değer çiftleri şeklinde saklanır ve tarayıcı tarafından verilen bir veritabanında depolanır. IndexedDB, depolanacak verinin türüne bakılmaksızın, JavaScript nesneleri olarak saklanabilmesine olanak tanır.


IndexedDB Kullanmanın Avantajları

IndexedDB, web tarayıcılarındaki veritabanlarına web uygulamalarından erişmek için kullanılan bir JavaScript API'sidir. IndexedDB kullanmanın avantajları ise oldukça fazladır. Öncelikle, IndexedDB kullanarak, veri depolama işlemlerinde daha gelişmiş özelliklere sahip olabilirsiniz. Örneğin, verilerinizi filtreleyebilir, sıralayabilir ve aralık sorguları oluşturabilirsiniz. Bunun yanı sıra, IndexedDB daha büyük miktarlardaki verileri depolama kapasitesine sahiptir.

IndexedDB'nin diğer bir avantajı ise veri erişiminde asenkronizm sağlamasıdır. Veritabanı işlemleri asenkron olarak gerçekleştirilir ve bu da web uygulamanızın performansını artırır. Ayrıca, IndexedDB'nin kullanımı oldukça kolaydır. Veri depolama işlemlerinde kullanacağınız ana öğe olan store yöntemi ve veri döngüsünde kullanacağınız cursor yöntemi gibi birçok yöntem IndexedDB'nin bir parçasıdır.


Asenkron Veri Erişimi

IndexedDB kullanarak veritabanı işlemleri yaparken, asenkron veri erişimi sağlanır. Bu sayede, veritabanındaki verilerin uzun süreli işlemleri sırasında web uygulaması donmaz veya kilitlenmez. Asenkron veri erişimi, tarayıcının daha hızlı ve etkili çalışmasını sağlar. Ayrıca, bu özellik sayesinde, web uygulamaları daha gelişmiş özelliklere sahip olabilir ve daha büyük miktarlardaki verileri depolayabilir.

IndexedDB ile asenkron veri erişimi, tarayıcıda birden fazla işlemin aynı anda gerçekleştirilebilmesine izin verir. Verilerin daha hızlı yüklenmesini sağlar ve uygulamanın performansını artırır. Asenkron veri erişimi sağlayan diğer bir özellik ise, veritabanındaki verilerin güncellenmesi ve silinmesi gibi işlemlerin hızla gerçekleştirilmesidir. Böylece, kullanıcılara daha iyi bir kullanıcı deneyimi sunulur.

IndexedDB'deki asenkron veri erişimi yöntemi ile verileri döngü yoluyla erişebiliriz. Bu işlem, Cursor ile gerçekleştirilir. Cursor, toplu veri işleme yapabilme özelliğine sahiptir ve filtreleme işlemlerinde de kullanılabilir. Cursor ile verilerin parçalarını alarak, daha hızlı ve etkili bir şekilde veri işleme işlemi gerçekleştirilebilir.


Cursor Kullanımı

IndexedDB'deki verilerin döngü yoluyla erişilmesi ve filtrelenmesi Cursor kullanılarak gerçekleştirilir. Cursor, bir işlem yapma olanağı ve verilerde döngü yapma imkanı sağlar. Bu sayede, veritabanındaki verileri daha esnek bir şekilde erişebilirsiniz.

Cursor kullanarak, verileri sıralama, filtreleme ve arama işlemleri gerçekleştirebilirsiniz. Cursor aynı zamanda, veri tabanı üzerinde bir gezinti yapmanızı sağlar ve ileri geri hareket ederek veri almanıza yardımcı olur. Cursor ile birlikte kullanılan diğer yararlı özellikler arasında yön belirleme ve limit belirleme bulunur.

Cursor kullanarak veritabanındaki verileri dilediğiniz gibi filtreleyerek erişim sağlayabilirsiniz. Bu sayede, performansı artırmak ve daha etkili bir şekilde veri yönetimi yapmak mümkün hale gelir. Cursor kullanımı sayesinde veri yönetimi işlemleri daha kolay hale gelir ve her türlü veri yönetim işlemlerini daha hızlı bir şekilde gerçekleştirme imkanı sağlar.


Store Kullanımı

IndexedDB'de veriler, store (depot) olarak adlandırılan nesnelerde depolanır. Store, verileri depolamanın yanı sıra, depolanan her veri için bir anahtar değeri (key) oluşturur. Bu anahtar değeri, verinin sorgulanması ve işlem yapılması için kullanılabilir.

IndexedDB'de birden fazla store oluşturmak mümkündür ve her store, birbiriyle ilişkilendirilmiş verileri tutar. Store oluşturulurken belirtilen anahtar değeri, store'a ait verilerin işlem yapılmasını sağlar. İşlem yapılacak verinin hangi store'a ait olduğu belirtilerek işlem yapılabilir.

Store Kullanımı Örneği
  • Veritabanı oluşturulur.
  • Store'lar oluşturulur.
  • Her store'a ait veriler belirlenir ve store'a eklenebilir.
  • Veri ekleme, silme, güncelleme ve sorgulama işlemleri yapılabilir.

Store kullanımı, IndexedDB'nin en temel özelliklerinden biridir ve verilerin yönetimi için oldukça önemlidir. Farklı store'lar oluşturarak verileri daha düzenli bir şekilde depolayabilir ve yönetebilirsiniz. Ayrıca, store'lar sayesinde verilerin daha hızlı işlenmesi mümkün olur ve veritabanı performansı artar.


LocalStorage'dan Farkı

IndexedDB ve localStorage, web uygulamaları için veri depolama yöntemleri olarak kullanılır. Ancak IndexedDB, daha gelişmiş özellikler sunar ve daha büyük miktarlardaki verileri depolama kapasitesine sahiptir. LocalStorage'da depolanan veri, tarayıcının belleğinde tutulurken, IndexedDB'de veri veritabanı olarak depolanır ve büyük miktardaki verileri daha rahat bir şekilde işleyebilirsiniz.

IndexedDB ayrıca, işlemleri asenkron olarak gerçekleştirir, bu da performansı artırır. Başka bir farkı ise, localStorage sadece ilk bakışta basit bir anahtar-değer çifti depolama mekanizmasına sahipken, IndexedDB daha gelişmiş bir depolama yöntemidir ve objeleri depolayabilirsiniz.

IndexedDB, tarayıcının desteklediği tüm veri türlerinin yanı sıra, ortak veri türlerini de destekler. Böylece, kullanıcıların verilerini depolaması ve kendi kullanıcısı tarafından yönetilmesi daha kolay ve güvenlidir. Bu nedenle, web uygulamalarında verileri güvenli bir şekilde depolamak istiyorsanız, IndexedDB'yi tercih edebilirsiniz.


IndexedDB Kullanarak Veritabanı İşlemleri Yapmak

IndexedDB kullanarak veritabanı işlemleri yapmak oldukça kolaydır. Ancak, öncesinde bir veritabanı oluşturmanız gerekir. Veritabanı oluşturmak için createObjectStore() metodunu kullanabilirsiniz.

Örneğin, "myDatabase" adında bir veritabanı oluşturmak için aşağıdaki kodu kullanabilirsiniz:

let db;const request = indexedDB.open('myDatabase', 1);

request.onsuccess = function(event) { db = event.target.result;};

request.onerror = function(event) { console.log("Veritabanı açılamadı:", event.target.errorCode);};

request.onupgradeneeded = function(event) { const db = event.target.result; const objectStore = db.createObjectStore("musteriler", { keyPath: "id" }); objectStore.createIndex("ad", "ad", { unique: false }); objectStore.createIndex("soyad", "soyad", { unique: false });};

Yukarıdaki kod, "myDatabase" adında bir veritabanı oluşturur ve bir "musteriler" tablosu ekler. "id" alanı bu tablonun anahtarıdır.

Veritabanı oluşturulduktan sonra, işlem yapmak için transaction nesneleri kullanabilirsiniz. Örneğin, "musteriler" tablosuna veri eklemek için aşağıdaki kodu kullanabilirsiniz:

const musteri = { id: 1, ad: "Ahmet", soyad: "Yılmaz" };

const transaction = db.transaction(["musteriler"], "readwrite");

transaction.oncomplete = function(event) { console.log("İşlem tamamlandı.");};

transaction.onerror = function(event) { console.log("İşlem hatası:", event.target.errorCode);};

const objectStore = transaction.objectStore("musteriler");const request = objectStore.add(musteri);

request.onsuccess = function(event) { console.log("Veri eklendi.");};

request.onerror = function(event) { console.log("Veri eklenemedi:", event.target.errorCode);};

Yukarıdaki kod "musteriler" tablosuna yeni bir müşteri ekler. Bu işlem, read-write transaction kullanılarak gerçekleştirilir.

Benzer şekilde, veri silmek için delete() metodu kullanılırken, veri güncellemek için önce delete() metodu ile veri silinir ve daha sonra put() metodu ile güncellenmiş veri eklenir.

Veri sorgulama işlemi ise, get() ve openCursor() metotları kullanılarak gerçekleştirilir. Bu metotlar sayesinde filtreleme yapabilir ve arama işlemleri gerçekleştirebilirsiniz.


Veri Ekleme

Veri ekleme işlemi, IndexedDB kullanılarak gerçekleştirilebilir. Bu işlem için öncelikle bir transaction nesnesi oluşturmanız gerekir. Transaction nesnesi, IndexedDB'ye yapılacak ekleme işlemini içerir.

Ekleme işlemi için kullanılan metot, put() metotudur. Bu metot, belirtilen anahtar değeri ve veri değeri ile birlikte veriyi depolama işlemi yapar.

Örneğin, bir kitap listesi veritabanına yeni bir kitap ekleme işlemini aşağıdaki gibi yapabilirsiniz:

Anahtar Değeri Kitap Adı Yazar Adı
1 İnce Memed Yaşar Kemal
2 Son Ada Turgut Özakman

Kitap listesine yeni bir kitap eklemek için put() metodu kullanılır:

var transaction = db.transaction(["kitapListesi"], "readwrite");var store = transaction.objectStore("kitapListesi");var yeniKitap = {  anahtar: 3,  kitapAdi: "Tutunamayanlar",  yazarAdi: "Oğuz Atay"};var request = store.put(yeniKitap);request.onsuccess = function(event) {  console.log("Yeni kitap başarıyla eklendi.");};

Bu kodda, oluşturulan transaction nesnesi ve store nesnesi kullanılarak yeni bir kitap eklendi. put() metodu, yeni bir kitap nesnesi oluşturulması ve bu nesnenin store nesnesinde depolanması işlemini gerçekleştirir. İşlem başarılıysa, console.log() komutu ile bir bildirim verilir.


Veri Silme

IndexedDB ile veritabanı işlemleri, veri depolama ve yönetimi açısından oldukça önemlidir. Veri silme işlemi, IndexedDB içindeki veritabanından belirli bir veri veya tüm verilerin silinmesi şeklinde gerçekleştirilebilir. Bu işlem için kullanılan metot ise delete() metotudur.

Bu metot, veritabanı içindeki belirli bir kaydı silmek için kullanılır. Veri silme işlemi gerçekleştirilirken, önce silinmek istenen verinin kimliği belirlenir ve bu kimlik ile veri silinir. Böylece veritabanında veri düzeni devam eder, ancak istenmeyen veya gereksiz olan veriler silinmiş olur.

Ayrıca, silme işlemi, birden fazla veri kaydının silinmesi için de kullanılabilir. Bu durumda, kullanıcı silinmesi gereken verilerin kimliğini veya kriterlerini belirler ve delete() metodu ile bu veriler silinir.

Veri silme işlemi, IndexedDB kullanımı sırasında oldukça önemlidir. Kullanmadığınız veya gereksiz olan verileri silerek veritabanınızın boyutunu minimize edebilir ve performansı artırabilirsiniz. Böylece daha hızlı ve verimli bir uygulama geliştirebilirsiniz.


Veri Güncelleme

IndexedDB kullanarak veri güncelleme işlemi, öncelikle verinin silinmesi ile başlar. Bunu yapmak için delete() metodu kullanılır. Daha sonra güncellenmiş veri put() metodu ile eklenir.

Örneğin, bir müşteri veritabanımız olduğunu varsayalım ve müşterinin telefon numarası değişmiş olsun. Bu durumda, müşteri verisini silmek ve güncellenmiş veriyi eklemek için şu adımlar uygulanabilir:

Adım Kodu
1
var transaction = db.transaction(["customers"], "readwrite");var objectStore = transaction.objectStore("customers");var request = objectStore.delete(1);
2
request.onsuccess = function(event) {  var transaction = db.transaction(["customers"], "readwrite");  var objectStore = transaction.objectStore("customers");  var customer = {    id: 1,    name: "John Doe",    phone: "555-555-1212"  };  var request = objectStore.add(customer);}; 

Yukarıdaki kodda, öncelikle "customers" adlı objectStore'a erişim sağlanır ve 1 numaralı müşteri verisi delete() metodu ile silinir. Silme işlemi başarılı olduğunda, güncellenmiş veri add() metodu ile eklenebilir.

IndexedDB kullanarak veri güncelleme işlemleri, veri depolama işlemlerinin önemli bir parçasıdır. Bu sayede web uygulamalarında verilerin dinamik olarak yönetilebilmesine olanak tanınır.


Veri Sorgulama

IndexedDB kullanarak veritabanında saklanan verilere erişmek için get() ve openCursor() metotları kullanılır.

  • get(): Belirtilen anahtar değere sahip veriyi döndürür.
  • openCursor(): Verileri döngü yoluyla erişmek için kullanılır. Ayrıca veriler filtrelenerek de erişilebilir.

Örneğin, aşağıdaki kodda "customers" adlı obje deposundaki tüm veriler ekrana yazdırılır:

var request = indexedDB.open("myDatabase", 1);request.onsuccess = function(event) {  var db = event.target.result;  var transaction = db.transaction(["customers"]);  var objectStore = transaction.objectStore("customers");  var request = objectStore.openCursor();  request.onsuccess = function(event) {    var cursor = event.target.result;    if (cursor) {      console.log(cursor.value);      cursor.continue();    }  };};

Bu kodda, "customers" adlı obje deposundaki tüm verileri döngü yoluyla erişmek için openCursor() metodu kullanılmıştır. Yine bu metot ile belirli bir kriter kullanılarak veri filtreleme de yapılabilir.