- •Москва 2012
- •Введение
- •Nosql решения
- •Отличительные особенности nosql
- •Общие сведения о NoSql моделирования данных
- •Сравнение sql и NoSql от Oracle
- •Подготовка Oracle sql
- •Подготовка Oracle NoSql
- •Сравнение производительности
- •Сравнение производительности для выборки с условием
- •Сравнение производительности
- •Список использованной литературы
- •Приложение 1 .Java классы
Общие сведения о NoSql моделирования данных
Общих замечаний о NoSQL моделирования данных:
Моделирование данных NoSQL часто начинается с конкретного приложения запросов, в отличие от реляционной модели. Как правило, в реляционные модели, обусловлены структурой имеющихся данных. Основным вопросом проектирования становится: «Какие ответы у меня есть?»
NoSQL моделирования данных, как правило, приводится в приложении определенных шаблонов доступа, т.е. типы запросов в поддержке. Основным вопросом проектирования становится: «Какие вопросы есть у меня?»
Моделирование данных NoSQL часто требует более глубокого понимания структуры данных и алгоритмы, чем реляционные базы данных моделирования.
Дублирования данных и денормализации являются основной составляющей.
Реляционные базы данных не очень удобны для моделирования данных и обработки информации в иерархических или графо-ориентированных схемах. Очевидно, что графо-ориентированные базы данных, идеальное решение для этой области, но на самом деле, большинство из NoSQL решений на удивление практичны для решения задач.
Сравнение sql и NoSql от Oracle
Рассмотрим преимущества Oraclr NoSQL базы данных
Простая модель данных
Пара Key-value с подходом major+sub-key
Операции read/insert/update/delete
Масштабируемость
Динамическое партиционирование и перераспределение
Оптимизированный доступ к данным
Высокая доступность
Одна или более реплик
Катастрофоустойчивость за счёт разнесения реплик
Устойчивость к отказу мастера
Нет одной точки отказа
Прозрачная балансировка нагрузки
Чтение с мастера или реплики
Драйвер знает о сетевой топологии и временах задержки
Простота реализации key-value пар дает увеличение скорости. Подробнее на рис. 1.
Рис. 1 Понимание механики работы.
Подготовка Oracle sql
Создадим простую таблицу stress c индексом и состоящую только из двух колонок.
CREATE TABLE stress (id INT, num INT);
Создадим простой способ для добавления записей в таблицу. Где n число строк, которое необходимо записать в таблицу.
begin
for i in 0..n loop
insert into stress(id,num) values (mod (abs(dbms_random.random),50000)+i,(i));
end loop;
end;
Создадим простой способ для выбора записей из таблицы. Где n число строк, которое необходимо выбрать из таблицы.
SELECT * FROM stress
WHERE ROWNUM <= n
Подготовка Oracle NoSql
В рамках .java приложения реализуем следующие методы (полный код программы приведен в приложении 1):
multiGet() – достает все и сразу в память. Требует полного major ключа. Из-за ограниченного числа памяти, данный вид запроса не работает на больших выборках.
storeIterator() – умеет доставать записи пачками. Не требуется полного major ключа достаточно куска major key. Перебирает записи по одной в соответствии с полученными ключами. Менее производительный, но работает с любыми выборками.
putMany(String sKey, int start, int count) – добавляет записи в таблицу используя major как входной, и принимающих в качестве параметров начало и число записей.
Главный метод main, вызывающий соответствующие методы, все методы дополнены подсчетом времени, для оценки производительности работы с базой.
