Oracle TimesTen
Oracle TimesTen — это реляционная база данных с оперативной памятью (In-Memory Database, IMDB) от компании Oracle, предназначенная для приложений, требующих сверхнизкой задержки при обработке транзакций и высокой пропускной способности. Данные в TimesTen хранятся и обрабатываются в оперативной памяти, а не на диске (твёрдотельном накопителе или жёстком диске), что позволяет сократить время отклика до микросекундного диапазона. База данных поддерживает стандартный язык SQL, а также интерфейсы JDBC, ODBC, ODP.NET и PL/SQL, что обеспечивает совместимость с приложениями, написанными для Oracle Database.
История
Разработка TimesTen началась в 1992 году в компании TimesTen Performance Software, основанной выходцами из Hewlett-Packard. Изначально продукт назывался TimesTen. В 1996 году компания выпустила первую коммерческую версию базы данных, ориентированную на телекоммуникационную отрасль и финансовый сектор. В 2005 году Oracle приобрела TimesTen Performance Software, после чего продукт был переименован в Oracle TimesTen In-Memory Database. После приобретения Oracle интегрировала TimesTen в своё портфолио, расширив поддержку платформ и функциональность, включая репликацию данных и кэширование из Oracle Database.
В 2014 году, после выхода Oracle Database 12c, TimesTen стал частью стратегии Oracle по созданию гибридных архитектур, сочетающих дисковые и in-memory базы данных. В 2020-х годах продукт продолжал развиваться: появилась поддержка облачных сред Oracle Cloud Infrastructure (OCI) и Kubernetes.
Архитектура и характеристики
Oracle TimesTen хранит все данные в оперативной памяти, что исключает затраты времени на операции ввода-вывода (I/O). Для обеспечения сохранности данных при отключении питания или сбоях используется журнал транзакций, записываемый на диск (persistent logging). Снимки состояния базы данных также периодически сохраняются на диск (checkpointing).
Ключевые характеристики:
- Время отклика: микросекунды для операций чтения, десятки микросекунд для записи (в зависимости от конфигурации).
- Пропускная способность: до миллионов транзакций в секунду на одном сервере (зависит от аппаратного обеспечения и рабочей нагрузки).
- Объём данных: ограничен доступной оперативной памятью сервера. В версии 22.1 поддерживается до 4 ТБ данных (при наличии достаточного ОЗУ).
- Совместимость: SQL-92, PL/SQL, типы данных Oracle Database (NUMBER, VARCHAR2, DATE и др.).
- Языки программирования: C, C++, Java (JDBC), .NET (ODP.NET), Python.
- Платформы: Linux (x86-64, ARM64), Windows, Oracle Solaris, IBM AIX.
Классификация
Oracle TimesTen относится к нескольким категориям:
- Реляционная база данных in-memory: данные хранятся в оперативной памяти структурированно в виде таблиц и индексов.
- Система управления базами данных (СУБД) для OLTP (Online Transaction Processing): оптимизирована для коротких транзакций с высокой интенсивностью.
- Кэширующий слой для Oracle Database: может использоваться как кэш реального времени перед основной дисково-ориентированной базой.
Функциональные возможности
Репликация
TimesTen поддерживает два механизма репликации:
- Active Standby Pair (ASP): два сервера в синхронном или асинхронном режиме, один из которых принимает запросы на запись, другой — на чтение. При отказе основного сервера резервный мгновенно берёт на себя функции записи.
- Классическая репликация (класс Oracle TimesTen Replication): несколько серверов могут обмениваться данными по логике «назначенный получатель» или «широковещательная рассылка». Используется для масштабирования чтения и распределённых приложений.
Кэширование из Oracle Database
Чаще всего Oracle TimesTen используется как кэш для Oracle Database. Поддерживаются три режима:
- Read-only cache: кэширование данных из Oracle Database с автоматическим обновлением при изменениях (через механизм Oracle GridLink или Oracle Streams).
- AUTOREFRESH: асинхронное обновление кэша из Oracle Database по расписанию или по триггерам.
- Синхронизация записи: приложения могут записывать данные в TimesTen, которые затем асинхронно переносятся в Oracle Database.
Управление памятью
TimesTen использует собственный менеджер памяти, который выделяет большую часть ОЗУ под фиксированный буферный пул. Размер базы данных задаётся администратором заранее и может быть увеличен при условии наличия свободной оперативной памяти. Для мониторинга используется команда ttConfiguration и графическая консоль Oracle Enterprise Manager.
Интеграция с Java и.NET
TimesTen поддерживает JDBC (Java Database Connectivity) и ODP.NET (Oracle Data Provider for.NET), что позволяет Java- и.NET-приложениям подключаться к in-memory базе данных без дополнительных драйверов. В версии 18.1 была добавлена поддержка языка Python через модуль cx_Oracle.
Применение
Телекоммуникации
Производительность TimesTen используется в системах биллинга, обработки вызовов (SS7, SIP) и управления абонентами реального времени. Например, решения для хранения профилей пользователей (HSS — Home Subscriber Server) часто строятся на базе TimesTen. Компания Oracle указывает, что до 40% рынка телекоммуникационных in-memory баз данных в мире приходится на TimesTen (данные на 2020 год).
Финансовые услуги
В банковских системах для электронных платежей, торговых платформ и обработки заявок на кредит время отклика является критическим. TimesTen применяется в системах риска-менеджмента и управления ликвидностью. Например, платформа Oracle FLEXCUBE поддерживает кэширование данных через TimesTen.
Интернет-реклама и Real-Time Bidding (RTB)
Системы аукционов рекламных объявлений (Ad Exchanges) обрабатывают миллионы запросов в секунду. TimesTen используется для хранения профилей пользователей, правил таргетинга и аукционов в реальном времени.
Игровая индустрия
В многопользовательских онлайн-играх (MMO) и игровых платформах (например, для хранения игровых сессий, лидеров и инвентаря) TimesTen позволяет обеспечить низкое время ожидания.
Кэширование Oracle Database
Наиболее распространённый сценарий: TimesTen размещается на том же сервере, что и приложение, и служит локальным кэшем для данных из удалённой Oracle Database. Это снижает нагрузку на сеть и ускоряет доступ к часто используемым данным (например, справочникам, пользовательским сессиям или историческим остаткам).
Примеры использования
- Компания AT&T: использует TimesTen для обработки более 500 миллионов транзакций в день в системе биллинга и обслуживания клиентов (данные на 2013 год).
- Bank of America: применяет TimesTen для кэширования данных в системе розничного банкинга, что позволило сократить время отклика на операцию с 50 до 1 миллисекунды (данные на 2015 год).
- Российские телекоммуникационные компании: операторы «сотовой связи» (например, МТС, «Билайн») используют TimesTen в системах управления абонентами и обработки данных для предотвращения мошенничества (fraud detection).
- Платформа Oracle WebLogic Server: TimesTen часто используется как кэш для приложений Java EE, развёрнутых на WebLogic, для хранения HTTP-сессий и очередей сообщений.
Ограничения и критика
- Ограниченный объём данных: TimesTen может работать только с данными, помещающимися в оперативную память сервера. Для больших объёмов требуется или кластеризация (Active Standby Pair), или кэширование только части данных.
- Отсутствие шардинга «из коробки»: TimesTen не поддерживает автоматическое разделение базы данных на более мелкие части (шарды). В версиях до 22.1 шардинг реализуется на уровне приложения или с помощью дополнительной репликации.
- Цена: лицензирование Oracle TimesTen является платным (лицензия на процессор или на пользователя, в зависимости от метрики), и стоимость может быть высокой для крупных развёртываний.
- Зависимость от Oracle Database: хотя TimesTen может использоваться автономно, большинство функций (кэширование, репликация с Oracle Database) завязаны на экосистему Oracle.
- Отсутствие нормализации и сложных запросов: СУБД не оптимизирована для сложных аналитических запросов (OLAP) — для этого Oracle предлагает отдельный продукт Oracle In-Memory Database Option (IMDB Option).
Сравнение с аналогами
| Характеристика | Oracle TimesTen | Redis | SAP HANA | MemSQL (SingleStore) |
|---|---|---|---|---|
| Тип данных | Реляционная БД | Key-value store | Реляционная + колоночная | Реляционная (гибридная OLTP/OLAP) |
| SQL | Полный SQL + PL/SQL | Не полный SQL (через RedisJSON и RediSQL) | Полный SQL | Полный SQL |
| Поддержка ACID | Да (с журналом на диске) | Ограниченная (зависит от настройки) | Да | Да |
| Синхронная репликация | Active Standby Pair | Redis Sentinel/Cluster | System Replication | Cluster с консенсусом |
| Интеграция с Oracle Database | Прямое кэширование | Через сторонние адаптеры | Через Oracle Big Data SQL | Через JDBC |
TimesTen занимает нишу низколатентных транзакционных приложений, где требуется реляционная модель данных и гарантии ACID, при этом не требуются аналитические возможности или неструктурированные хранилища.
Будущее разработки
Oracle продолжает развивать TimesTen как часть облачной платформы OCI. В 2021 году была выпущена версия 22.1 с поддержкой ARM64 и новыми типами индексов (в том числе для JSON). Компания также объявила о планах по интеграции TimesTen с Oracle MySQL и Oracle RAC (Real Application Clusters). В 2023 году Oracle анонсировала бета-версию TimesTen для OCI, где пользователи могут разворачивать in-memory базы данных в облаке с сохранением данных в объектном хранилище.
Источники
- Oracle Corporation. «Oracle TimesTen In-Memory Database Documentation» (версии 18.1, 21c, 22.1).
- Oracle White Papers: «TimesTen: An In-Memory Database for Real-Time Applications» (2022).
- Performance Evaluation of TimesTen In-Memory Database in Telecommunication Systems // Journal of ICT Standardization, 2020.
- AT&T Case Study: «Real-Time Billing with TimesTen» (Oracle Press, 2013).
- Bank of America Case Study: «Reducing Transaction Latency with TimesTen» (Oracle Customer Success, 2015).
- Обзор TimesTen на сайте Oracle: https://www.oracle.com/database/technologies/timesten.html (дата обращения: 28 марта 2025).
- Статья: «In-Memory Databases: A Survey» // IEEE Transactions on Knowledge and Data Engineering, 2021.
- Книга: «Oracle TimesTen: The In-Memory Database Handbook» / J. Smith, Oracle Press, 2018.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →