Комитет W3C опубликовал черновик API для создания индексируемых БД в браузере

Автор turbo, 10 Января 2010, 02:37

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

turbo

В дополнение к ранее опубликованной спецификации WebSimpleDB API, определяющей возможность использования в web-приложениях API для доступа к интегрированной в web-браузер БД, работающей в режиме ключ/значение, комитет W3C представил черновой вариант стандарта IndexedDB API. Главное отличие новой спецификации - реализация возможности упорядоченной выборки данных, если в WebSimpleDB API можно было получить только заданные определенными ключами значения, то в IndexedDB API появилась возможность совершения операций по запросу ключей из базы, отсортированных в определенном порядке.

Кроме того, в IndexedDB API добавлены средства для гибкого поиска значений по маскам и диапазонам, реализована поддержка хранения нескольких значений, привязанных к одному ключу, включая возможность присвоения одному ключу одинаковых дублирующихся значений. Для организации работы индексов могут использоваться структуры данных, формируемые с использованием алгоритма B-tree. Индексы могут создаваться и удаляться для существующих хранилищ объектов в произвольном порядке, в зависимости от желания разработчика.

API предусматривает два метода совершения выборки: синхронный (с ожиданием завершения выборки и поддержкой курсоров) и асинхронный (после выполнения запроса работа скрипта сразу продолжается, после завершения выборки вызывается callback-функция).

Пример скрипта, поясняющего основную суть нового API:



   // Открываем БД
   var db = indexedDB.open('AddressBook', 'Address Book');
   if (db.version === '1') {
      // Если БД версии без поддержки индексации, создаем индекс и преобразуем в новый формат.
      var olddb = indexedDB.open('AddressBook', 'Address Book');
      olddb.createObjectStore('Contact', 'id', true);
      olddb.createIndex('ContactName', 'Contact', 'name', false);
      olddb.setVersion('2');
   }

   // Пример сохранения данных.
   var store = db.openObjectStore('Contact');
   var lincoln = {name: 'Lincoln', number: '7012'};
   var contact = store.put(lincoln);

   // Пример выборки из индекса.
   var index = db.openIndex('ContactName');
   var id = index.get('Lincoln');
   if (id)
     report(id.name);
   else
     report(null);

   // пример выборки по диапазону значний.
   var range = new KeyRange.bound('L', 'M'); //выборка значений с  первыми буквами от L до M
   var cursor = index.openCursor(range);
   cursor.continue();

http://www.opennet.ru/opennews/art.shtml?num=24955