Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемАнгелина Поршнева
1 NoSQL – взрыв возможностей Алексей Солнцев, iForum, 17 апреля 2012
2 О себе 10 лет в индустрии информационных технологий Solution Architect в компании Infopulse Украина Agile волонтёр Организатор и координатор краудсорсинг-переводов книг на русский язык Тренер в центре XP Injection Алексей
3 Scrum и XP: заметки с
4 Scrum и Kanban: выжимаем
5 Этимология термина NoSQL No значит Not Only SQL значит RDBMS NoSQL значит NotOnlyRDMBS Эрик
6 Троллинг off Это не движение Это не противостояние РСУБД Это не серебряная пуля Пока что без стандартов
7 Что изменилось с
8 Цифровая вселенная
9 Информация в фактах Обрабатывает 24 петабайта информации в день Хранит свыше 2 миллиардов фотографий Получает 160 миллионов твиттов в месяц За 20 минут добавляют 10 миллионов
10 Проблемы цифровой вселенной Объёмы данных Связанность данных Слабая структурируемость данных Обработка данных при помощи независимых
11 Ограничения реляционных СУБД Фиксированная структура Разряженные таблицы JOIN плохо масштабируется Блокировки при записи Работа с медленными
12 Масштабирование Цена решения Производительность
13 Типы масштабирования Вертикальное Горизонтальное
14 Стоимость лицензий Порядка $ за ядро
15 Репликация Клиент Slave (Ведомый) Slave (Ведомый) Нагрузка на Master сервер при записи Master
16 Репликация Клиент Peer (Равноправный узел) Peer (Равноправный узел) Peer (Равноправный узел) Проблемы синхронизации
17 Шардинг Клиент Peer (K-S) Slave (T-Z) Как добавить новый узел? Peer (A-J) Роутер
18 MySQL
19 Как грибы после
20 Разнообразие типов Key-Value Column Families Объектно-ориентированные Документ-ориентированные Граф-ориентированные
21 Второе дыхание NoSQL Теорема Брювера Amazon Dynamo Google BigTable
22 Свойства распределённых систем Согласованность Доступность Устойчивость к сбоям
23 Key -Value Ключ – DHT Value – String, Set Примитивные операции Нет составных запросов Кэширование Хранение сессий Хранение логов In-memory Сохранение на
24 Распределённая хэш-таблица
25 Amazon Dynamo и Basho Riak Решение для систем, требующих высокую степень доступности Децентрализованная, распределённая база
26 Инкрементальная масштабируемость Узлы объединены в кольцо Все знают о
27 Инкрементальная масштабируемость Пересчёт k/n
28 Согласованность «в конечном итоге» N – количество копий R – кворум на чтение W – кворум на запись W > N/2 R+W > N Если Тогда Иначе Дано При чтении получите последнюю версию Получите согласованность в «конечном итоге»
29 Согласованность и скорость ответа Надёжно, но медленно R = 2, W = 3, N = 4 Быстро, но не совсем надёжно R = 1, W = 1, N = 3
30 Google BigTable и Apache HBase Хранение огромных объёмов данных Обработка огромных объёмов данных Анализ огромных объёмов
31 Архитектура Big Table
32 ColumnFamily
33 Архитектура MapReduce
34 Cassandra FacebookDynamoBigTable Модель данных Метод хранения данных MapReduce P2P архитектура Управление кластером
35 Документ-ориентированные
36 Схемы и запросы СхемаЗапросы MySQLФиксированнаяДинамические CouchDBДинамическаяФиксированные MongoDBДинамическаяДинамические
37 Формат документов { "_id" : ObjectId("497ce96f395f2f052a494fd4"), "title" : "Awesome Blog Post", "body" : "Text text text text, text text text...", "created": "Tue, 3 Jan :13:56 GMT", "tags" : [ "css", "javascipt", "jquery" ], "comments" : [ { "name" : "Kelly Glover" "created" : "Tue, 22 Jan :22:32 GMT", "text" : "This is a very good..." }, ], "shortUrl" : "awesome-blog-post" } { "_id" : ObjectId("497ce96f395f2f052a494fd4"), "title" : "Awesome Blog Post", "body" : "Text text text text, text text text...", "created": "Tue, 3 Jan :13:56 GMT", "tags" : [ "css", "javascipt", "jquery" ], "comments" : [ { "name" : "Kelly Glover" "created" : "Tue, 22 Jan :22:32 GMT", "text" : "This is a very good..." }, ], "shortUrl" : "awesome-blog-post" }
38 API для запросов // найти записи по условию db.stat.find({clicks: {$gt: 10} }); // найти все записи и отсортировать db.users.find({}).sort({name: 1}); //найти все записи, пропустить первые 20 записей db.users.find().skip(20).limit(10); // найти записи по условию db.stat.find({clicks: {$gt: 10} }); // найти все записи и отсортировать db.users.find({}).sort({name: 1}); //найти все записи, пропустить первые 20 записей db.users.find().skip(20).limit(10);
39 Граф-ориентированные Нахождение кратчайшего пути Построение социальных графов Работа с информационными
40 Neo4j Узел Связь Key-value параметры
41 Polyglot persistence
42 Take away Знайте свой продукт Следите за комьюнити Следите за спонсорами проектов Будьте аккуратней с новинками и
43 Оставайтесь на linkedin.com/in/solntsev
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.