
- •Москва 2012
- •Введение
- •Nosql решения
- •Отличительные особенности nosql
- •Общие сведения о NoSql моделирования данных
- •Сравнение sql и NoSql от Oracle
- •Подготовка Oracle sql
- •Подготовка Oracle NoSql
- •Сравнение производительности
- •Сравнение производительности для выборки с условием
- •Сравнение производительности
- •Список использованной литературы
- •Приложение 1 .Java классы
Сравнение производительности
На основании проведенных экспериментов были получены результаты, приведенные в таблице 1. В таблице приведены результаты, являющимся средним арифметическим значением десяти выборок для каждого из значений. Были посчитаны коэффициенты увеличения производительности введения nosql решения по формуле K = t(sql)/t(nosql) для каждого значения нагрузки.
На основании полученных данных были построены графики зависимости времени выполнения операторов select и insert в зависимости от нагрузки, приведенные на графиках 1, 2. В ходе выполнения нагрузочных тестов для методов получения данных в oracle nosql было выяснено, что при нагрузке более n = 800000 ключей методу multiGet() начинает не хватать памяти и его использование становится невозможным. На больших нагрузках использовался метод storeIterator(), производящий последовательную выборку.
Таблица 1. Сравнение масштабируемости sql и nosql
|
insert |
select |
|||||
count |
Nosql |
sql |
K |
Nosql |
sql |
K |
|
1000 |
0,9 |
0,2 |
0,22 |
0,08 |
0,38 |
4,75 |
|
10000 |
3,1 |
1,5 |
0,48 |
0,28 |
3,3 |
11,78 |
|
50000 |
8,7 |
7,2 |
0,82 |
0,85 |
14,3 |
16,82 |
|
100000 |
14,2 |
15,3 |
1,07 |
1,8 |
29,4 |
16,33 |
|
200000 |
28,5 |
30,5 |
1,07 |
4,4 |
59,3 |
13,47 |
|
500000 |
64,5 |
84,2 |
1,3 |
15,2 |
150 |
9,86 |
|
800000 |
101,2 |
140,1 |
1,38 |
32,7 |
256,4 |
7,84 |
|
1000000 |
126,3 |
173,7 |
1,37 |
55,9 |
323,6 |
5,78 |
|
1500000 |
203,1 |
261,5 |
1,28 |
153,4 |
475,3 |
3,09 |
|
2000000 |
258,5 |
340,3 |
1,32 |
226,6 |
651,2 |
2,87 |
|
3000000 |
370,1 |
498,7 |
1,35 |
320,3 |
965,1 |
3,01 |
Построена зависимость коэффициента увеличения производительности для решения nosql от нагрузки, приведенная на графике 3. Определен максимальный коэффициент Kmax = 16.82, принимающих свое значение на выборках, соответствующих нагрузкам n = [30000, 150000]. Для операции insert на больших значениях нагрузки наблюдается увеличения производительности на 30%. Из полученных результатов видно, что в своей области метод multiGet() показывает результаты на порядок превосходящие, аналоги в реляционной базе данных. Следует отметить высокую погрешность для метода multiGet(), составляющую 20%, в то в то время как для других методов погрешность не превышает 5%. На больших значениях выборок порядка >10^7 nosql метод storeIterator() дает стабильный Kst = 3, и меньшее значения погрешности до 10%.