NoSQL базы данных
Бекбулатов Александр
a.bekbulatov@corp.mail.ru
Особенности Web приложений
• Динамичность
• Быстродействие
• Скорость разработки
• Стоимость используемого ПО
• Масштабируемость
Преимущества реляционной и
нереляционной модели
• Простота
• Устойчивость
• Гибкость
• Производительность
• Масштабируемость
• Масштабируемость
NoSQLSQL
Методы оптимизации
• Денормализация
• Репликация
• Партиционирование
• Шардинг
Денормализация
Денормализация - намеренное приведение структуры
базы данных в состояние, не соответствующее
критериям нормализации, обычно проводимое с
целью ускорения операций чтения из базы за счет
добавления избыточных данных.
• Большое количество соединений таблиц
• Расчетные значения
• Длинные поля
Репликация
Репликация - это синхронное/асинхронное
копирование данных с ведущих серверов на
ведомые (или возможно тоже ведущие)
сервера.
Партиционирование таблиц
Партиционирование - это разбиение больших
таблиц на логические части по выбранным
критериям.
Шардинг
Шардинг - разделение данных на уровне
ресурсов.
NoSQL (not only SQL)
• Нереляционная модель данных
• Открытый исходный код
• Хорошая горизонтальная масштабируемость
Преимущества NoSQL
1. Большие объемы
2. Производительность операции записи
3. Быстрый доступ по ключу
4. Гибкость схемы данных и типов
5. Миграция данных
6. Возможность параллельного вычисления
7. Простота в администрировании
Недостатки NoSQL
1. Отсутствие транзакций
2. Отсутствие ограничений целостности
3. Зависимость данных от приложения
4. Отсутствие/неполная поддержка SQL
5. Надежность
Примеры использования
1. Запись большого потока данных
2. Два слоя приложения, в которых низкая задержка
обеспечивается быстрым NoSQL интерфейсом, но сами
данные вычисляются и обновляются долго
3. Хранение иерархических данных
4. Выделение части приложения в отдельный сервис,
требующий лучшей
производительности/масштабируемости
5. Лента событий в социальных сетях
Реализации
1. Хранилища «ключ-значение», кортежные
хранилища
2. Поколоночные СУБД (Hadoop, Cassandra)
3. Документо-ориентированные СУБД
(CouchDB, MongoDB)
4. Граф базы данных (Neo4j)
Хранилища «ключ-значение»,
кортежные хранилища
Модель данных:
• коллекция пар «ключ-значение», с хеш-
таблицей для быстрого доступа к записи
Примеры:
• Tarantool, Redis, Membase, Riak
Поколоночные СУБД
Модель данных:
• Семейство столбцов, т.е. табличная модель,
в которой каждая строка может в теории
состоять из столбцов
Примеры:
• HBase, Cassandra, BigTable
Документо-ориентированные
СУБД
Модель данных:
• коллекции документов, которые содержат
коллекции «ключ-значение». Значения –
объекты JSON
Примеры:
• CouchDB, MongoDB
Граф базы данных
Модель данных:
• узлы и связи, которые хранят пары «ключ-
значение»
Примеры:
• AllegroGraph, InfoGrid, Neo4j
MapReduce
MapReduce — это фреймворк для вычисления некоторых
наборов распределенных задач с использованием большого
количества компьютеров (называемых «нодами»),
образующих кластер.
function () {
emit( this.type, { count : 1, sum : this.price } );
}
function (key, values) {
var s = 0, c = 0;
for (var i = 0; i < values.length; i++) {
c += values[i].count;
s += values[i].sum;
}
return { count : c, sum : s };
}

Web весна 2012 лекция 6