Основы баз данных NoSQL
Юрий Солдаткин
Ведущий разработчик C# 17 октября 2013 года
О себе
Высшее образование
по специальности
«Информационные системы
и технологии»
Разрабатываю на стеке .NET
Microsoft Certified Professional
Developer (MCPD)
Предпочитаю личное
общение с заказчиком
Приверженец активного
образа жизни
2/41
О нашей компании
3/41
Мы занимаемся проектированием,
разработкой и бережным внедрением
масштабных IT-систем для банков,
торговых сетей и государственных
структур
Мы создаем уникальные решения
под нужды заказчиков
Мы умеем ценить особенности каждого
клиента
План
Что нам известно
Способы распределения данных
CAP
4 типа баз данных NoSQL
MapReduce
Родственные области
4/41
Реляционные базы данных
5/41
В поисках лучшей доли
Эффективность разработки
Много усилий на отображение данных
в реляционный вид
Сверхбольшие объемы данных
Объемы данных растут, а бежать нужно
в два раза быстрее
6/41
NoSQL
7/41
Сравнение скорости
8/41
План
Что нам известно
Способы распределения данных
CAP
4 типа баз данных NoSQL
MapReduce
Родственные области
9/41
Способы распределения данных
Репликация (replication)
копирование одних и тех же данных
на нескольких узлах
Фрагментация (sharding)
размещение разных данных
на разных узлах
10/41
Фрагментация
11/41
Репликация «Ведущий – ведомый» Ведущий узел (master) является
авторитетным источником данных,
ответственным за все их модификации
Ведомые узлы (slave) получают данные
с ведущего для производительного
и отказоустойчивого чтения
12/41
Одноранговая репликация
Все реплики имеют одинаковый вес
и могут выполнять операции записи
Потеря любой из реплик не приводит
к потере доступа к хранилищу
13/41
Согласованность обновлений
Пессимистичный подход
Оптимистичный подход
14/41
Согласованность чтения
15/41
Согласованность репликаций
Революция: согласованность
«в конечном счете» (eventual consistency)
16/41
План
Что нам известно
Способы распределения данных
CAP
4 типа баз данных NoSQL
MapReduce
Родственные области
17/41
CAP
Consistency………….
Согласованность
Avalibility……………..
Доступность
Partition tolerance…..
Устойчивость
к разделению
18/41
Partition
Tolerance Availability
19/41
Partition
Tolerance Availability
Кворум
R + W > N R – количество узлов для чтения
W – количество узлов для записи
N – общее количество узлов
20/41
R + W > N
21/41
version: В version: В version: A N = 3
W = 2 R = 2
version: B version: [B, A]
Агрегаты
Коллекция связанных объектов,
которая интерпретируется как одно целое
Единица согласованности
22/41
План
Что нам известно
Способы распределения данных
CAP
4 типа баз данных NoSQL
MapReduce
Родственные области
23/41
Ключ-значение
RDBMS Riak
База данных Кластер
Таблица Сегмент
Строка Ключ – значение
Идентификатор строки Ключ
24/41
25/41
Документные
RDBMS MongoDB
Таблица Коллекция
Строка Документ
Идентификатор строки _id
26/41
Представление документа
27/41
28/41
Семейство столбцов
RDBMS Cassandra
Экземпляр Кластер
База данных Пространство ключей
Таблица Семейство столбцов
Строка Строка
Столбцы (одни и те же
для всех строк)
Столбцы (могут быть
разными для разных
строк)
29/41
Представление семейства столбцов
30/41
31/41
Графовые базы
32/41
Графовое представление
33/41
34/41
План
Что нам известно
Способы распределения данных
CAP
4 типа баз данных NoSQL
MapReduce
Родственные области
35/41
MapReduce
Map (отображение) – принимает отдельные
агрегаты и отображает их на пары
ключ – значение
Reduce (свертка) – группирует полученные
значения по ключам, агрегируя информацию
36/41
Размер фонотеки
37/41
План
Что нам известно
Способы распределения данных
CAP
4 типа баз данных NoSQL
MapReduce
Родственные области
38/41
Родственные области Файловые системы
Порождение событий
Контроль версий
39/41
Литература
Прамодкумар Дж. Садаладж,
Мартин Фаулер
NoSQL. Новая методология
разработки нереляционных
баз данных
40/41