Ի՞նչ է IndexedDB-ը և ինչպես է աշխատում
IndexedDB-ը բրաուզերում տվյալների պահպանման և մանիպուլյացիայի առաջադեմ մեթոդ է, որը թույլ է տալիս պահել մեծ քանակությամբ տվյալներ՝ օբյեկտների տեսքով, որոնք կառավարվում են տվյալների ինդեքսներով։ Ի տարբերություն LocalStorage-ի կամ SessionStorage-ի՝ IndexedDB-ն աջակցում է ավելի խրթին որոնումների, տվյալների կառուցվածքի և մեծածավալ տվյալների պահպանման։
IndexedDB-ը հատկապես օգտակար է այնպիսի դեպքերում, երբ մենք պետք է աշխատենք մեծ տվյալների կամ բարդ օբյեկտների հետ, որոնք չեն տեղավորվում սովորական պահման մեթոդների մեջ։
Ինչպես աշխատում է IndexedDB-ն
IndexedDB-ը աշխատում է այն սկզբունքով, որ մենք կարող ենք ստեղծել բազա (database), ապա տվյալներ ավելացնել, վերցնել կամ ջնջել այդ բազայից՝ օգտագործելով ինդեքսներ, որոնք հեշտացնում են տվյալների որոնումները։ Այն թույլ է տալիս աշխատել մեծ թվով օբյեկտների հետ՝ ապահովելով արագ հարցումներ և փոխազդեցություններ:
// IndexedDB-ն բացելու համար
const request = indexedDB.open('myDatabase', 1);
request.onsuccess = function(event) {
const db = event.target.result;
// Տվյալներ ավելացնելու համար
const transaction = db.transaction('store', 'readwrite');
const store = transaction.objectStore('store');
store.add({ id: 1, name: 'John' });
transaction.oncomplete = function() {
console.log('Տվյալները հաջողությամբ ավելացվեցին');
};
};
// Տվյալների որոնման համար
const request = indexedDB.open('myDatabase', 1);
request.onsuccess = function(event) {
const db = event.target.result;
const transaction = db.transaction('store', 'readonly');
const store = transaction.objectStore('store');
const getRequest = store.get(1);
getRequest.onsuccess = function(event) {
console.log(getRequest.result);
};
};
IndexedDB-ն օգտագործում է տվյալների պահման բազաներ (databases), պահոցներ (stores), և տրանսակցիաներ (transactions)։ Օրինակ՝ կարող ենք ստեղծել մեկ կամ ավելի պահոցներ տվյալների կազմակերպման համար։
IndexedDB-ի առավելություններ և թերություններ
Առավելությունները:
- IndexedDB-ը թույլ է տալիս պահպանել մեծ քանակությամբ տվյալներ՝ առանց պահպանման չափի սահմանափակման։
- Տվյալները կարող են ունենալ ինդեքսներ, ինչը արագացնում է որոնումները՝ մեծ տվյալների պարագայում։
- Ավելի բարդ տվյալների կառուցվածքներ և հարաբերություններ կարող են պահպանվել՝ օբյեկտների տեսքով։
- Կիրառվում է բրաուզերում (offline storage)՝ թույլ տալով տվյալների օգտագործումը նույնիսկ առանց ինտերնետի։
Թերությունները:
- IndexedDB-ն ունի բարդ API, որը պահանջում է շատ ավելին, քան LocalStorage կամ SessionStorage օգտագործելը։
- Այն չունի անմիջական աջակցություն հարցումների լեզվին, ինչպես SQL-ը։
- Բնորոշ դիմումները պահանջում են ասինխրոն (asynchronous) գործառույթների օգտագործում։
IndexedDB-ի օգտագործման դեպքեր
IndexedDB-ը հաճախ օգտագործվում է այն դեպքերում, երբ պետք է աշխատել մեծ թվով տվյալների կամ օբյեկտների հետ, որոնք չեն տեղավորվում այլ պահման մեթոդների մեջ։ Որպես օրինակներ՝ մենք կարող ենք դիտարկել հետևյալը:
- Բազաներ ու պահոցներ՝ պահելու համար մեծ քանակությամբ տվյալներ, որոնք կպահպանվեն սերվերի վրա կամ բրաուզերում՝ առանց համացանցի։
- Օնլայն/օֆլայն ծրագրեր՝ պահելու տվյալներ, որոնք պետք է համաժամանակեցվեն սերվերի հետ, երբ հասանելիություն լինում է ինտերնետին։
- Տվյալների որոնում և դասակարգում՝ շատ մեծ տվյալների հավաքածուների համար՝ օգտագործելով ինդեքսներ։
Վերջաբան
IndexedDB-ն շատ հզոր և բազմակողմանի պահման մեթոդ է՝ թույլ տալով պահպանել մեծ և բարդ տվյալներ բրաուզերում։ Այն տրամադրում է շատ ավելի մեծ հնարավորություններ՝ տրամադրելով բազաների կառավարման և տվյալների որոնման գործիքներ։ Այն ամենակարևորն է, երբ աշխատում եք մեծ չափի կամ բարդ տվյալների հետ։ Ներկայումս, IndexedDB-ն օգտակար է շատ դեպքերում, հատկապես այն ծրագրերում, որոնք աշխատում են օնլայն/օֆլայն կամ պահանջում են ինտերակտիվ տվյալների մշակում։