Научная статья на тему 'АЛГОРИТМ ИСПОЛЬЗОВАНИЯ КЭША ЗАПРОСОВ К РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ'

АЛГОРИТМ ИСПОЛЬЗОВАНИЯ КЭША ЗАПРОСОВ К РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
41
4
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
РЕЛЯЦИОННАЯ БАЗА ДАННЫХ / КЭШ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мосин Сергей Владимирович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CACHE USAGE ALGORITHM FOR RDB QUERIES

This paper considers the approach for caching RDB queries based on the query logical conditions. An algorithm defining whether or not this query can be performed using cache is also presented. If any data is missed it can be retrieved from the server. The data size to be requested is estimated and compared with the one required for straight query execution because if the first is greater than the latter cache usage is not worthwhile. Improved estimation for joint operations with logical constraints is also proposed in this paper and is used for checking mentioned before.

Текст научной работы на тему «АЛГОРИТМ ИСПОЛЬЗОВАНИЯ КЭША ЗАПРОСОВ К РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ»

УДК 004.652

Алгоритм использования кэша запросов к реляционной базе данных

С. В. Мосин*

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

Ключевые слова: реляционная база данных, кэш, область истинности.

1. Введение

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

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

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

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

*Работа выполнена по проекту ОМН РАН № П.2.ПЛ.1-7.

2. Обзор существующих работ

В области теоретических исследований ситуация складывается следующим образом. Огромное число публикаций посвящено проблеме построения оптимального плана запроса на основе формальных правил, в который не используются области определения предикатов в БОЬ-операторах (логическая оптимизация) либо эти области учитываются при вычислении статистических оценок для оптимизации физического доступа к базе данных. Близкими по методам решения являются задачи выполнения запросов на потоках даннык [15, 7], однако различные по сравнению с настоящей работой цели приводят к различным результатам.

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

Существует ряд работ, в которых рассматривается проблема оптимизации запросов к многомерным хранилищам даннык с использованием сохраненных представлений. При этом существует два основных подхода для резервирования результатов запросов: статический [3, 9, 10] и динамический [17, 18, 12, 16]. Первый базируется на использовании набора фиксирован-нык запросов, во втором же предполагается динамический выбор результатов запросов для резервирования на основе статистики появления, а также вычислительной стоимости выполнения запросов. В качестве источника данных используются хранилища данных либо реляционная база данных, преобразованная к иерархическому виду. При этом рассматриваются специальные запросы манипулирования многомерными данными. В данной статье рассматривается технология раздельного формирования размерностей представления данных. Поэтому интерес представляют стандартные БОЬ-запросы к базе даннык и промежуточным представлениям. Результирующее представление может быть затем обработано специальными запросами манипулирования многомерными данными.

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

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

3. Постановка задачи

Будем рассматривать реляционную базу данных со схемой Я = {Яг, Я2,..., Ям}. Определение 1. Универсальным реляционным запросом называется запрос следующего вида:

Р = пх(о^(Яг м ■ ■ ■ м Ят)),т Е [1,... , Ж].

Логические формулы, по которым проводится селекция, будем рассматривать в дизъюнктивной нормальной форме. В общем случае формула F имеет вид:

F = Ki V K2 У •••У Ki. (1)

Ki = Ti & Ti ... & г;(т),г = l,...,l, (2)

где Tj,i = 1.... ,l.j = 1.... ,p(i) - предикаты, в которых явным образом специфицированы расширенные имена атрибутов Ri.Aj (атрибут Aj в отношении Ri). Возможные значения Tj:

• операция сравнения Expr 1 9 Expr2 , 9 - операция сравнения (9 Е {=, = ., >■,<■, <. >}), Expri - согласованные по типам допустимые выражения, определенные на множестве расширенных имен атрибутов и констант;

• операция Expri [NOT] BETWEEN Expr2 AND Expr3 (содержимое в прямоугольных скобках [*] для предиката не является обязательным при написании);

• операция Expr [NOT] IN S, где S - список значений либо подзапрос, результатом которого является столбец атрибута Aj в отношении Ri;

• операция Stri [NOT] LIKE Str2, где Stri - строки;

• операция Expr 9 ALL/ANY S.

