TimesTen

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 06:37, 22 января 2018.
Open book.svg Авторство
В. М. Виноградова
Согласовано: 22 января 2018 года
Times Ten
Разработчики: Oracle Corporation
Выпущена: 1996
Операционная система: Linux, Microsoft Windows
Платформа: Кросс-платформенное
Локализация: Английский
Тип ПО: RDBMS база данных
Лицензия: Проприетарное
Веб-сайт oracle.com

TimesTen - это реляционная СУБД (Система Управления Базами Данных) в памяти с постоянством и возможностью восстановления. Первоначально разработанный и внедренный в лабораториях Hewlett-Packard в Пало-Альто, Калифорния, TimesTen в 1996 году был запущен в отдельный стартап и был приобретен Oracle Corporation в 2005 году[Источник 1] .

Все данные в базе данных TimesTen расположены в физической памяти (ОЗУ), что означает, что для работы с данными не требуется диск ввода-вывода. Это не похоже на традиционные реляционные базы данных с дисковым оптимизацией, такие как Oracle Database, IBM DB2, IBM Informix или SQL Server, чьи проекты должны содержать алгоритмы, которые пытаются минимизировать доступ к диску. TimesTen обеспечивает приложения с коротким, последовательным временем отклика и очень высокой пропускной способностью, как того требуют приложения с интенсивными нагрузками базы данных.

Поскольку память работает намного быстрее, чем жесткий диск, TimesTen используется в приложениях, где соглашения об уровне обслуживания требуют низкого и прогнозируемого времени отклика, таких как телекоммуникации, приложения для торговли финансовыми услугами в режиме реального времени, сетевое оборудование и крупные веб-приложения. Кроме того, в отличие от других систем кэширования памяти, которые используют пары ключ-значение (например, Memcached, Hazelcast или Coherence), TimesTen может быть доступен со стандартными интерфейсами и обеспечивает функциональность языка запросов SQL[Источник 2].

Приложения с данными, находящимися в базе данных Oracle, могут использовать TimesTen через параметр кэширования базы данных (в отличие от Oracle Database In-Memory), в котором TimesTen функционирует как база данных кэша в памяти перед Oracle Database.

TimesTen работает на большинстве основных платформ UNIX / Linux и на разных платформах Windows, как в 32-битном, так и в 64-битном режимах.

Технология

TimesTen - это технология управления базой данных в памяти, которая обеспечивает очень быстрое время доступа к данным. Предполагается, что все данные будут находиться в физической памяти (ОЗУ) во время выполнения. Результатом является очень малое время отклика, которое обеспечивает высокую пропускную способность даже на товарном оборудовании.

Архитектура

Общие библиотеки

Функциональность TimesTen содержится в наборе разделяемых библиотек, на которые разработчики приложений ссылаются, что позволяет TimesTen выполняться как часть процесса приложения. Этот подход, основанный на общей библиотеке, отличается от обычных систем РСУБД, где база данных представляет собой, по существу, набор различных процессов, к которым приложения подключаются через некоторую форму межпроцессного взаимодействия. Это сообщение может иметь форму соединения клиент / сервер, охватывающее сеть, или это может быть некоторая форма внутрисистемного IPC, такая как соединение сокета домена Unix или механизм подключения на основе общей памяти[Источник 1].

Memory-resident база данных

Данные для каждой активной базы данных TimesTen хранятся в сегменте разделяемой памяти, позволяя одновременно работать с несколькими базами данных TimesTen, а также позволяя приложению одновременно обращаться к нескольким базам данных TimesTen в одной и той же системе. На 64-битных платформах размер базы данных TimesTen практически ограничен только объемом оперативной памяти, доступной на его главном компьютере. У одного клиента есть база данных TimesTen, использующая два терабайта в размере для обработки транзакций в режиме реального времени.

Процессы базы данных

