Классика баз данных - статьи

       

In-memory СУБД реального времени как кэш для коммерческих СУБД


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

Сейчас наметилась тенденция использования таких быстрых in memory СУБД в качестве высокоскоростных кэшей к коммерческим дисковым СУБД. Oracle сегодня использует в таком качестве СУБД Times Ten, IBM приобрела СУБД SolidDB и начала ее интеграцию с DB2. Специальное ПО позволяет поднять или подкачивать данные в такой скоростной кэш и синхронизировать изменения в дисковой СУБД и в кэше. Приложения, требующие высокого быстродействия и малого гарантированного времени отклика, практически работают с таким кэшем в памяти, который уже сам синхронизируется с дисковой СУБД. Таких кэшей над дисковой СУБД можно подвесить несколько, давая возможность многим приложениям получать время отклика (особенно, при чтении и коротких обновлениях) в несколько микросекунд. При этом размеры основной БД могут быть очень большими (десятки и сотни терабайт), но кэшируется по определенной политике только часть данных. Важно, что для работы с использованием такого кэша не нужно специальное программирование, можно использовать стандартные протоколы (ODBC, JDBC), привычный язык дисковой СУБД.



Содержание раздела