Обозначение. Множество атрибутов, входящих в формулу, выражает размерность формулы и обозначается (F).

(F) = {Rf .Af .....RFk .AFk }. (3)

k - количество атрибутов, входящих в формулу

Перечисленные варианты операций используют не все возможности языка SQL. Например, предикат EXISTS не используется, поскольку в нем явно не специфицированы расширенные имена атрибутов, предикат NULL используется в данной работе для другой цели.

В статье [14] приведен алгоритм преобразования логических формул, который позволяет избежать получения значения UNKNOWN в результате вычисления значений формул. Далее будем предполагать, что все формулы F являются преобразованными.

Введем в рассмотрение множество A = {(а1,...,аь) | ai Е Dom(Ai),i = 1.....L}, где Dom(Aj) - множество всех допустимых значений атрибута Ai. Декартово произведение Dom(Ai) х Dom(A2) х • • • х Dom(Ab) - L-мерное пространство значений всех атрибутов базы данных.

Определение 2. Областью истинности логической формулы F, заданной (1), (2), (3), является множество, определяемое по следующему правилу: M(F) = {а Е A | F(а) = TRUE}. Данное определение изначально введено в статье [14].

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

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

Определение 3. Проекцией логической формулы F, заданной (1), (2), (3), на множество атрибутов X называется логическая формула F[X}. (F[X]) = X, в которой все термы, содержащие атрибуты Rf .Af Е X, заменены на тривиальный терм TRUE. Утверждение 1 (Свойство включения). VX С (F) M(F) С M(F[X]).

Содержимое кэша обозначим P = {Pi. P2..... Pn}. Его элементы будем называть промежуточными представлениями данных (или просто промежуточными представлениями):

Р? = пХг)(орх](Я? м Я2 м ••• м Я^)), з('у) - количество отношений в базе даннык, использованных при формировании представления Р?, пХщ - операция проекции по множеству атрибутов X?, а^ - операция селекции с логическим ограничением на кортежи Р?. Целевое выражение, которое надо будет получить из представлений Р, запишем в виде:

Р* = пх* (ар* (Я* м Я* м ■ ■ ■ м Я*).

Основные теоретические результаты, позволяющие судить о возможности использования кэша при выполнении запросов:

п

Теорема 1. Р* С пх*(ар*[Х](Рг м ■ ■ ■ м Рп)), где X = и X?, если:

и=1

а) X * С X;

п

б) и {Яи,...,Я^(и)} = (я;,..., я;,} с {я*, ..., я*};

и=1

в) М(Р*) С М(Р?= 1,...,п.

Доказательство приводится в статье [14].

Предложенные в теореме условия гарантируют, что данные, необходимые для формирования целевого запроса Р*, содержатся в промежуточном представлении Р?. Однако в нем могут быть лишние кортежи, которые дают значение ТЯ ПЕ при подстановке в формулу Р*. Эти кортежи могут быть удалены при выполнении операции естественного соединения с отношениями, которык не хватает в множестве Я? м Я2 м ■ ■ ■ м Я?(?) для совпадения с множеством Я* м Я* м ■ ■ ■ м Я*.

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

п

Теорема 2. Р* = пх* (ар* (Рг м ■ ■ ■ м Рп)), где X = У X?, если:

и=1

а) X* с X, XV э (м^й Я?> п ( и (м£? ЯГ>),* = 1,

г=1

Г = ?

п

б) и (я;,...,Я!(?)} = (я;,..., я;,} = (я*, ..., я*};

и=1

в) М(Р*) С М(Р?= 1,...,п;

г) (Р*> С X.

Доказательство также приведено в статье [14]. Утверждение 2. Предположим, = Яг м ■ ■ ■ м Як - естественное соединение некоторык к отношений. Также предположим, что = Яг м ■ ■ ■ м Як м Як+г м ■ ■ ■ м Яп. Тогда ЗДмк=! Яг>] СЙ!

Доказательство утверждения также можно найти в статье [14].

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

4. Получение требуемых данных из промежуточных представлений

Результаты, полученные в теореме 1, нельзя сразу использовать на практике. Отношение Р* содержится в сохраненных представлениях, однако неизвестно, какие именно кортежи являются частью Р*. Лишние кортежи могут возникнуть по следующим причинам:

1. Из-за невыполнения требования свойства операции проекции на каких-либо кортежах из множеств X?.

2. В силу утверждения 1, так как правая часть содержит проекцию исходной формулы Р*

на некоторое множество атрибутов. 3. В силу утверждения 2, так как в промежуточном представлении отношений не больше, чем в искомом P*.

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

Решение проблемы возникновения лишних кортежей предлагается сделать сведением к теореме 2 путем получения недостающих данных с сервера. Введем следующие обозначения: P = {Pi,...,Pn}, Rv = {RV .....Rvs{v)},v =1,...,n,

n

R' = U Rv,

v=i

R* = {R1.....R*},

R' = R* \ R' - множество отношений, отсутствующих в промежуточных представлениях P , но присутствующих в пользовательском запросе.

Y = (R') П (R') - множество атрибутов, по которым отношения из P пересекаются с отсутствующими отношениями. По всем этим атрибутам должна быть осуществлена операция естественного соединения, чтобы гарантировать избавление от всех избыточных данных.

query - функция, осуществляющая запрос к серверу БД на получение данных пользовательского запроса.

Алгоритм 1. Получение искомого представления данных с использованием кэша. Вход: P, R*, F*, X* : X* С X, R' С R*, M(F*) С M(Fv).v = 1,...,n Выход: R = P* for v = 1 to n:

X' = Xv

n n

if (Rs) П ( U (Rw)) С Xv: X' = X' U (Rv) П ( U (Rw))

w=i w=i

w=v w=v

if Y П (Rv)С Xv: X' = X' U Y П (Rv) if (F*) П (Rv) С Xv: X' = X' U (F*) П (Rv) if X'

= Xv : Pv = query (nx' (&fv ( и R)))

RGRv

Pn+i = query (nYu(f*>n(W>(af*UW>]( R)))

RGR'

R = nx* (^f * (Pi и • • • и Pn и Pn+i)) Поясним шаг алгоритма 1.

Для каждого сохраненного представления данных выполняется набор проверок.

n

1. Проверка условия (Rv)П( (J (Rw)) С Xv. Данное условие соответствует невыполнению

w=i w=v

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

2. Проверка условия Y П (Rv) С Xv. Благодаря этому условию мы можем присоединить недостающие атрибуты к промежуточному представлению, что позволит провести естественное соединение с недостающими отношениями, которые будут получены далее.

3. Проверка условия (F*) П (Rv) С Xv. Оно позволяет определить, содержатся ли в Xv все атрибуты, необходимые для проведения селекции по формуле F*. Это условие призвано устранить вторую причину возникновения лишних кортежей.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4. Если хотя бы одна из проверок прошла, то изначальное множество атрибутов X' будет пополнено некоторым множеством атрибутов. В этом случае выполняется запрос к

БД на получение представления, отличающегося от текущего расширенным множеством атрибутов.

После выполнения проверки всех промежуточных представлений выполняется запрос на получение недостающих отношений из множества И/.

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

5. Оценка мощности запросов

5.1. Обзор существующих методов

В публикациях рассматриваются различные подходы к получению оценки мощности результата операции естественного соединения. В работе [1] используется предположение о равномерном распределении атрибутов при оценке мощности соединения отношений (и-метод). В работе [8] предложен метод получения наихудшей (пессимистической) оценки для соединения двух отношений. В работе [6] рассмотрен метод полного знания информации (рк-метод). В работах [4, 5, 8, 1] рассматриваются различные варианты кусочно-равномернык методов (ри-методы) и алгоритмы для оценки мощности соединения двух и более отношений. Последней работой по данной тематике является статья [11], в которой сравниваются различные варианты метода, основанного на случайной выборке кортежей по распределению Бернулли и последующей оценке размера соединения для отобранных кортежей.

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

Из сказанного следует, что в общем случае наиболее целесообразно использование предположения о равномерном распределении значений атрибутов на этапе проектирования БД. Наилучшей оценкой для значений любой случайной величины является математическое ожидание, в нашем случае - среднее. Кроме того, как показано в экспериментальной оценке в работе [19], в предположении равномерности наиболее вероятны значения мощности соединения, близкие к среднему, а пессимистическая оценка маловероятна. При получении среднего значения будем пользоваться предположением о равномерности - равной вероятности появления любого возможного значения атрибута. Кроме того, потребуются предположения о статистической независимости значений атрибутов в каждом отношении и независимости значений общих атрибутов в различнык отношениях.

Приведенные далее оценки получены и обоснованы в работе [19].

5.2. Оценка мощности естественных соединений

Пусть |Я | = N¿,2 = 1,...,М - мощности отношений, А(С (т)) = (Аг, А2,..., Ар} -множество атрибутов, принадлежащих, по крайней мере, одному пересечению Я П Я^, где

г,] € С(т). С(т) = {^1,^2,...,^т} - совокупность номеров отношений, являющаяся сочетанием без повторений по т элементов из множества I = {1, 2,..., М}, |$(С(т))|| - мощность естественного соединения отношений Я, г € С(т). к (А, С(т)) - количество различных значений атрибута А,-, являющихся общими для всех отношений Я, г € С (т), которые содержат атрибут А. В частности, к (А, г) - количество различных значений атрибута А только в реализации Я. Я П А(С(т)) = ХДС(т)). Тогда оценка мощности соединения отношений с индексами С(т) принимает следующий вид:

п , С(т)) П N

