Резидентные в памяти базы данных в телекоммуникационных сетях

Резидентные в памяти базы данных в телекоммуникационных сетях РЕЗИДЕНТНЫЕ В ПАМЯТИ БАЗЫ ДАННЫХ В ТЕЛЕКОММУНИКАЦИОННЫХ СЕТЯХ Выпускная квалификационная работа студента 352 группы Божко Константина Александровича Научный руководитель Анциперов В.Е к.ф м.н. г. Москва 2009 ВВЕДЕНИЕ 2 ИСПОЛЬЗОВАНИЕ РЕЗИДЕНТНОЙ В ПАМЯТИ БАЗЫ ДАННЫХ В ТЕЛЕКОММУНИКАЦИОННЫХ СЕТЯХ 3 ИСПОЛЬЗОВАНИЕ РЕЗИДЕНТНЫХ В ПАМЯТИ БАЗ ДАННЫХ ДЛЯ РЕГИСТРАЦИИ ЗВОНКОВ МОБИЛЬНОЙ СВЯЗИ 3 ОСНОВНЫЕ ОТЛИЧИЯ РЕЗИДЕНТНЫХ В ПАМЯТИ БАЗ ДАННЫХ ОТ СТАНДАРТНЫХ 7 ПОЧЕМУ РЕЗИДЕНТНЫЕ В ОПЕРАТИВНОЙ ПАМЯТИ БАЗЫ ДАННЫХ БЫСТРЕЕ? 7 ДОСТУПНОСТЬ ДАННЫХ В СЛУЧАЕ СБОЯ ОБОРУДОВАНИЯ 8 ЦЕЛИ И ЗАДАЧИ ЭКСПЕРИМЕНТОВ 12 СХЕМА ЭКСПЕРИМЕНТА 13 СХЕМА С ИСПОЛЬЗОВАНИЕМ СУБД 17 КОМПОНЕНТЫ ЭКСПЕРИМЕНТА В ТРАДИЦИОННОЙ СХЕМЕ 17 ЗАВИСИМОСТЬ ПРОИЗВОДИТЕЛЬНОСТИ ОТ КОЛИЧЕСТВА КОМАНД ПЕРЕД ЗАВЕРШЕНИЕМ ТРАНЗАКЦИИ 18 РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА 1. Результаты эксперимента в синхронном случае 2. Результаты эксперимента в асинхронном случае 22 IMESTEN 25 КОМПОНЕНТЫ ЭКСПЕРИМЕНТА В АЛЬТЕРНАТИВНОЙ СХЕМЕ 25 РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА 1. Результаты эксперимента в синхронном методе журналирования 26 2. Результаты эксперимента в асинхронном случае 29 СРАВНЕНИЕ РЕЗУЛЬТАТОВ 31 СРАВНЕНИЕ В СИНХРОННОМ СЛУЧАЕ 31 СРАВНЕНИЕ В АСИНХРОННОМ СЛУЧАЕ 32 ЗАКЛЮЧЕНИЕ 33 ЛИТЕРАТУРА 35 ПРИЛОЖЕНИЯ 36 КОД ПРОГРАММЫ ГЕНЕРАТОРА 36 КОД ПРОГРАММЫ ПРИЛОЖЕНИЯ (ИНТЕРФЕЙС OCI) 38 КОД ПРОГРАММЫ ПРИЛОЖЕНИЯ (ИНТЕРФЕЙС ODBC) 47 ПАРАМЕТРЫ СУБД ORACLE10G 53 IMESTEN 54 ВВЕДЕНИЕ В последние годы приобрёл популярность новый класс баз данных – резидентные в оперативной памяти базы данных (in-memory databases). Основная особенность архитектуры таких СУБД состоит в том, что база данных целиком размещается в оперативной памяти сервера, что позволяет отказаться от достаточно сложных алгоритмов обслуживания Кеш-буферов традиционных СУБД, а это, в свою очередь, даёт существенный выигрыш в производительности приложений баз данных.

