Введение

Oracle TimesTen In Memory Database – это реляционная система управления базами данных в памяти с сохранением данных и высокой доступностью. Первоначально разработанная и реализованная в лабораториях Hewlett Packard в Пало-Альто, Калифорния, TimesTen выделилась в отдельный стартап в 1996 году и была приобретена корпорацией Oracle в 2005 году. Базы данных TimesTen являются постоянными и могут обеспечивать высокую доступность. Благодаря тому, что это база данных в памяти, она обеспечивает очень низкую задержку и высокую пропускную способность. Она предоставляет стандартные API и интерфейсы реляционных баз данных, такие как языки SQL и PL/SQL. Приложения получают доступ к TimesTen с использованием стандартных API баз данных, таких как ODBC и JDBC. TimesTen может использоваться как автономная база данных, а также часто применяется в качестве кэша перед другой реляционной базой данных, например Oracle Database. Она часто используется в высоконагруженных OLTP-приложениях, таких как предоплатные телекоммуникационные системы биллинга и финансовая торговля. Она также применяется для приложений, интенсивно использующих чтение данных, таких как очень крупные веб-сайты и сервисы геолокации. TimesTen может быть сконфигурирована как кластерная система с разделяемой памятью (TimesTen Scaleout), поддерживающая базы данных, значительно превышающие объем оперативной памяти, доступной на одном сервере, и обеспечивающая масштабируемую пропускную способность и высокую доступность. Она также может быть сконфигурирована в реплицированных парах баз данных в режиме "активный/резервный" (TimesTen Classic), обеспечивающих высокую доступность и время отклика в микросекундах. TimesTen работает на Linux, Solaris и AIX, а также поддерживает клиентские приложения, работающие на Windows и macOS.

Технология

TimesTen — это база данных в оперативной памяти, обеспечивающая очень быстрое время доступа к данным. Она гарантирует, что все данные будут находиться в физической памяти (RAM) во время работы. Это позволяет упростить внутренние алгоритмы поиска и управления данными, что приводит к очень низкому времени отклика даже на стандартном оборудовании. TimesTen может использовать доступный объем оперативной памяти на хост-машине, до терабайтов включительно; при использовании TimesTen Scaleout поддерживаются базы данных, значительно превышающие объем оперативной памяти одного компьютера.

Понятия базы данных

TimesTen поддерживает стандартные концепции реляционных баз данных. Таблицы состоят из строк, а строки – из столбцов определенных типов данных. Данные обрабатываются с помощью SQL. Транзакции обеспечивают манипулирование данными с необходимым уровнем атомарности и изоляции; TimesTen поддерживает все стандартные свойства ACID, ожидаемые от реляционных баз данных. Типы данных, поддерживаемые TimesTen, в основном являются подмножеством типов данных, поддерживаемых Oracle Database, включая NUMBER, VARCHAR и LOB; также поддерживаются специфичные для TimesTen типы данных, такие как бинарные целые числа. Приложения получают доступ к базам данных TimesTen, используя стандартные реляционные API, такие как ODBC, JDBC, OCI и ODPI C. Это позволяет разрабатывать приложения на многих языках программирования и в различных средах. Приложения используют эти API для доступа к данным и их обработки с помощью стандартного SQL. Хранимые процедуры также могут быть реализованы и выполнены с использованием PL/SQL.

Настойчивость

Хотя базы данных TimesTen являются базами данных в памяти, они обеспечивают постоянство данных и могут быть высокодоступными. Во время работы все данные TimesTen хранятся в оперативной памяти, однако TimesTen использует энергонезависимую память для обеспечения постоянства и возможности восстановления базы данных. TimesTen сохраняет снимки базы данных, называемые файлами контрольных точек, в локальной файловой системе. Кроме того, все изменения в базе данных также записываются в файлы журналов транзакций. Сочетание файлов контрольных точек и файлов журналов транзакций позволяет TimesTen восстановить базу данных в случае сбоя системы. Помимо этого, базы данных TimesTen могут быть реплицированы на несколько машин для обеспечения высокой доступности и аварийного восстановления.

Методы подключения

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

Кэширование

Поскольку базы данных TimesTen являются постоянными и обеспечивают высокую доступность, их можно использовать как единственную базу данных во многих решениях. Однако базы данных TimesTen часто используются совместно с другими базами данных, такими как Oracle Database, где база данных TimesTen выступает в роли кэша для подмножества данных в (возможно, более крупной) традиционной базе данных. TimesTen предоставляет возможность кэшировать данные из источника Oracle Database. Для использования кэширования Oracle Database необходимо определить один или несколько объектов SQL, известных как группы кэширования. Группа кэширования – это набор из одной или нескольких связанных таблиц базы данных, позволяющий кэшировать подмножества строк и/или столбцов. Таблицы базы данных в группе кэширования должны иметь определенный первичный ключ или уникальный индекс, объявленный по набору столбцов, не допускающих значения NULL, и должны быть связаны в родительской и дочерней иерархии посредством ограничений внешнего ключа, ссылающихся на первичный ключ. SQL-предикаты могут использоваться для управления тем, какие данные следует кэшировать. После определения группы кэширования ее можно "загрузить", что позволит кэшировать данные Oracle Database в TimesTen. Приложения могут читать и записывать данные в группы кэширования, и все изменения данных будут синхронизированы с соответствующими таблицами Oracle Database. Другие решения, такие как Oracle Golden Gate, также могут использоваться для синхронизации данных между TimesTen и другими базами данных, что также позволяет использовать TimesTen в качестве очень быстрого кэша перед другими базами данных.

Режимы развертывания

TimesTen может быть настроен двумя способами: TimesTen Classic и TimesTen Scaleout.

Таймс-Тен Классик

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

Увеличение в десять раз

TimesTen Scaleout позволяет одной базе данных TimesTen распределяться на множество машин. Для распределения данных между несколькими экземплярами TimesTen, работающими на множестве машин, используется архитектура "без общей памяти". Все машины могут запрашивать и изменять любые данные в базе данных, при этом полностью поддерживаются все свойства ACID. Для обеспечения высокой доступности хранятся несколько копий данных. Базы данных, предоставляемые TimesTen Scaleout, могут превышать объем оперативной памяти, доступной на одной машине, а производительность базы данных масштабируется с добавлением новых машин.

История

TimesTen была основана Мари Энн Наймат, Шерри Листгартен, Куртом Шуенсом и Кевином Уилкерсоном в лабораториях HP под названием "Smallbase". В HP Жан Рене Бувье решил интегрировать Smallbase в HP OpenCall, что стало первым коммерческим применением продукта в 1995 году. В 1996 году продукт был выделен в отдельную компанию, финансируемую венчурным капиталом, со штаб-квартирой в Маунтин-Вью, штат Калифорния, под руководством генерального директора Джима Гроффа. Продукт стал востребован в телекоммуникационном оборудовании, поскольку для приложений, таких как коммутация пакетов, требовалось время отклика в миллисекундах или даже микросекундах. Компания насчитывала 90 сотрудников и была прибыльной, когда в 2005 году её приобрела корпорация Oracle. После приобретения в TimesTen были добавлены многие функции баз данных Oracle, такие как поддержка PL/SQL и интеграция с Oracle SQL Developer и Oracle Enterprise Manager. TimesTen Scaleout был добавлен в 2018 году.