Запуск TimesTen требует запуска фонового процесса, называемого основным демоном TimesTen, который затем запускает несколько процессов субдемонов TimesTen для управления каждой базой данных, созданной в системе. Эти процессы субдемонов выполняют операции с базой данных, такие как:

  1. загрузка и выгрузка базы данных в оперативную память
  2. написание периодических нечетких контрольных точек базы данных TimesTen на диск
  3. запись записей журнала транзакций из буфера журнала в памяти в файлы журнала транзакций на диске
  4. обработка взаимоблокировок (deadlock).

Режимы подключения

Клиентские приложения, которые подключаются к традиционным реляционным базам данных на основе дисков, обычно используют TCP / IP или другой механизм IPC для связи с процессом сервера базы данных. В TimesTen приложения, которые находятся на том же сервере, что и база данных TimesTen, могут напрямую подключаться к образам базы данных в памяти с помощью прямого драйвера TimesTen, устраняя необходимость в любом межпроцессном обмене любого рода, обеспечивая тем самым чрезвычайно быстрое производительность. Если приложение находится на удаленном сервере, приложение также может подключаться к базе данных TimesTen с использованием традиционной клиент-серверной модели доступа к данным.

Доступность и целостность

Файлы контрольной точки и журнала транзакций

Все данные TimesTen существуют в ОЗУ, однако TimesTen использует энергонезависимое хранилище (например, жесткий диск) для сохранения и восстановления базы данных. База данных TimesTen хранит все модификации транзакционных данных в буфере журнала в памяти, который в конечном итоге сохраняется на диске в виде файлов журнала транзакций[Источник 2]. Кроме того, TimesTen также сохраняет моментальные снимки базы данных в памяти, называемой файлами контрольных точек, на диск. Комбинация файлов контрольных точек и файлов журнала транзакций позволяет TimesTen обеспечивать возможность восстановления в случае сбоя системы. TimesTen реализует параллельный менеджер журналов, чтобы максимизировать пропускную способность на больших SMP-системах.

По умолчанию TimesTen работает в режиме недолгой фиксации. В этом режиме операция фиксации происходит исключительно в памяти, а запись записей журнала для транзакции на диск происходит асинхронно с фиксацией. Это обеспечивает очень низкое время отклика и очень высокую пропускную способность за счет возможности небольшого объема потери данных в случае сбоя системы. Также предоставляется настоящий синхронный режим фиксации (режим продолжительной фиксации); этот режим позволяет избежать любой потери данных за счет снижения производительности. При работе в синхронном режиме фиксации TimesTen обеспечивает автоматическую оптимизацию групповых транзакций. TimesTen позволяет архитектору / разработчику балансировать производительность и безопасность данных, предоставляя управление режимом фиксации на трех разных уровнях: база данных, соединение и транзакция. Другим вариантом защиты данных и высокой доступности является использование репликации TimesTen.

Репликация

Механизм репликации TimesTen позволяет высоко доступную систему путем отправки обновлений баз данных между двумя или более узлами. При репликации TimesTen главный хост отправляет обновления одному или нескольким узлам подписчика. TimesTen рекомендует конфигурацию пары с активным и резервным доступом для обеспечения максимальной доступности. Активно-резервная пара состоит из двух основных баз данных, активной и резервной базы данных. Помимо активных и резервных баз данных, несколько баз данных подписчиков могут быть сконфигурированы для работы в качестве копий аварийного восстановления или только для чтения.

Репликация в TimesTen реализуется агентом репликации, процессом демона, который нацелен на каждую базу данных TimesTen, участвующую в репликации. Агент репликации отправляет и получает обновления между базами данных, обмениваясь данными с агентами репликации других баз данных, участвующих в одной и той же схеме репликации. Захват изменений осуществляется с помощью журнала с оптимизацией в памяти; при нормальных условиях работы записи изменений записываются из буфера журнала в памяти, без необходимости ввода дискового ввода-вывода. Связь между агентами репликации осуществляется через эффективный потоковый протокол, построенный поверх обычных соединений TCP / IP. Агент репликации многопоточен, а в версии 11.2.2 TimesTen поддерживает параллельную репликацию для увеличения пропускной способности. Рабочая нагрузка репликации автоматически распараллеливается, чтобы максимизировать пропускную способность, сохраняя при этом правильность[Источник 2].