В качестве примера СУБД резидентных в оперативной памяти баз данных можно назвать Oracle TimesTen, Altibase, SolidDB, CSQL, SQLite и многие другие (см например, http://en.wikipedia.org/wiki/In-memory_d atabase). Разработчики этих СУБД позиционируют их как СУБД реального времени, поэтому резидентные в оперативной памяти базы данных используются только в специальных областях применения, требующих чрезвычайно малого времени отклика на запросы к базе данных, таких как обслуживание оборудования для мобильной связи, биржевых торгов и в некоторых других областях применения.

Заявляется, что производительность резидентных в оперативной памяти баз данных в десятки раз превосходит производительность традиционных реляционных баз данных.

При этом СУБД резидентных в оперативной памяти баз данных обладают, как правило, стандартными для реляционных СУБД интерфейсами – ODBC, JDBC и поддерживают язык запросов SQL. Это позволяет использовать многие из имеющихся приложений баз данных и с резидентными в оперативной памяти базами данных с минимальными доработками этих приложений.

Казалось бы, все перечисленные достоинства резидентных в оперативной памяти баз данных должны были бы привести к их всеобщему использованию во всех отраслях, где используются реляционные базы данных, но это не происходит.

Конечно, у резидентных в оперативной памяти баз данных есть существенное ограничение – вся база данных должна целиком помещаться в оперативной памяти сервера, однако стоимость оперативной памяти современных серверов такова, что не только небольшие, но даже и средние по размерам базы данных могли бы разместиться в оперативной памяти типичного современного сервера.

Целью данного диплома является сравнение традиционной реляционной СУБД – сервера Oracle и СУБД Oracle TimesTen, работающей с резидентными в оперативной памяти базами данных.

Хотелось на опыте убедиться в том, что производительность СУБД Oracle TimesTen значительно превосходит производительность сервера Oracle при аналогичных функциональных характеристиках.

ИСПОЛЬЗОВАНИЕ РЕЗИДЕНТНОЙ В ПАМЯТИ БАЗЫ ДАННЫХ В ТЕЛЕКОММУНИКАЦИОННЫХ СЕТЯХ

ИСПОЛЬЗОВАНИЕ РЕЗИДЕНТНОЙ В ПАМЯТИ БАЗЫ ДАННЫХ В ТЕЛЕКОММУНИКАЦИОННЫХ СЕТЯХ

ИСПОЛЬЗОВАНИЕ РЕЗИДЕНТНЫХ В ПАМЯТИ БАЗ ДАННЫХ ДЛЯ РЕГИСТРАЦИИ ЗВОНКОВ МОБИЛЬНОЙ СВЯЗИ

ИСПОЛЬЗОВАНИЕ РЕЗИДЕНТНЫХ В ПАМЯТИ БАЗ ДАННЫХ ДЛЯ РЕГИСТРАЦИИ ЗВОНКОВ ... Абонентам приходится долго ждать соединения, а иногда они вообще не мо... Для каждого вызова, приложение регистрирует отдельно и время начала, и... Для того чтобы данные о звонках были доступны в пределах отдельного уз... Для передачи данных в центральную СУБД на каждом узле должен быть подн...

ОСНОВНЫЕ ОТЛИЧИЯ РЕЗИДЕНТНЫХ В ПАМЯТИ БАЗ ДАННЫХ ОТ СТАНДАРТНЫХ

Это свойство не может быть просто отменено, так как сильно влияет на к... ПОЧЕМУ РЕЗИДЕНТНЫЕ В ОПЕРАТИВНОЙ ПАМЯТИ БАЗЫ ДАННЫХ БЫСТРЕЕ? Основная ... В традиционных СУБД, клиентское приложение обращается к серверу базы д... Рис. Традиционный клиент-серверный доступ также возможен, хотя такая конфиг...

ДОСТУПНОСТЬ ДАННЫХ В СЛУЧАЕ СБОЯ ОБОРУДОВАНИЯ

Защита данных от сбоев оборудования достигается через комбинацию журна... Журнальные записи сбрасываются на диск в асинхронном или синхронном ре... Этот процесс является фоновым и имеет слабое воздействие на операции в... Ещё одним способом обеспечить целостность данных в случае сбоя оборудо... Репликационный агент на основном сервере читает записи из транзакционн...

ЦЕЛИ И ЗАДАЧИ ЭКСПЕРИМЕНТОВ Целью проводимых мной экспериментов было оценить количественно преимущество использования резидентных в оперативной памяти баз данных перед стандартной СУБД. Основным показателем являлось максимальная производительность приложения – то есть такое максимальное количество сгенерированных вызовов, которое приложение способно обработать без потерь на данном сервере.

Для этого сначала генерировалось небольшое количество вызовов в секунду, после чего эта величина увеличивалась до тех пор, пока будет достигнута верхняя граница производительности приложения. Для более наглядного определения также проводились эксперименты с несколькими значениями количества сгенерированных звонков в секунду выше максимальной производительности приложения в каждой отдельной схеме.

В этом случае графики производительности выходили на некоторую аппроксимирующую прямою, которая и характеризовала максимальное количество обработанных звонков в секунду. Также обе схемы (с использованием стандартной СУБД и резидентной в оперативной памяти базой данных) тестировались в двух режимах записи журнальной информации на диск – синхронном и асинхронном.

Это делалось потому, что использование резидентных в оперативной памяти баз данных в своей основе предполагает асинхронную, фоновую запись на диск журнальной информации, в то время как для стандартной СУБД такой способ журналирования крайне редок, характерен только для специфических задач. После получения показателей максимальной производительности во всех схемах я провёл СРАВНЕНИЕ РЕЗУЛЬТАТОВ, так как эти величины характеризуют не столько саму схему эксперимента, сколько данный сервер, на котором проводились испытания.

А отношения этих показателей уже дают количественные характеристики, позволяющие оценить выигрыш в производительности при использовании баз данных «в памяти» не зависимо от сервера.

СХЕМА ЭКСПЕРИМЕНТА

СХЕМА ЭКСПЕРИМЕНТА Цель моего эксперимента состояла в сравнении показателей производительности, которые можно достичь используя архитектуру стандартной СУБД и резидентной в оперативной памяти баз данных. Также ставилось задача максимально приблизить эксперимент к процессам, происходящим в реальной жизни.

Эксперимент представляет собою макет, генерирующий звонок абонента по мобильной связи и обрабатывающий этот вызов. В обработке звонка я отказался от операции резервирования средств для совершающего звонок абонента для проверки возможности вызова. То есть интересовал сам факт совершения вызова, рассматривалась система.