oracle nosql database

33
<Insert Picture Here> Oracle NoSQL Database Алексей Филановский Старший консультант

Upload: andrey-akulov

Post on 15-Jun-2015

166 views

Category:

Technology


5 download

DESCRIPTION

Основные принципы, подходы, выгоды тспользования NoSQL DB.

TRANSCRIPT

Page 1: Oracle NoSQL Database

<Insert Picture Here>

Oracle NoSQL Database

Алексей Филановский

Старший консультант

Page 2: Oracle NoSQL Database

<Insert Picture Here>

Что такое NoSQL?

Page 3: Oracle NoSQL Database

Предпосылки развития NoSQL технологий

• Появление в начале 2000-х

• Google - поисковые системы• Facebook – социальные сети• И.т.д.

• Этим системам свойственно

• Постоянно меняющаяся структура• Непредсказуемый рост количества данных• Огромное число пользователей

Реляционные базы данных не справлялись

Page 4: Oracle NoSQL Database

Что такое NoSQL СУБД?

• Не имеют структурированной схемы• Часто данные хранятся в схеме Key-Value• Расшифровывает структуру данных приложение

• Для работы с данными используются простые операции (получить значение по ключу), нет SQL

• Позволяют горизонтально масштабироваться• Данные хранятся в копиях на разных серверах• Отказ узла не приводит к потере данных• Чтение производится с мастера или копий

• На данный момент существует около 130 различных NoSQL

Page 5: Oracle NoSQL Database

Основные игроки 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

Page 6: Oracle NoSQL Database

<Insert Picture Here>

Oracle NoSQL Database

Page 7: 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

Page 8: Oracle NoSQL Database

Как можно понимать пару ключ – значение?

Page 9: Oracle NoSQL Database

Как можно понимать пару ключ – значение?

/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

Page 10: Oracle NoSQL Database

Логическое представление 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

Page 11: Oracle NoSQL Database

Физическое представление

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

Page 12: Oracle NoSQL Database

Физическое представлениеСтойка 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

Page 13: Oracle NoSQL Database

Архитектура хранилищаСтойка 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

Page 14: Oracle NoSQL Database

База данныхСтойка 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

База данных

Page 15: Oracle NoSQL Database

Взаимодействие клиент-сервер

Application

NoSQL DB driver

Get , Put…База данных

Page 16: Oracle NoSQL Database

Пример использования

Foto

Friends Tape

About

me

Создадим свою

социальную сеть!

Get(/Smith/Bob/-/foto/)

Page 17: Oracle NoSQL Database

Пример использования

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

Славный

город на Неве

Page 18: Oracle NoSQL Database

Пример использования

Foto

Friends Tape

About

me

Get(/Smith/Bob/-/friends/)Smith

Bob

35

Славный

город на Неве

Lary, Patrica, John ….

Lary

Patrica

John

Page 19: Oracle NoSQL Database

Пример использования

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)

Мой пост!

Спасибо всем присутствующим

за внимание!

Мой пост!

Спасибо

всем

Присутству - ющим

за внимание!

Page 20: Oracle NoSQL Database

<Insert Picture Here>

Почему NoSQL быстрее РСУБД?

Page 21: Oracle NoSQL Database

Чем сложнее тем медленнее

Физический слой

Последовательное чтение ~ 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

Page 22: Oracle NoSQL Database

<Insert Picture Here>

Почему Oracle NoSQL DB?

Page 23: Oracle NoSQL Database

В каких случаях следует использовать Oracle NoSQL DB?

- Терабайты или петабайты данных

- Приложение не должно иметь единой точки отказа

- Использование множества недорогих серверов

(commodity)

- Ожидаемое небольшое время отклика простых запросов

- Неструктурированная или полуструктурированная

модель данных

- ACID транзакции

- Коммерческая поддержка

- Патентные войны

Page 24: Oracle NoSQL Database

<Insert Picture Here>

Примеры систем

которые могут быть построены

на основе Oracle NoSQL?

Page 25: Oracle NoSQL Database

Потенциальные системы на Oracle NoSQL DB?

• LDAP подобные системы - простой ответ на простой вопрос

Почему? Это быстро!

• Хранилище USSD запросов мобильных пользователей

Почему? Нет четкой структуры исходных данных

• Персонализация пользователей

Почему? Нет четкой структуры данных, постоянное добавление нового функционала

• Сбор разнотипных данных со счетчиков

Почему? Требуется поддержка большого количества одновременных сессий

• Хранение видео и изображений (архив)

Почему? Огромный объем данных

Page 26: Oracle NoSQL Database

Потенциальные системы на Oracle NoSQL DB?

• Логирование интернет трафика (CDR GPRS, web logs)

Почему? Данных очень много

• Хранилище файлов (фотографии, видео, текст)

Почему? Данных может быть очень много и к ним требуется быстрый доступ (системы аналогичные Dropbox, Google disk)

• Интернет магазины

Почему? Нет четкой структуры данных. Данных может быть много

• Антиспам системы

Почему? Очень много простых запросов (пример: Mollom)

• Бэкапирование различных профилей

Почему? Данные не структурированны, данных много

Page 27: Oracle NoSQL Database

<Insert Picture Here>

Гибридная архитектура

Page 28: Oracle NoSQL Database

Возможная архитектура

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/)

Page 29: Oracle NoSQL Database

Возможная архитектура

NoSQL DB Driver

Application

Application Layer

Store Layer

Запись каких либо событи

й…

Select * fr

om external_table

Preprocessor run Data stream

put(/1294543/evant/:123456)

Аналитический

запрос

Page 30: Oracle NoSQL Database

<Insert Picture Here>

NoSQL, хорошо или плохо?

Page 31: Oracle NoSQL Database

NoSQL, хорошо или плохо?

Page 32: Oracle NoSQL Database

Если есть вопросы

[email protected]

http://oracle-nosql.blogspot.com/

http://hadoop-hive.blogspot.ru/

http://www.oracle.com/bigdata

Page 33: Oracle NoSQL Database

Вопросы