IndexedDB nedir?
IndexedDB, tarayıcıda önemli miktarda yapılandırılmış veri depolamak ve dizinler kullanarak bu verilerde yüksek performanslı aramalar yapmak için gelişen bir web standardıdır. Diğer bir deyişle, IndexedDB bir nesne deposudur. Koleksiyon satırları ve sütunları içeren tablolara sahip olan ilişkisel veritabanıyla aynı değildir. Bu, uygulamalarınızı tasarlama ve oluşturma şeklinizi etkileyen önemli ve temel bir farktır (temel kavramlar hakkında daha fazla bilgi edinin).
Peki yenilikler neler?
Değişiklikler arkadaşlar... Basit söz dizimi değişikliğiyle ele almadığımız bazı değişiklikler hatalara neden olacak.
17 sürümünden itibaren Chrome, bir IndexedDB işleminin kapsamı bir nesne deposu ile sınırlı değilse hata atacaktır. Tüm veri okuma ve yazma işlemleri işlemler içinde yapıldığından, bir veritabanında işlem oluşturmamız, kapsamı (ör. erişmek istediğiniz nesne depoları) belirtmemiz ve erişim türünü (salt okuma veya yazma) belirlememiz gerekir.
Kodda ne anlama geliyor? database.transaction işlevimize boş bir dizi göndermek yerine:
var transaction = db.transaction([], IDBTransaction.READ_ONLY);
Kapsamı belirli bir nesne deposuna veya nesne deposu listesine ayarlamanız gerekir:
// all stores (equivalent to what use to be marked as empty array. )
var transaction = db.transaction(db.objectStoreNames, IDBTransaction.READ_ONLY);
// multiple stores:
var transaction = db.transaction(['ObjectStoreName1', 'ObjectStoreName2'],
IDBTransaction.READ_ONLY);
// single store - these are equivalent
var transaction = db.transaction(['ObjectStoreName'], IDBTransaction.READ_ONLY);
var transaction = db.transaction('ObjectStoreName', IDBTransaction.READ_ONLY);
İşlemde doğru kapsamı ve modu kullanarak veri erişimini hızlandırabilirsiniz. Aşağıda birkaç ipucu verilmiştir:
Kapsamı tanımlarken yalnızca ihtiyacınız olan nesne depolarını belirtin. Bu sayede, örtüşmeyen kapsamlara sahip birden fazla işlemi eşzamanlı olarak çalıştırabilirsiniz.
READ_WRITE
işlem modunu yalnızca gerektiğinde belirtin. Çakışan kapsamlara sahip birden fazla READ_ONLY
işlemini eşzamanlı olarak çalıştırabilirsiniz ancak bir nesne deposu için yalnızca bir READ_WRITE
işleminiz olabilir.
Diğer kaynaklar:
- chromium.org adresindeki güncelleme
- MDN'deki IndexedDB hakkında daha fazla bilgi
- Basit bir yapılacaklar listesi web uygulamasında indexedDB'nin nasıl kullanılacağı ile ilgili tam örnek
Görüşmek üzere. Web'i yakın bölgelere yaymaya devam edin.