I чч, ¿€С(т)

^ (С(т))1 = ~П-П -г). (4)

¿ее(т) А,-еХг(С(т))

Оценка (4) является обобщением оценки в [1] для мощности результата операции естественного соединения.

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

5.3. Корректировка оценки при выполнении селекции

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

(R1 и ■ ■ ■ и Rm) С [<Ri>] (Ri) x ■ ■ ■ x [(Rm>](RM),

где формула F задана (1), (2). Мощность [<Rl>](R1) x ■ ■ ■ x [<Rm>] (Rm) можно оценить по формуле 4, где в качестве отношений R^, i = 1,..., M выступают [<Ri>](Ri), i = 1,..., M.

Для оценки нам потребуются дополнительные сведения о базе данных - списки всех значений атрибутов. Обозначим V(R^A,) = {v1,..., ,i)} - множество значений атрибута A, в таблице R.

Рассмотрим, как изменятся величины, входящие в (4). Оценить k(A,, C(m)) не представляется возможным, за исключением случая, когда какой-либо из атрибутов A, участвует в формуле F, так как у нас нет данных о взаимном распределении атрибутов в отношениях. В случае же A, G (F) данные V(R.A,),i G C(m) позволяют пересчитать значения k(A,, C(m)). Обозначим Ri = ctf[<Ri>](Ri). Тогда V(Ri.A,) = {v G V(Ri.A,) | F[(Ri)](v) = TRUE}.

Оценка k(A,, C(m)) принимает вид:

f| П V(Ri.Aj)|, если A, G (F) k' (A, ,C(m))= < iec(m) . (5)

I k(A,, C(m)), иначе

Для атрибутов, которые не входят явным образом в формулу F, данные величины остаются в оценке без изменений.

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

По свойству операции селекции

CTF (R) = aTi (... (сту 1 (R))) U---U ат1 (... (R))),

где F задана (1), (2). Очевидно, что

\°т1 (... Kpi( 1 , (R)))\ < min(laTi(R)l,..., ^ i} (R)l).

Тогда:

\aF(R)\ = kTi(... (аткц (R)))\ + ■ ■ ■ + (... (<JT<(1) (R)))\ <

< min(\aTi(R)\,... , ^ i } (R)\) + ■ ■ ■ + min(\an(R)\,... , ^ (R)\). (6)

Задача свелась к оценке значений мощностей отношений, ограниченных элементарным

предикатом: \aTj (Ri)\,i Е C (m); j = 1,... ,l; k = 1,... ,p(j). Предикаты Tj ,i = 1,... ,l,j = k J

1,... ,p(i) могут принимать значения, описанные в разд. 3. Во всех приведенных в списке предикатах языка SQL значение атрибута может сравниваться либо с заданной константой, либо с другим атрибутом. В последнем случае мы не сможем провести оценку по тем же причинам, что и при оценке k(Aj, C(m)), и будем оставлять мощности отношений без изменений. В случае же с константными ограничениями оценки элементарно получаются, основываясь на данных V(Ri.Aj), а также на данных о количестве всех значений, принимаемых всеми атрибутами всех отношений: Hij : V(Ri.Aj) ^ Z*. Пример 5.1. Пусть T = (Rt .Л5 > 16). Тогда \^t(Ri)\ = Е H15(v).

vev (Ri.As)

v> 16

Обозначим через T(i)jk предикаты, составляющие формулы F[(Ri)],i Е C(m). Тогда в силу (6):

[(Ri)](Ri)\ < ^mm.(\vmi(Ri)\) = N,i Е C(m). (7)

j

Подставляя оценки (5) и (7) в (4), получаем:

П k(Aj, C(m)) П Ni

^f(S(C(m»>\ < -П ■ (8)

ieC(m) AjeXi(C(m))

5.4. Улучшенная версия алгоритма

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

P = {Pi,...,Pn},

Rv = {RV ,...,RV(v)},v =1,...,n,

n

R' = U Rv,

V=1

R* = {R1,...,Rf},

R' = R* \ R' - множество отношений, отсутствующих в промежуточных представлениях P , но присутствующих в пользовательском запросе.

Y = (R') П (R') - множество атрибутов, по которым отношения из P пересекаются с отсутствующими отношениями. По всем этим атрибутам должна быть осуществлена операция естественного соединения, чтобы гарантировать избавление от всех избыточных данных.

query - функция, осуществляющая запрос к серверу БД на получение данных пользовательского запроса.

Введем новые обозначения:

size - функция получения размера запроса. Эта функция применяется только к запросам, сохраненным в кэше, так что дополнительных запросов на сервер не требуется.

estimate - функция оценки размера запроса по формуле (8). На вход она получает массив отношений, на выход дает числовую оценку.

S = estimate(P*) - оценка мощности целевого запроса.

ст G [0,1] - коэффициент, задающий предел использования кэша. Если ст = 1, кэш будет использован вплоть до ситуации, когда объем требуемых дополнительных данных равен оцениваемому объему данных пользовательского запроса.

Алгоритм 2. Получение искомого представления данных с использованием кэша Вход: P, R*, F*, X*, S, ст Выход: R = P* X =[...] s = 0

for v =1 to n:

X' = Xv

n n

if (Rv) n ( U (Rw)) С Xv: X' = X' U (Rv) П ( U (Rw))

w=1 w=1

w=v w=v

if Y П (Rv)С Xv: X' = X' U Y n (Rv) if (F*) П (Rv) С Xv: X' = X' U (F*) n (Rv)

if X' = Xv:

s = s + size(Pv) X[v] = X' if s > ¿S: R = query(P*) else:

for i = 0 to N:

if X[i] = 0: Pi = query(пх(стд ( x R)))

RGRi

Pn+1 = query (nYu(F*>n(R'> (ctf* [<R'>]( x_ R)))

ReR'

R = пх* (стf* (P1 x ■ ■ ■ x Pn x Pn+1))

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

Заключение

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

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

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

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

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

Литература

1. P. Griffiths Selinger, M. M. Astrakan, D. D. Chamberlin et al. Access Path Selection in a Relational Database Management System // Proceedings of the 1979 ACM SIGMOD International Conference on Management of Data. SIGMOD '79. New York, NY, USA : ACM, 1979. P. 23-34.

2. Afrati Foto N., Li Chen, Mitra Prasenjit. Rewriting queries using views in the presence of arithmetic comparisons // Theor. Comput. Sci.. 2006. Vol. 368, № 1-2. P. 88-123.

3. Baralis Elena, Paraboschi Stefano, Teniente Ernest. Materialized Views Selection in a Multidimensional Database // Proceedings of the 23rd International Conference on Very Large Data Bases. VLDB '97. San Francisco, CA, USA : Morgan Kaufmann Publishers Inc., 1997. P. 156-165.

4. Bell David A, McClean Sally. Pragmatic estimation of join sizes and attribute correlations // Data Engineering, 1989. Proceedings. Fifth International Conference on / IEEE. 1989. P. 76-84.

5. Chao Tian-Jy, Egyhazy Csaba /.Estimating Temporary Files Sizes in Distributed Relational Database Systems // Proceedings of the Second International Conference on Data Engineering. Washington, DC, USA : IEEE Computer Society, 1986. P. 4-12.

6. Christodoulakis Stavros Estimating Block Transfers and Join Sizes // Proceedings of the 1983 ACM SIGMOD International Conference on Management of Data. SIGMOD '83. New York, NY, USA : ACM, 1983. P. 40-54.

7. Denny Matthew, Franklin Michael /.Predicate Result Range Caching for Continuous Queries // Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data. SIGMOD '05. New York, NY, USA : ACM, 2005. P. 646-657.

8. Epstein Robert S., Stonebraker Michael. Analysis of Distributed Data Base Processing Strategies // Proceedings of the Sixth International Conference on Very Large Data Bases. VLDB '80. VLDB Endowment, 1980. Vol. 6. P. 92-101.

9. Gupta Himanshu. Selection of Views to Materialize in a Data Warehouse // Proceedings of the 6th International Conference on Database Theory. ICDT '97. London, UK, UK : SpringerVerlag, 1997. P. 98-112.

10. Gupta Himanshu, Mumick Inderpal Singh. Selection of Views to Materialize Under a Maintenance Cost Constraint // Proceedings of the 7th International Conference on Database Theory. ICDT '99. London, UK, UK : Springer-Verlag, 1999. P. 453-470.

11. David Vengerov, Andre Cavalheiro Menck, Mohamed Zait, Sunil P. Chakkappen. Join Size Estimation Subject to Filter Conditions // Proc. VLDB Endow. 2015. Vol. 8, № 12. P. 15301541.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

12. Kalnis Panos, Papadias Dimitris. Proxy-Server Architectures for OLAP // SIGMOD

Conference / Ed. by Sharad Mehrotra, Timos K. Sellis. ACM, 2001. P. 367-378.

13. Keller Arthur M., Basu Julie. A Predicate-based Caching Scheme for Client-Server Database Architectures // VLDB J. 1996. Vol. 5, № 1. P. 35-47.

14. Mosin Sergey, Zykin Sergey. Truth space method for caching database queries // Modeling and Analysis of Information Systems. 2015. Vol. 22, № 2. P. 248-258.

15. Olston Chris, Jiang Jing, Widom Jennifer. Adaptive Filters for Continuous Queries over Distributed Data Streams // Proceedings of the 2003 ACM SIGMOD International Conference on Management of Data. SIGMOD '03. New York, NY, USA : ACM, 2003. P. 563-574.

16. Park Chang-Sup, Kim Myoung-Ho, Lee Yoon-Joon. Usability-based caching of query results in OLAP systems. // Journal of Systems and Software. 2003. Vol. 68, № 2. P. 103-119.

17. Scheuermann Peter, Shim Junho, VingralekRadek. WATCHMAN: A Data Warehouse Intelligent Cache Manager // Proceedings of the 22th International Conference on Very Large Data Bases. VLDB '96. San Francisco, CA, USA : Morgan Kaufmann Publishers Inc., 1996. P. 51-62.

18. Shim Junho, Scheuermann Peter, Vingralek Radek. Dynamic Caching of Query Results for Decision Support Systems // SSDBM. 1999. P. 254-263.

19. Зыкин Сергей Владимирович. Разработка и исследование моделей данных и средств организации взаимодействия пользователей с информационными ресурсами : Дисс. . . доктора наук : 06.12.05. ИМ СО РАН им. С. Л. Соболева. Новосибирск, 2005. 245 с.

Статья поступила в редакцию 15.01.2016; переработанный вариант - 22.03.2016.

Мосин Сергей Владимирович

аспирант, инженер-исследователь лаборатории методов преобразования и представления информации ИМ СО РАН (644043, г. Омск, ул. Певцова, 13), e-mail: svmosin@gmail.ru.

Cache usage algorithm for RDB queries

S. Mosin

This paper considers the approach for caching RDB queries based on the query logical conditions. An algorithm defining whether or not this query can be performed using cache is also presented. If any data is missed it can be retrieved from the server. The data size to be requested is estimated and compared with the one required for straight query execution because if the first is greater than the latter cache usage is not worthwhile. Improved estimation for joint operations with logical constraints is also proposed in this paper and is used for checking mentioned before.

Keywords: database, cache, query.

i Надоели баннеры? Вы всегда можете отключить рекламу.