Baza danych w przeglądarce

Na początku tego roku organizacja W3C opublikowała roboczą wersję standardu Indexed Database API. Dzięki niemu będzie możliwe przechowywanie danych aplikacji po stronie przeglądarki.

W3C nieustannie przegotowuje kolejne standardy, które rozszerzają wachlarz możliwości oferowanych programistom. Jednak przejęcie przez przeglądarkę roli dotychczas dedykowanej dla serwera na pierwszy rzut oka budzi pewne wątpliwości.

Indexed Database API rozwija się jako alternatywa dla standardu Web Database, który pozwala na pobieranie danych przechowywanych po stronie przeglądarki za pomocą zapytań SQL. Jednakże ze względu na powszechne wykorzystanie w jego implementacjach bazy SQLite i ograniczenie go tylko do zapytań obsługiwanych przez ten system bazodanowy, prace nad nim zawieszono. Wprawdzie od dawna znane są mechanizmy pozwalające przechowywać dane po stronie klienta (w tym wypadku przeglądarki), np. "ciasteczka" (ang. cookies), ale obecnie coraz więcej informacji jest przechowywanych lokalnie u użytkownika. Przyczynia się do tego między innymi trend, w którym aplikacje internetowe, z punktu widzenia osoby korzystającej z rozwiązania, zachowują się dokładnie tak jak programy desktopowe. Doczekało się już to swojej nazwy, a mianowicie: Rich Internet Application. W tej sytuacji potrzebny jest bardziej zaawansowany mechanizm gwarantujący efektywny dostęp do składowanych lokalnie rekordów.

Struktura standardu

W dużym uogólnieniu całość ma być zrealizowana przy pomocy transakcyjnych systemów bazodanowych, które będą przechowywać klucze oraz odpowiadające im wartości. "Silnik bazy danych będzie znajdował się w przeglądarce" - zapewnia Philippe Le Hégaret, przewodniczący Web Services Coordination Group w W3C. Sugerowaną w standardzie strukturą danych jest B-drzewo. Każdy rekord w omawianym API składa się z pary: klucz, wartość. Natomiast podstawowymi składnikami, za pomocą których będzie można odwoływać się do danych są: repozytorium obiektów (ObjectStore) oraz indeks (Index).

ObjectStore narzuca pewne ograniczenia, gdyż uniemożliwia przechowywanie duplikatów kluczy i posiada mechanizm automatycznie generujący ich kolejne wartości. Oprócz tego, określa dostęp do danych za pomocą 3 trybów: tylko do odczytu (READ_ONLY), odczytu i zapisu (READ_WRITE) oraz odczytu migawkowego (SNAPSHOT_READ). Natomiast drugi z nich, czyli Index, zgodnie z założeniami standardu ma usprawnić dostęp do wartości. Jest on tworzony nad danym obiektem ObjectStore. Indeks także składa się z par: klucz oraz wartość. Wartością w rekordach indeksu jest zawsze klucz rekordu z repozytorium, natomiast klucz jest definiowany przez kryterium wyszukiwania (np. odwołuje się do atrybutów wartości rekordów z ObjectStore). Obok wymienionych wcześniej sposobów dostępu do danych, standard definiuje także zakresy kluczy oraz .

Wiedząc, czym jest repozytorium oraz indeks można zdefiniować bazę danych w Database API. Składa się ona z przynajmniej jednego repozytorium oraz dowolnej liczby indeksów. Otwarcie bazy tworzy połączenie. Do danej bazy może być jednocześnie otwartych wiele połączeń, lecz w ramach jednego połączenia aktywna może być tylko jedna transakcja.


TOP 200