Управление данными в оперативной памяти

Обновлено: 07.07.2024

К основным функциям, которые выполняются системами управления базами данных относятся:

  • непосредственное управление данными во внешней памяти;
  • управление буферами оперативной памяти;
  • управление транзакциями;
  • ведение журнала или протокола выполненных операций в базе данных;
  • поддержка языков баз данных.
2. Что означает непосредственное управление данными во внешней памяти?

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

Носители информации нужны в двух случаях:

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

Как правило, система управления базами данных использует собственный механизм работы с устройствами внешней памяти (внешними запоминающими устройствами). Для любой СУБД важна работа с файловой системой некоторого устройства внешней памяти. Пользователь не должен задумываться над особенностями работы СУБД на нижнем уровне.

Для обеспечения непосредственного управления данными во внешней памяти современные СУБД:

  • имеют собственную систему наименования объектов;
  • могут использовать возможности существующих файловых систем (запоминающих устройств);
  • могут использовать низкоуровневые операции при работе с внешними запоминающими устройствами.
3. Что означает управление буфером оперативной памяти?

Одной из важных характеристик системы управление базами данных есть скорость обработки информации в базе данных. Скорость обработки информации существенно зависит от размера базы данных.

Чтобы повысить скорость взаимодействия пользователя с базой данных, используется так называемая буферизация данных в оперативной памяти. Для этого в оперативной памяти создается буфер (кеш) с данными, которые на данный момент используются. И обмен информацией осуществляется через этот буфер. Поскольку, скорость чтения из оперативной памяти значительно выше скорости чтения из внешних запоминающих устройств, то таким образом обеспечивается ускорение работы с базой данных.

4. Что называется транзакцией? В чем состоит суть управления транзакциями?

При работе с любой базой данных выполняется бесконечная последовательность операций. Если последовательность операций объединена в единое целое (с точки зрения СУБД), то эта последовательность называется транзакцией.

В этом случае важно успешное выполнение транзакции. Если транзакция выполняется успешно, то система управления базами данных фиксирует все изменения данных с помощью инструкции COMMIT. Изменения заносятся во внешнюю память.

Если хотя бы одна из операций транзакции заканчивается неудачно, то транзакция считается невыполненной. В этом случае происходит откат транзакции (ROLLBACK). При откате транзакции база данных возвращается в состояние, которое было до начала выполнения транзакции.

5. Для чего нужно управление транзакциями в базе данных?

Поддержка транзакций есть важным условием для логической целостности базы данных. Это касается как однопользовательских так и многопользовательских СУБД.

Задача механизма транзакций – повлиять на пользователя таким образом, чтобы он ощущал себя единым пользователем СУБД. Даже в случае, если с СУБД параллельно работает большое количество пользователей. Фактически, транзакция есть единицей активности пользователя по отношению к базе данных.

6. Что такое сериализация и серийный план транзакций?

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

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

транзакция база данных рисунок

Рис. 1. Пример сериализации транзакций в случае трех пользователей

7. Что происходит, если две транзакции хотят иметь доступ к одному и тому же объекту базы данных?

Такая ситуация есть конфликтной и может возникнуть в многопользовательской базе данных. В этом случае происходит откат (ROLLBACK) одной из транзакций. Это необходимо для обеспечения сериализации в базе данных.

8. Что такое журнализация или ведение протокола в базе данных?

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

Журнализация необходима для обеспечения надежности сохранения данных во внешней памяти (на носителях информации).

Аппаратные сбои возникают вследствие:

Программные сбои – это, как правило, ошибки в самых программах. Программные сбои могут возникать как в пользовательских программах, так и в самой СУБД.

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

9. Какие требования к сохранению журнала изменений базы данных?

Журнал изменений в базе данных ведется особенно надежно. Журнал изменений есть недоступен для пользователей СУБД. Часто ведутся две копии журнала изменений, которые размещаются на разных носителях.

Стратегия упреждающей записи (Write Ahead Log – WAL) есть своеобразным протоколом, который работает по следующему принципу: прежде чем изменить объект базы данных, предварительно в журнале надо сформировать запись об изменении данного объекта.

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

11. Что такое локальный журнал транзакций? Какое отличие локального журнала транзакций от общесистемного?

Локальный журнал транзакций отображает операции модификации базы данных, выполненных в данной (конкретной) транзакции. Ведение такого журнала есть простейшим случаем для восстановления БД в случае сбоев. Чтобы восстановить БД после сбоя достаточно осуществить откат транзакции путем выполнения операций транзакции в обратном порядке (с начала до конца), которые записаны в локальном журнале.

Ведение локального журнала транзакций поддерживается в некоторых СУБД.

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

  • объекты, которые были модифицированы транзакциями, но эти транзакции еще не завершились на момент сбоя (измененные объекты незавершенных транзакций);
  • объекты, которые на момент сбоя размещались в буфере оперативной памяти и которые были модифицированы завершенными транзакциями. Но эти объекты, в результате сбоя, еще не успели сохраниться на внешних носителях, и все равно исчезли бесследно. Как известно, информация из оперативной памяти при выключении питания исчезает бесследно.

После мягкого сбоя СУБД выполняет следующие основные шаги:

  • откат незавершенных транзакций;
  • воссоздаются операции завершенных транзакций, которые еще не успели зафиксироваться во внешней памяти (исчезли бесследно из буфера оперативной памяти).

Жесткий сбой характеризуется потерей информации на носителях внешней памяти.

В этом случае, для восстановления базы данных используют:

  • журнал операций;
  • архивную копию базы данных. Архивная копия базы данных – это полная копия базы данных, которая была сделана на некоторый момент ведения журнала. Если удачно создается архивная копия базы данных, то на данный момент, предшествующие операции в журнале фиксируются и новый учет в журнале начинается из этой позиции.

Важным здесь есть наличие самого журнала.

14. Что такое избыточность данных в базе данных?

Избыточность данных в базе данных – это когда кроме самих данных в базе данных сохраняется еще и другая необходимая информация. Эта информация используется системой управления базами данных.

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

15. Что собою представляет функция поддержки языков баз данных?

Любая СУБД должна поддерживать языки баз данных. Это означает, что для работы с данными в базе данных, должны использоваться специальные языки. Эти языки называются языками баз данных (например, SQL, MDX, SPARQL, FoxPro, PL/Perl и т.д.).

Для современных баз данных в основном выделяются два языка:

  • язык определения схем данных (Schema Definition Language, SDL). Этот язык используется для определения логической структуры базы данных;
  • язык манипулирования данными (Data Manipulation Language, DML). Такой язык содержит набор операторов манипулирования данными (добавление, удаление и изменение данных) и выборки данных из базы данных.

Для современных реляционных баз данных стандартным языком использования есть язык SQL (Stuctured Query Language). Этот язык позволяет определять схему данных и манипулировать этими данными.

Повышение масштабируемости для развернутой аналитики.

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

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

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

Традиционные носители информации, такие как флеш-хранилища (SSD-накопители) и вращающиеся жесткие диски (HDD), не могут удовлетворить эту потребность, а DRAM остается нерентабельным и ограничивающим ресурсом для многих организаций.

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

Что такое база данных в оперативной памяти?

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

Напротив, база данных в оперативной памяти хранит данные непосредственно в системной памяти, подключаясь непосредственно к высокоскоростной шине памяти с низким уровнем задержки. Происходит снижение уровня задержки данных благодаря сокращению времени, необходимого для анализа данных. База данных в оперативной памяти обеспечивает гораздо более быстрый доступ к данным, позволяя анализировать большие объемы сложных данных в режиме реального времени.

70% компаний внедряют или уже внедрили, а также расширяют применение баз данных в оперативной памяти 1 .

База данных в оперативной памяти или традиционная база данных

Для лучшего понимания преимуществ базы данных в оперативной памяти, или БД в оперативной памяти, давайте более подробно рассмотрим принцип работы различных типов памяти. До недавнего времени ЦОД были ограничены следующими решениями для памяти и хранения:

  • Память DRAM — очень быстрая, но имеет ограниченную емкость, а также может быть чрезмерно дорогой.
  • SSD-накопители предлагают большую емкость и стоят меньше, чем DRAM, при этом они на несколько порядков медленнее по сравнению с DRAM.
  • Жесткие диски могут хранить огромные объемы данных при более низкой цене, но они еще медленнее SSD-накопителей.

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