Кэш базы данных в памяти

TimesTen предоставляет возможность кэшировать данные из источника Oracle Database. При использовании таким образом TimesTen упоминается как кеш базы данных Oracle In-Memory (IMDB Cache), продукт продукта Oracle Database. Для использования кэширования Oracle Database определяет один или несколько объектов SQL, известных как группы кешей. Кэш-группа представляет собой набор из одной или нескольких связанных таблиц базы данных и позволяет подмножества его строк и / или столбцов. Таблицы базы данных в группе кэша должны иметь определенный первичный ключ или уникальный индекс, объявленный в наборе столбцов с недействительными значениями, и должны быть связаны в иерархии родитель-младший с помощью ограничений первичного ключа-внешнего ключа. Предикаты SQL могут использоваться для контроля того, какие данные должны быть кэшированы[Источник 1]. После определения группы кэшей группа кеша может быть «загружена», что позволяет хранить данные Oracle Database в TimesTen. Затем приложения могут считывать и записывать в группы кэша, а затем все изменения данных будут синхронизироваться с соответствующими таблицами базы данных Oracle автоматически или вручную.

Уведомление о событии

TimesTen предоставляет механизм уведомления о событиях через API журнала транзакций (XLA). XLA предоставляет функции, которые позволяют уведомлять приложения об изменениях данных, происходящих в таблицах TimesTen (а также DDL, встречающихся в базе данных TimesTen). XLA также может использоваться вместе с материализованными представлениями для упрощения процесса мониторинга изменений, внесенных в строки, охватывающие несколько таблиц. XLA работает, используя поток журнала транзакций TimesTen аналогично агенту репликации. Развертывание приложений баз данных, которые не включают базу данных Oracle, которые хотят использовать TimesTen в качестве базы данных кэша в памяти, могут использовать XLA для сбора обновлений и через специальный код приложения применять эти обновления к своей базе данных.

История

TimesTen была основана в лабораториях HP Мари-Энн Неймат, Шэри Листгартен и Курт Шоенс под названием «Smallbase». В 1996 году продукт был выделен в отдельную венчурную компанию, основанную на капитале, основанную в Маунтин-Вью, Калифорния, под руководством генерального директора Джима Гроффа. Продукт стал популярным для телекоммуникационного оборудования, так как время отклика в миллисекундах или даже микросекунды требовалось для приложений, таких как коммутация пакетов. Компания имела 90 сотрудников и была прибыльной, когда она была приобретена Oracle Corporation в 2005 году. После приобретения Неймат остался директором разработки TimesTen в Oracle, добавив в продукт множество функций базы данных Oracle, таких как поддержка PL / SQL и интеграция с Oracle SQL Developer и Oracle Enterprise Manager[Источник 1].

Установка Times Ten

В данной статье рассматривает установка Times Ten на операционную систему RedHat.

Создание пользователя и группы

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

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

В UNIX-системах группа администраторов экземпляров TimesTen и группа пользователей TimesTen могут быть одинаковыми или разными группами операционной системы[Источник 3], а именно:

  • Группа администраторов экземпляров TimesTen. Любой пользователь, устанавливающий TimesTen, должен быть членом этой группы. Эта группа должна быть предоставлена для чтения и записи в / etc / TimesTen, которая содержит информацию обо всех экземплярах TimesTen, установленных в системе.
  • Группа пользователей TimesTen. Администратор экземпляра также должен быть членом этой группы для установки TimesTen. После установки только членам этой группы операционной системы разрешено напрямую подключать драйверы к TimesTen и выполнять операции с базами данных TimesTen.

Итак, для того чтобы установить Times Ten следует создать пользователя, который будет администратором экземпляра и группу администраторов экземпляра. И внести в группу пользователя.

# groupadd TimesTen
# useradd timesTen
# passwd timesTen 
# gpasswd -a timesTen TimesTen

Создание директории

Для установки Times Ten следует создать определенную директорию и наделить правами доступа членов группы администраторов. А также

