5. Денормализация
Денормализация - намеренное приведение структуры
базы данных в состояние, не соответствующее
критериям нормализации, обычно проводимое с
целью ускорения операций чтения из базы за счет
добавления избыточных данных.
• Большое количество соединений таблиц
• Расчетные значения
• Длинные поля
6. Репликация
Репликация - это синхронное/асинхронное
копирование данных с ведущих серверов на
ведомые (или возможно тоже ведущие)
сервера.
9. NoSQL (not only SQL)
• Нереляционная модель данных
• Открытый исходный код
• Хорошая горизонтальная масштабируемость
10. Преимущества NoSQL
1. Большие объемы
2. Производительность операции записи
3. Быстрый доступ по ключу
4. Гибкость схемы данных и типов
5. Миграция данных
6. Возможность параллельного вычисления
7. Простота в администрировании
11. Недостатки NoSQL
1. Отсутствие транзакций
2. Отсутствие ограничений целостности
3. Зависимость данных от приложения
4. Отсутствие/неполная поддержка SQL
5. Надежность
12. Примеры использования
1. Запись большого потока данных
2. Два слоя приложения, в которых низкая задержка
обеспечивается быстрым NoSQL интерфейсом, но сами
данные вычисляются и обновляются долго
3. Хранение иерархических данных
4. Выделение части приложения в отдельный сервис,
требующий лучшей
производительности/масштабируемости
5. Лента событий в социальных сетях
13. Реализации
1. Хранилища «ключ-значение», кортежные
хранилища
2. Поколоночные СУБД (Hadoop, Cassandra)
3. Документо-ориентированные СУБД
(CouchDB, MongoDB)
4. Граф базы данных (Neo4j)
15. Поколоночные СУБД
Модель данных:
• Семейство столбцов, т.е. табличная модель,
в которой каждая строка может в теории
состоять из столбцов
Примеры:
• HBase, Cassandra, BigTable
17. Граф базы данных
Модель данных:
• узлы и связи, которые хранят пары «ключ-
значение»
Примеры:
• AllegroGraph, InfoGrid, Neo4j
18. 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 };
}