Энергонезависимая память предлагает новый вариант для баз данных в оперативной памяти. Она обеспечивает производительность, схожую с DRAM, при большей емкости и более доступной цене 2 . Энергонезависимая память Intel® Optane™ предлагает базу данных в оперативной памяти с наилучшими возможностями по обоим пунктам: большая емкость по сравнению с DRAM и отсутствие ограничений производительности, имеющихся у традиционных носителей.

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

Примеры использования базы данных в оперативной памяти

Использование энергонезависимой память в разных сферах — от финансов и розничной торговли до системы здравоохранения и кибербезопасности — может способствовать развитию аналитики в режиме реального времени для принятия решений, направленных на развитие вашего бизнеса. Более того, аналитика в режиме реального времени зависит от баз данных в оперативной памяти, чтобы предоставлять анализ данных с той скоростью, которая необходима для данных приложений. Следующие примеры использования основаны на эталонной архитектуре серверов Lenovo ThinkSystem на базе масштабируемых процессоров Intel® Xeon® с использованием дисковой памяти 3 . Серверы ThinkSystem, оснащенные масштабируемыми процессорами Intel® Xeon® 2-го поколения, поддерживают энергонезависимую память Intel® Optane™, которая обеспечивает дополнительную емкость, более доступную стоимость и надежность данных 4 .

Финансы: выявление и мониторинг мошенничества

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

Розничная торговля: эффективность операций и высокие объемы продаж

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

Здравоохранение: мониторинг клинического риска и безопасности пациентов

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

Обнаружение угроз сети

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

По следам статьи о больших данных, хотелось бы поговорить о конкретных технологиях, применяемых при реализации решений в этой области. Речь пойдет о In-Memory технологиях, а именно In-Memory Data Base (IMDB) и In-Memory Data Grid (IMDG). Если говорить русским языком, то это базы данных использующие оперативную память компьютера в качестве основного хранилища.

Немного предыстории

Почему In-Memory решения стали такими популярными? Дело в том, что стоимость оперативной памяти неуклонно падает, что позволяет хранить весь набор операционных данных непосредственно в памяти, увеличивая тем самым скорость их обработки более чем в 1000 раз. Так же важен тот факт, что современные серверные операционные системы, такие как Windows Server 2012, способны использовать до 4ТБ RAM. А объединив эти сервера в кластеры, можно получить хранилища данных с внушительным объемом и не менее внушительной скоростью доступа.

Чем отличается IMDB и IMDG?

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

Среди крупных игроков на этом рынке можно выделить SAP с реляционной IMDB HANA, Oracle с IMDB TimesTen, а так же IMDB от MemSQL и IMDG от GridGain.

Слабые стороны

У IMDB/IMDG как и у любой другой технологии есть свои слабые стороны, в первую очередь это стоимость. Несмотря на то, что цены на RAM стремительно падают, они по прежнему намного выше, чем у своих твердотельных аналогов. К тому же из-за особенности устройства оперативной памяти, в случае обесточивания все данные моментально исчезают, что требует от компаний вложений в дорогостоящие инфраструктурные решения, обеспечивающие бесперебойное питание и схемы регулярной репликации данных на твердые носители.

Слабые стороны накладывают свои ограничения на потенциальные сферы применения подобных решений, как правило, это второстепенные системы решающие конкретные задачи и берущие данные из основных хранилищ на твердых носителях. Однако зачастую преимущества в виде сверх высокой скорости обработки данных берут верх и In-Memory технологии находят свое применение в таких чувствительных к надежности областях как обработка online транзакций (OLTP).

Области применения

Основными областями применения In-Memory решений являются:

1. Анализ данных рынка, Реакция на события (CEP), Торговля.

2. Авторизация, Online транзакции (OLTP).

3. Real-Time аналитика – интерактивное представление данных, витрины данных.

