Распределенные системы и БД

Preview:

Citation preview

Распределенные системы, распределенные базы данных,

NoSQL

Владимир Старостенковvladimir.starostenkov@gmail.com

Что такое “распределенная система”?

«Материал из Википедии — свободной энциклопедии

Распределённая система — система, для которой отношения местоположений элементов (или групп элементов) играют существенную роль с точки зрения функционирования системы, а, следовательно, и с точки зрения анализа и синтеза системы.

Для распределённых систем характерно распределение функций, ресурсов между множеством элементов (узлов) и отсутствие единого управляющего центра, поэтому выход из строя одного из узлов не приводит к полной остановке всей системы. Типичной распределённой системой является Интернет.

»

Что такое “распределенная система”?

«Материал из Википедии — свободной энциклопедии

Распределённая система — система, для которой отношения местоположений элементов (или групп элементов) играют существенную роль с точки зрения функционирования системы, а, следовательно, и с точки зрения анализа и синтеза системы.

Для распределённых систем характерно распределение функций, ресурсов между множеством элементов (узлов) и отсутствие единого управляющего центра, поэтому выход из строя одного из узлов не приводит к полной остановке всей системы. Типичной распределённой системой является Интернет.

»

Что такое “распределенная система”?

«Материал из Википедии — свободной энциклопедии

Распределённая система — система, для которой отношения местоположений элементов (или групп элементов) играют существенную роль с точки зрения функционирования системы, а, следовательно, и с точки зрения анализа и синтеза системы.

Для распределённых систем характерно распределение функций, ресурсов между множеством элементов (узлов) и отсутствие единого управляющего центра, поэтому выход из строя одного из узлов не приводит к полной остановке всей системы. Типичной распределённой системой является Интернет.

»

Что такое “распределенная система”?

«Материал из Википедии — свободной энциклопедии

Распределённая система — система, для которой отношения местоположений элементов (или групп элементов) играют существенную роль с точки зрения функционирования системы, а, следовательно, и с точки зрения анализа и синтеза системы.

Для распределённых систем характерно распределение функций, ресурсов между множеством элементов (узлов) и отсутствие единого управляющего центра, поэтому выход из строя одного из узлов не приводит к полной остановке всей системы. Типичной распределённой системой является Интернет.

»

Что такое “распределенная система”?

«Материал из Википедии — свободной энциклопедии

Распределённая система — система, для которой отношения местоположений элементов (или групп элементов) играют существенную роль с точки зрения функционирования системы, а, следовательно, и с точки зрения анализа и синтеза системы.

Для распределённых систем характерно распределение функций, ресурсов между множеством элементов (узлов) и отсутствие единого управляющего центра, поэтому выход из строя одного из узлов не приводит к полной остановке всей системы. Типичной распределённой системой является Интернет.

»

Что такое “распределенная система”?

● отношения местоположений элементов играют существенную роль

● распределение функций, ресурсов между множеством элементов

● отсутствие единого управляющего центра

● выход из строя одного из узлов не приводит к полной остановке всей системы

Что такое “распределенная система”?

● отношения местоположений элементов играют существенную роль

● распределение функций, ресурсов между множеством элементов

● отсутствие единого управляющего центра

● выход из строя одного из узлов не приводит к полной остановке всей системы

Доверяй, но проверяй!

Что такое “распределенная система”?

● отношения местоположений элементов играют существенную роль

● распределение функций, ресурсов между множеством элементов

● отсутствие единого управляющего центра

● выход из строя одного из узлов не приводит к полной остановке всей системы

Доверяй, но проверяй!

“A distributed system is a collection of independent computers that appears to its users as a single coherent system.”

(Distributed Systems: Principles and Paradigms by Andrew S. Tanenbaum, Maarten Van Steen)

Что такое “распределенная система”?

Доверяй, но проверяй!

“A distributed system is a collection of independent computers that appears to its users as a single coherent system.”

(Distributed Systems: Principles and Paradigms by Andrew S. Tanenbaum, Maarten Van Steen)

“A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.”

Leslie B. Lamport

Что такое “распределенная система”?

Что такое “распределенная система”?

Программное обеспечение промежуточного уровня - c его помощью пользователи полагают, что имеют дело с единой системой, а все различия между компьютерами и способы связи между ними остаются скрытыми для пользователей.

Что такое “распределенная система”?

Что такое “распределенная система”?

Параллельная вычислительная система

Что такое “распределенная система”?

Параллельная вычислительная система

● Отсутствие единого времени

● Отсутствие общей памяти

● Гетерогенность

Что такое “распределенная система”?

● Подумайте над определением самостоятельно

● Определитесь - чем будете заниматься Вы

Зачем нужна распределенная системаКакова цель построения такой системы?

Зачем нужна распределенная система

Медленно выполняется? Что делать?

Зачем нужна распределенная система

Медленно выполняется? Что делать?

Есть решение: добавим CPU, RAM, Disk, Network etc.

Это называется вертикальным масштабированием.

Зачем нужна распределенная система

Медленно выполняется? Что делать?

Есть решение: добавим CPU, RAM, Disk, Network etc.

Это называется вертикальным масштабированием.

А что если? Если дорого? Если невозможно с точки зрения физики?

Зачем нужна распределенная система

Иное решение: нужно больше серверов!

Горизонтальное масштабирование (вычислительной системы).

Что такое распределенная база данных?

Что такое распределенная база данных?

Это распределенная система имеющая персистентное состояние.

Что такое распределенная база данных?

Это распределенная система имеющая персистентное состояние.

Персистентное состояние живет дольше чем породивший его процесс.

Распределенная БД предоставляет возможность прочитать это состояниеи изменить его.

Partitioning

Система распределила данные по многим серверам

Partitioning

Как разделить данные для распределения по многим серверам?

Partitioning

Как разделить данные для распределения по многим серверам?

По колонкам - vertical partitioning

По строкам - horizontal partitioning

Partitioning

Как разделить данные для распределения по многим серверам?

По колонкам - vertical partitioning

По строкам - horizontal partitioning

Каким критериям должна удовлетворять распределенная БД?

● Consistency - после параллельного выполнения набора запросов все части системы имеют единое непротиворечивое представление о состоянии системы, такое же, как если бы эти запросы выполнялись последовательно

● Availability - система должна быть доступна для записи и чтения, такого рода запросы сопровождаются корректным ответом

● (Network) Partition Tolerance - система может “пережить” сетевые ошибки, network partition

Какие проблемы могут возникнуть?

1 2 3 4 5 6 7 8 9

Довольные пользователи

Какие проблемы могут возникнуть?

1 2 3 4 5 6 7 8 9

Недовольные пользователи

Вышел из строя отдельный сервер

Репликация

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Репликация

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Репликация

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Важно: “копии” перестали быть просто копиями

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Какие проблемы могут возникнуть?

Разрыв сети

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Разрешаем ли мы модифицировать состояние?

Разрыв сети

1 2 3 4 5 6* 7* 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Разрешаем ли мы модифицировать состояние? Да.

Разрыв сети

1 2 3 4 5 6* 7* 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Разрешаем ли мы модифицировать состояние? Да.

Разрыв сети

Система находитсяв неконсистентном состоянии

1 2 3 4 5 6* 7* 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Разрешаем ли мы модифицировать состояние? Да.

Разрыв сети

Система находитсяв неконсистентном состоянии

Availability +Partition Tolerance

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Разрешаем ли мы модифицировать состояние? Нет.

Разрыв сети

1 2 3 4 5 6 7 8 9

Довольные пользователи

4 8 9 2 3 7 1 5 6

Разрешаем ли мы модифицировать состояние? Нет.

Разрыв сети

Consistency +Partition Tolerance

Спасибо за внимание!

Recommended