IndexedDB işlemlerinde kapsamı tanımlama

IndexedDB nedir?

IndexedDB, tarayıcıda önemli miktarda yapılandırılmış verinin depolanması ve dizinleri kullanarak bu veriler üzerinde yapılan yüksek performanslı aramalar için sürekli gelişen bir web standardıdır. Başka bir deyişle, IndexedDB bir nesne deposudur. Koleksiyon satırları ve sütunları içeren tablolara sahip ilişkisel veritabanından farklıdır. Bu, uygulamalarınızı tasarlama ve oluşturma şeklinizi etkileyen önemli ve temel bir farktır (daha fazla bilgiyi temel kavramlar bölümünde bulabilirsiniz.)

Peki, sunulan yenilikler neler?

Arkadaşlarımı değiştirir... Bazı değişikliklerimiz basit söz dizimi değişikliğiyle işlenmezse hatalara neden olur.

Sürüm 17'den itibaren, bir IndexedDB işlemi nesne deposunun kapsamında değilse Chrome artık bir hata bildirecektir. Verilerin okunması ve yazılmasının tamamı işlemler içinde gerçekleştirildiğinden, bir veritabanı üzerinde işlem oluşturmamız, kapsamı (ör. erişmek istediğiniz nesne depoları) ve erişim türünü (salt okuma veya yazma) belirlememiz gerekir.

Bu ne anlama geliyor? Bunun yerine, database.transaction'e boş bir dizi iletmek yerine:

var transaction = db.transaction([], IDBTransaction.READ_ONLY);

Kapsamı belirli bir nesne deposuna veya nesne mağazaları 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. İşte size birkaç ipucu: Kapsamı tanımlarken, yalnızca ihtiyacınız olan nesne depolarını belirtin. Bu şekilde, çakışmayan kapsamlara sahip birden fazla işlemi aynı anda çalıştırabilirsiniz. Yalnızca gerektiğinde bir READ_WRITE işlem modu belirtin. Aynı anda çakışan kapsamlara sahip birden fazla READ_ONLY işlemi çalıştırabilirsiniz, ancak bir nesne deposu için yalnızca bir READ_WRITE işleminiz olabilir.

Diğer kaynaklar:

O zaman bir dahaki sefere... Web'i yakın bölgelere yönlendirmeye devam edin.