oracle nosql database
DESCRIPTION
Основные принципы, подходы, выгоды тспользования NoSQL DB.TRANSCRIPT
<Insert Picture Here>
Oracle NoSQL Database
Алексей Филановский
Старший консультант
<Insert Picture Here>
Что такое NoSQL?
Предпосылки развития NoSQL технологий
• Появление в начале 2000-х
• Google - поисковые системы• Facebook – социальные сети• И.т.д.
• Этим системам свойственно
• Постоянно меняющаяся структура• Непредсказуемый рост количества данных• Огромное число пользователей
Реляционные базы данных не справлялись
Что такое NoSQL СУБД?
• Не имеют структурированной схемы• Часто данные хранятся в схеме Key-Value• Расшифровывает структуру данных приложение
• Для работы с данными используются простые операции (получить значение по ключу), нет SQL
• Позволяют горизонтально масштабироваться• Данные хранятся в копиях на разных серверах• Отказ узла не приводит к потере данных• Чтение производится с мастера или копий
• На данный момент существует около 130 различных NoSQL
Основные игроки NoSQL
NoSQL базы данных
Распределенные Key-value Колоночные Документ-ориентированные
Граф-ориентированные
Oracle NoSQL DB * Cassandra MongoDB OrientDB
Voldemort * HBase CouchDB GraphDB
Amazon Dynamo HyperTable RavenDB Neo4j
Riak Google BigTable
CitrisLeaf
GenieDB *
Одноузловые Key-value
Redis
Tokyo Cabinet
Google LevelDB
Oracle Berkeley DB
(*) Построены на Oracle Berkeley DB
<Insert Picture Here>
Oracle NoSQL Database
Новый продукт - Oracle NoSQL DB Распределенная, масштабируемая key-value база данных
• Простая модель данных• Пара Key-value с подходом major+sub-key • Операции read/insert/update/delete
• Масштабируемость• Оптимизированный доступ к данным
• Высокая доступность• Одна или более реплик• Отказоустойчивость засчет
разнесения реплик• Устойчивость к отказу мастера• Нет одной точки отказа
• Прозрачная балансировка нагрузки• Чтение с мастера или реплики• Драйвер знает о сетевой топологии и временах задержки
Storage NodesData Center A
Storage NodesData Center B
NoSQLDB Driver
Application
NoSQLDB Driver
Application
Как можно понимать пару ключ – значение?
Как можно понимать пару ключ – значение?
/Smith/Bob/-/birthdate
/Smith/Bob/-/phonenumber /Smith/Bob/-/image
/Smith/Patricia/-/birthdate /Smith/Patricia/-/phonenumber
Ключ можно воспринимать
как путь в файловой системе
Значение -
просто набор байтов
01.01.1970
+1 – 111 -111…
02.02.1971+1 – 222-…
/Smith/Bob/-/Mobile +1 – 333-…
Key Value
Логическое представление NoSQL DB
Key1 – Value1
Key5 – Value5
Key4 – Value4
Key2 – Value2
Key3 – Value3
Key6 – Value6
Key Value
Key1 Value1
Key2 Value2
Key3 Value3
Key4 Value4
Key5 Value5
Key6 Value6
Index
Физическое представление
Key1 – Value1
Key5 – Value5
Key4 – Value4
Key2 – Value2
Key3 – Value3
Key6 – Value6
Стойка 1 Стойка 2
Key1 – Value1 Key1 – Value1
Key2 – Value2 Key2 – Value2
Key3 – Value3
Key3 – Value3
Key4 – Value4Key4 – Value4
Key5 – Value5 Key5 – Value5
Key6 – Value6 Key6 – Value6
Физическое представлениеСтойка 1 Стойка 2
Key1 – Value1 Key1 – Value1
Key2 – Value2 Key2 – Value2
Key3 – Value3
Key3 – Value3
Key4 – Value4Key4 – Value4
Key5 – Value5 Key5 – Value5
Key6 – Value6 Key6 – Value6
Архитектура хранилищаСтойка 1 Стойка 2
Key1 – Value1 Key1 – Value1
Key2 – Value2 Key2 – Value2
Key3 – Value3Key3 – Value3
Key4 – Value4 Key4 – Value4
Key5 – Value5 Key5 – Value5
Key6 – Value6 Key6 – Value6
Shard 1(Replication
Group1)
Shard 2(Replication
Group2)
Shard 3(Replication
Group3)
Storage Node
Partition = f(MD5 of major Key)
Master
Master
Master
Slave
Slave
Slave
База данныхСтойка 1 Стойка 2
Key1 – Value1 Key1 – Value1
Key2 – Value2 Key2 – Value2
Key3 – Value3Key3 – Value3
Key4 – Value4 Key4 – Value4
Key5 – Value5 Key5 – Value5
Key6 – Value6 Key6 – Value6
База данных
Взаимодействие клиент-сервер
Application
NoSQL DB driver
Get , Put…База данных
Пример использования
Foto
Friends Tape
About
me
Создадим свою
социальную сеть!
Get(/Smith/Bob/-/foto/)
Пример использования
Foto
Friends Tape
About
me
Get(/Smith/Bob/-/about-me/)
<?xml version="1.0"?>
<profile>
<name> Bob</name>
<lastname> Smith </ lastname >
<age> 35 </age>
<city> Славный город на Неве </city>
</ profile >
Smith
Bob
35
Славный
город на Неве
Пример использования
Foto
Friends Tape
About
me
Get(/Smith/Bob/-/friends/)Smith
Bob
35
Славный
город на Неве
Lary, Patrica, John ….
Lary
Patrica
John
Пример использования
Foto
Friends Tape
About
me
Get(/Smith/Bob/-/tape_list/)Smith
Bob
35
Славный
город на Неве
Lary
Patrica
John
1325397600, 1325397700,
1325397800, 1325397900,
1325398000, 1325398100…
TapeArray = SortTop(value,2)
[1325398000, 1325398100]
Get(/Smith/Bob/-/tape/ 1325398000)
Get(/Smith/Bob/-/tape/ 1325398100)
Мой пост!
Спасибо всем присутствующим
за внимание!
Мой пост!
Спасибо
всем
Присутству - ющим
за внимание!
<Insert Picture Here>
Почему NoSQL быстрее РСУБД?
Чем сложнее тем медленнее
Физический слой
Последовательное чтение ~ 100 Мб/сек Произвольное чтение ~ 15 мкс
Key-Value пара
РСУБД
t, sec
t, sec
Кэширование, логирование, блокировки
t0 + t1
Безопасность t0 + t1 + t2
Словарь данных
t0 + t1 + t2 + t3
Оптимизатор t0 + t1 + t2 + t3 + t4
Query Parser t0 + t1 + t2 + t3 + t4 + t5
Кэширование, логирование, блокировки
Java API
<Insert Picture Here>
Почему Oracle NoSQL DB?
В каких случаях следует использовать Oracle NoSQL DB?
- Терабайты или петабайты данных
- Приложение не должно иметь единой точки отказа
- Использование множества недорогих серверов
(commodity)
- Ожидаемое небольшое время отклика простых запросов
- Неструктурированная или полуструктурированная
модель данных
- ACID транзакции
- Коммерческая поддержка
- Патентные войны
<Insert Picture Here>
Примеры систем
которые могут быть построены
на основе Oracle NoSQL?
Потенциальные системы на Oracle NoSQL DB?
• LDAP подобные системы - простой ответ на простой вопрос
Почему? Это быстро!
• Хранилище USSD запросов мобильных пользователей
Почему? Нет четкой структуры исходных данных
• Персонализация пользователей
Почему? Нет четкой структуры данных, постоянное добавление нового функционала
• Сбор разнотипных данных со счетчиков
Почему? Требуется поддержка большого количества одновременных сессий
• Хранение видео и изображений (архив)
Почему? Огромный объем данных
Потенциальные системы на Oracle NoSQL DB?
• Логирование интернет трафика (CDR GPRS, web logs)
Почему? Данных очень много
• Хранилище файлов (фотографии, видео, текст)
Почему? Данных может быть очень много и к ним требуется быстрый доступ (системы аналогичные Dropbox, Google disk)
• Интернет магазины
Почему? Нет четкой структуры данных. Данных может быть много
• Антиспам системы
Почему? Очень много простых запросов (пример: Mollom)
• Бэкапирование различных профилей
Почему? Данные не структурированны, данных много
<Insert Picture Here>
Гибридная архитектура
Возможная архитектура
NoSQL DB Driver
Application
Application Layer
Store Layer
Give me fo
to, which will
make in
2010
on Nikon camera….
Select key_path
from (
Select rank()
over(…) r
k,
pl_sql_functio
n(col3)
….
from ta
b_a left
join tab_b…
Where
….
Order b
y ….)
Where rk=1
/foto/niko
n/id1/id
5/-/some_id/
Get(/foto/nikon/id1/id5/-/some_id/)
Возможная архитектура
NoSQL DB Driver
Application
Application Layer
Store Layer
Запись каких либо событи
й…
Select * fr
om external_table
Preprocessor run Data stream
put(/1294543/evant/:123456)
Аналитический
запрос
<Insert Picture Here>
NoSQL, хорошо или плохо?
NoSQL, хорошо или плохо?
Если есть вопросы
http://oracle-nosql.blogspot.com/
http://hadoop-hive.blogspot.ru/
http://www.oracle.com/bigdata
Вопросы