Databases on client side
tips and tricks
Lemekha Denys
Web Developer
● Виды сохранения данных на стороне клиента
● Базы данных на клиенте, что это такое?
● WebSQL (синтаксис, примеры кода)
● IndexedDB (примеры кода)
● Вопросы кроссбраузерности баз данных
● Применение WebSQL и IndexedDB в
современных веб-проектах
План
Куки
WebStorage (Local Storage)
Базы данных
Виды сохранения данных
на стороне клиента
Данные
Куки
Куки
Databases on Client Side
Local Storage
Базы данных
Куки
Ограниченность кол-ва на 1 домен и общего
числа, размер кук (4кБ), ограниченное API
Local Storage
Работет синхронно и блокирует браузер
Базы данных
● Поддержка работы с сложными структурно и
большими объемами данных
● Работают как синхронно так и асинхронно
● Поддерживают транзакции
Отличия хранилищ
WebSQL & IndexedDB
Виды клиентских БД
Позитивные стороны:
● Поддерживается SQL синтаксис - удобство в
разработке. Основана на SQLite технологии
● Транзакционность
Негативные стороны:
● Не поддерживаются всеми браузерами (Safari,
Opera, Chrome, Android Browser, IE и FF)
● Не поддерживается её развитие командой W3C
Working Group
Web SQL Database
Проверка, поддерживает ли
браузер WebSQL
if (window.openDatabase){
//..операции с базой данных
}
WebSQL
Создание Базы данных
db = openDatabase
('mydb','1.0','Комментарий к базе данных',
2*1024*1024);
WebSQL
Создание таблиц
db.transaction(function(tx){
tx.executeSql('CREATE TABLE IF NOT
EXISTS tweets (id INTEGER PRIMARY KEY,
date, tweet ) ');
});
WebSQL
Создание таблиц
db.transaction(function(tx){
tx.executeSql('CREATE TABLE IF NOT
EXISTS tweets (id INTEGER PRIMARY KEY,
date, tweet ) ',[],callback_success,
callback_error);
});
WebSQL
WebSQL
Добавление данных в таблицу
db.transaction(function(tx){
tx.executeSql('INSERT INTO tweets (date, tweet)
VALUES (?,?)',
[(new Date), 'Первое сообщение'])
},
callback_error_function
);
WebSQL
WebSQL
Извлечение данных из таблицы
db.transaction(function(tx){
tx.executeSql('SELECT * FROM tweets
WHERE date>("%s", "now", "-5 minutes")', [],
function(tx, results){
for (var i=0; i<results.rows.length; i++){
span.textContent = results.rows.item(i).tweet;}
}
)};);
WebSQL
Позитивные стороны:
● По скорости быстрее чем WebSQL
● Есть API как для синхронной так и для
асинхронной работы
● Транзакционность
Негативные стороны:
● Неудобный интерфейс (не поддерживает SQL)
● Нет удобств которые есть в SQL - сортировка,
полнотекстовый поиск
● Не поддерживаются всеми браузерами (FireFox,
Chrome, IE-10, Opera и Safari)
IndexedDB
Инициализация window.IndexedDB
Object
window.indexedDB = window.indexedDB || window.
mozIndexedDB || window.webkitIndexedDB || window.
msIndexedDB;
window.IDBTransaction = window.IDBTransaction ||
window.webkitIDBTransaction;
IndexedDB
Создание индексированной базы
данных
var request = window.indexedDB.open("Books");
request.onsuccess = function(event){
db = event.target.result;
// обработка контроля версий
// создание нового хранилища объектов
};
request.onerror = function(event){
console.log('Ошибка инициализации базы данных');
};
IndexedDB
Создание хранилища объектов
var store = db.createObjectStore('classic', {
keyPath: 'title',
autoIncrement: false
});
// хранилище объектов готово
IndexedDB
Добавление(add) и помещение
(put) объектов в хранилище
var book = {
title: "Название",
author: "Автор",
raiting: 10,
date: (new Date).getTime();
}
READ_WRITE = IDBTransaction.READ_WRITE
IndexedDB
Добавление(add) и обновление
(put) объектов в хранилище
var transaction = db.transaction(['classic'], READ_WRITE),
store = transaction.objectStore('classic'),
request = store.put(book);
IndexedDB
Извлечение объектов (get)
var transaction = db.transaction(['classic'], READ_WRITE),
store = transaction.objectStore('classic'),
request = store.get(key);
IndexedDB
● Вопросы кроссбраузерности баз данных
● Применение WebSQL и IndexedDB в современных
веб-проектах
Общие моменты БД
WebSQL кроссбраузерность
IndexedDB кроссбраузерность
● Сохранение и работа с
большими объемами
структурированных данных
● Поддержка разных типов
● Большая скорость
● Возможность кеширования
больших объемов данных
(работа как веб приложение)
● Транзакционность, асинхронность
Базы данных. Сейчас и завтра
Databases on Client Side

More Related Content

PDF
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
PDF
"High load в условиях ограниченных ресурсов", Олег Бунин
PPTX
Сергей Рыжиков (1С-Битрикс)
PDF
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
PPTX
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
PDF
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
PDF
Антон Киршанов — Особенности архитектуры Single Page Application
PPTX
SECON'2016. Алексеев Олег, Живой API
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
"High load в условиях ограниченных ресурсов", Олег Бунин
Сергей Рыжиков (1С-Битрикс)
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Антон Киршанов — Особенности архитектуры Single Page Application
SECON'2016. Алексеев Олег, Живой API

What's hot (20)

PDF
State of the Standardized Web
PDF
Как устроено API в AppMetrica
ODP
Архитектура программных систем на Node.js
PPTX
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
PDF
"Без Бэкенда" — Андрей Саломатин — доклад на MoscowJS 12
PPTX
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
PDF
ReactJS: Свет в конце тоннеля
PPTX
State of the Standardized Web. YaC 2014
PPTX
живые сайты
PPTX
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
PPTX
WSS Docs
PPT
Cache administration tool report - rus-1
PDF
Sergey Cherebedov. Node.js+Drupal
PPTX
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
PPTX
1С-Битрикс: Управление сайтом 12.0. Технологически часть
PDF
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
PDF
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
PPTX
начинаем работать с Sql server compact
PDF
Node.js on Windows Azure
PDF
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
State of the Standardized Web
Как устроено API в AppMetrica
Архитектура программных систем на Node.js
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
"Без Бэкенда" — Андрей Саломатин — доклад на MoscowJS 12
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
ReactJS: Свет в конце тоннеля
State of the Standardized Web. YaC 2014
живые сайты
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
WSS Docs
Cache administration tool report - rus-1
Sergey Cherebedov. Node.js+Drupal
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
1С-Битрикс: Управление сайтом 12.0. Технологически часть
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
начинаем работать с Sql server compact
Node.js on Windows Azure
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
Ad

Viewers also liked (20)

PPT
Доступность веб-сайтов: WWW для всех?
PDF
PDF
Speed Up Your Website
PPT
Mastering Java ByteCode
PPT
Гибкость и Структурированность Oбъектно Oриентированноя CSS
PPT
External Widgets Performance
PDF
QA evolution to the present day
PDF
Seo and Marketing Requirements in Web Architecture
PDF
Testing schools overview
PPT
Психология восприятия и UX дизайн
PDF
Quick Intro to Clean Coding
PDF
non-blocking java script
PPT
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
PDF
User Behavior: Interacting With Important Website Elements
PPT
Frontend Servers and NGINX: What, Where and How
PDF
Lupan big enterprise ecommerce fusion 2013
PDF
Manifest of modern engineers
PDF
Доступность веб-сайтов: WWW для всех?
Speed Up Your Website
Mastering Java ByteCode
Гибкость и Структурированность Oбъектно Oриентированноя CSS
External Widgets Performance
QA evolution to the present day
Seo and Marketing Requirements in Web Architecture
Testing schools overview
Психология восприятия и UX дизайн
Quick Intro to Clean Coding
non-blocking java script
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
User Behavior: Interacting With Important Website Elements
Frontend Servers and NGINX: What, Where and How
Lupan big enterprise ecommerce fusion 2013
Manifest of modern engineers
Ad

Similar to Databases on Client Side (20)

PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PDF
Разработка мобильного и веб интерфейса для Caché
PDF
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
PDF
Экскурс в мир WEB разработки
PPTX
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
PPT
опыт Clickberry.com стартап на drupal в облаке павел загор
PPT
Проверено и работает. Инструменты Oracle для разработки веб приложений
PPTX
What's new in Visual Studio 2012
PDF
TК°Conf. Организация разработки Frontend. Виталий Слободин.
PPTX
Компетенции Адеква
PDF
Денис Чистяков — JavaScript на фронте и в тылу
PDF
И снова разработка под iOS. Павел Тайкало
PPT
Node.JS: возможности для РНР-разработчика
PDF
кри 2014 elastic search рациональный подход к созданию собственной системы а...
PPTX
Microsoft , Azure и Drupal
PDF
Решения сообщества для SharePoint
PDF
Павел Юрийчук - Разработка приложений под мобильные браузеры
PPTX
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
PDF
Mobile web apps
PPTX
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Web and mobile development for intersystems caché, Eduard Lebedyuk
Разработка мобильного и веб интерфейса для Caché
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Экскурс в мир WEB разработки
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
опыт Clickberry.com стартап на drupal в облаке павел загор
Проверено и работает. Инструменты Oracle для разработки веб приложений
What's new in Visual Studio 2012
TК°Conf. Организация разработки Frontend. Виталий Слободин.
Компетенции Адеква
Денис Чистяков — JavaScript на фронте и в тылу
И снова разработка под iOS. Павел Тайкало
Node.JS: возможности для РНР-разработчика
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Microsoft , Azure и Drupal
Решения сообщества для SharePoint
Павел Юрийчук - Разработка приложений под мобильные браузеры
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Mobile web apps
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)

More from Ecommerce Solution Provider SysIQ (14)

PDF
Unexpected achievements 2013
PDF
Developing for e commerce is important
PDF
Getting to know magento
PDF
Developing for e commerce is important
PDF
PDF
Scalability and performance for e commerce
PDF
QA evolution, in pictures
PDF
Management and Communications (IPAA)
PPTX
IGears: Template Architecture and Principles
PPT
Interactive web prototyping
PPT
Модульные сетки в реальном мире
PPT
Правила хорошего SEO тона в Frontend разработке
PPT
Understanding Annotations in Java
Unexpected achievements 2013
Developing for e commerce is important
Getting to know magento
Developing for e commerce is important
Scalability and performance for e commerce
QA evolution, in pictures
Management and Communications (IPAA)
IGears: Template Architecture and Principles
Interactive web prototyping
Модульные сетки в реальном мире
Правила хорошего SEO тона в Frontend разработке
Understanding Annotations in Java

Databases on Client Side