# mkdir /etc/TimesTen
# chgrp -R TimesTen /etc/TimesTen
# chmod g u+w /etc/TimesTen/

Установка

Для начала стоит скачать архив с Times Ten с официального сайта. После распаковки архива появится папка с названием соответсвующим вашей платформе. Например, "linux8664". Там будет находиться файл setup.sh, его и следует запустить. Лучше всего производить установку от имени администратора Times Ten, а не от root. Потому что иначе процессы daemon TimesTen будут выполнятся с привилегиями root[Источник 3].

$ ./setup.sh

Настройка переменных среды

Для настройки переменных среды следует использовать скрипт ttenv.sh или ttenv.csh. Данные скрипты находятся в папке /home/TimesTen/Times10/bin[1].

Настройка переменных среды

Если все сделано верно, то файл bash_profile ,будет выглядеть примерно следующим образом.

bash_profile

Создание базы данных

Создать БД может пользователь, определенный как администратор TimesTen[Источник 4].

Для создания базы данных следует внести изменения в файл /home/TimeTen/Times10/info/sys.odbc.ini. Этот файл содержит источник данных ODBC, а также спецификацию каждого источника.

$ cd /home/TimeTen/Times10/info
$ vi sys.odbc.ini

В файле следует найти секцию "ODBC data sources", новый DSN может быть добавлен в любое место это секции. Допустим, мы хотим добавить новую БД под названием my_timestendb, тогда файл sys.odbc.ini претерпит следующие изменения[Источник 4].

  • DataStore - это место для файлов БД;
  • LogDir - это место, где хранятся журналы транзакций;
  • PermSize - это размер постоянного раздела в Мб;
  • TempSize - это размер временного раздела в Мб;
  • DatabaseCharacterSet - это кодировка, используемая в БД.

Проверка статуса работы TimesTen

Перед началом работы стоит проверить есть ли подключение. Если нет, то стоит воспользоваться командой ttdaemonadmin -start.

$ ttstatus
$ ttdaemonadmin -start

В предложенных скриншотах подключение присутствует, однако, для демонстрации, команда ttdaemonadmin -start все равно использована.

Проверка статуса подключения

Запуск БД

Для подключения к созданной ранее БД используется следующая команда

$ ttisql my_timestendb
Подключение к TimesTen


Проверка размера базы данных

Чтобы проверить размер БД можно использовать команду dssize.

Проверка размера БД

Проверка соединения

Для проверки статуса соединения следует использовать команду host ttstatus.

Проверка соединения

Создание пользователя

Чтобы создать таблицу, следует создать пользователя и наделить его правом создавать таблицы и сессии.

create user ivan identified by ivan;
grant create session, create table to ivan;
connect "dsn=my_timestendb;UID=ivan";
Создание пользователя

Создание таблицы

Для создания таблицы следует повторить следующие действия.

Создание таблицы

После этого стоит создать индекс таблицы. Команда tables покажет таблицы, принадлежащие пользователю, а idexes - индексы, принадлежащие таблицам пользователя.

create index itable_idx on itable(code)
Idx,tablesetc.png

Выход из БД

Выход выполняется с помощью команды exit[Источник 4].

выход из БД

Примечания

  1. Oracle [Электронный ресурс]: Installing Oracle TimesTen In-Memory Database 11.2.2 on Linux: 22.10.2017 /Режим доступа: [1]

Источники

  1. 1,0 1,1 1,2 1,3 Wikipedia [Электронный ресурс]: TimesTen: 25.10.2017 /Режим доступа: [2]
  2. 2,0 2,1 2,2 Oracle [Электронный ресурс]:TimesTen In-Memory Database — Дата обращения: 22.10.2017 /Режим доступа: [3]
  3. 3,0 3,1 Oracle [Электронный ресурс]: TimesTen In-Memory Database Installation Guide: 22.10.2017 /Режим доступа: [4]
  4. 4,0 4,1 4,2 Oracle [Электронный ресурс]: How to create an Oracle TimesTen 11.2.2 database on Linux: 22.10.2017 /Режим доступа: [5]