Основы баз данных NoSQL

17 октября 2013 года

Юрий Солдаткин
Ведущий разработчик C#
О себе


Высшее образование
по специальности
«Информационные системы
и технологии»




Разрабатываю на стеке .NET



Предпочитаю личное
общение с заказчиком



Приверженец активного
образа жизни

Microsoft Certified Professional
Developer (MCPD)

2/41
О нашей компании



Мы занимаемся проектированием,
разработкой и бережным внедрением
масштабных IT-систем для банков,
торговых сетей и государственных
структур



Мы создаем уникальные решения
под нужды заказчиков



Мы умеем ценить особенности каждого
клиента
3/41
План

 Что нам известно






Способы распределения данных
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
Availability

Partition
Tolerance

19/41
Кворум

R + W > N




R – количество узлов для чтения
W – количество узлов для записи
N – общее количество узлов

20/41
R+W>N
version: B

W=2

N=3

version: В

version: [B, A]

R=2

version: В

version: A

21/41
Агрегаты



Коллекция связанных объектов,
которая интерпретируется как одно целое



Единица согласованности

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
Спасибо!
Вопросы?
Юрий Солдаткин
soldatkin@custis.ru

41/41

Основы баз данных NoSQL