4. Электронная коммерция (Electronic Data Interchange, e-trade, e-cash, e-marketing), персонализация, Real-Time обслуживание.

В качестве интересного примера внедрения можно привести компанию Pirelli. С помощью In-Memory технологий они анализировали данные с датчиков шин, для достижения наилучшего сцепления с дорогой.

Открытым остается вопрос о полезности In-Memory в ECM, если посмотреть на области, то в основном это ниша ERP и BI систем. Использование подобных технологий в ECM пока кажется избыточным и выглядит как стрельба из пушки по воробьям, по крайней мере, до тех пор, пока не будут найдены задачи, требующие от системы молниеносной реакции и не решающиеся простым масштабированием существующей инфраструктуры.

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

Именно организация и управление ОП во многом определяют фактический уровень мультипрограммирования ОС, то есть возможности выполнения нескольких параллельных процессов. Функциями ОС по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место, а также настройка адресов программы на конкретную область физической памяти.

1 .Эффективное размещение процессов в ОП.

Основная цель УП - обеспечить максимальный уровень мультипрограммирования и тем самым максимальную загрузку ЦП.

Современные ЭВМ имеют 3-х уровневую, иерархическую организацию запоминающих устройств (ЗУ) (внутренние регистры процессора, различные типы сверхоперативной и оперативной памяти, диски, ленты), отличающихся средним временем доступа и стоимостью хранения данных в расчете на один бит (рисунок 1). Пользователю хотелось бы иметь и недорогую и быструю память. Кэш-память представляет некоторое компромиссное решение этой проблемы.

Рисунок 1. Иерархическая организация памяти ЭВМ.

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

Кэш-памятью часто называют не только способ организации работы двух типов запоминающих устройств, но и одно из устройств - "быстрое" ЗУ. Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. Важно, что механизм кэш-памяти является прозрачным для пользователя, который не должен сообщать никакой информации об интенсивности использования данных и не должен никак участвовать в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами.

Рассмотрим частный случай использования кэш-памяти для уменьшения среднего времени доступа к данным, хранящимся в оперативной памяти. Для этого между процессором и оперативной памятью помещается быстрое ЗУ, называемое просто кэш-памятью. В качестве такового может быть использована, например, ассоциативная память. Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных. Каждая запись об элементе данных включает в себя адрес, который этот элемент данных имеет в оперативной памяти, и управляющую информацию: признак модификации и признак обращения к данным за некоторый последний период времени.

В системах, оснащенных кэш-памятью, каждый запрос к оперативной памяти выполняется в соответствии со следующим алгоритмом:

Просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в кэш-памяти; кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому - значению поля "адрес в оперативной памяти", взятому из запроса.

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

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

В реальных системах вероятность попадания в кэш составляет примерно 0,9. Высокое значение вероятности нахождения данных в кэш-памяти связано с наличием у данных объективных свойств: пространственной и временной локальности.

Пространственная локальность . Если произошло обращение по некоторому адресу, то с высокой степенью вероятности в ближайшее время произойдет обращение к соседним адресам.

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

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

Физически ОП имеет линейную организацию и представляет собой последовательность адресуемых ячеек (байт, 1 байт = 8 бит) от 0 до N, которая делится на слова, блоки, сегменты. Номер является адресом ячейки памяти. Размер ОП определяется в килобайтах (1Кб=1024б), мегабайтах (1Мб=1024Кб), гигабайтах (1Гб=1024Мб), терабайтах (1Тб=1024 Гб) и т.д.

Слово - это единица обмена ОП с ЦП, определяемое разрядностью с ЦП.

Блок - это непрерывная область памяти с общим ключом защиты. В EC ЭВМ - размер блока 2К, поэтому процессом выдается память, кратная 2К.

Сегмент - это некоторый участок памяти (для IBM PC от 16 б до 64Кб). Сегмент может содержать несколько блоков.

Для эффективного использования ОП необходимо определить стратегию управления памятью. ОС постоянно приходится решать задачу: когда, куда и за счет кого ввести в ОП процесс и данные.

Читайте также: