УДК 004.652
Емельченков Е.П., Макаров А.И.
Смоленский государственный университет, г. Смоленск, Россия
ОДИН СПОСОБ ПРЕДСТАВЛЕНИЯ ОПЕРАЦИОННЫХ ДАННЫХ В РЕЛЯЦИОННОЙ
МОДЕЛИ
АННОТАЦИЯ
В статье рассматривается один способ ускорения выполнения унарных операций манипулирования данными в реляционных базах данных и приводится его математическое обоснование.
КЛЮЧЕВЫЕ СЛОВА
Реляционные базы данных; оперативные данные; операции манипулирования данными; ISAM.
Emelchenkov E.P., Makarov A.I.
Smolensk State University, Smolensk, Russia ONE WAY OF PRESENTING OPERATION DATA IN A RELATIONAL MODEL ABSTRACT
In the article one way to accelerate the implementation of the unary operations for manipulating data in relational databases is discussed and its mathematical foundation is provided.
KEYWORDS
Relational database; operational data; data manipulation operations; ISAM.
Статья посвящена решению проблемы ускорения выполнения унарных операции манипулирования данными: SELECT, INSERT, DELETE, UPDATE в реляционных базах данных. В основу решения проблемы положен метод проецирования хранящихся в базе данных на списковые структуры. Для использования этого метода нужно определить какои вид данных в наибольшеи степени для него подходит. Это обусловлено тем, что в теории реляционных баз данных существует понятие перманентных данных, заменившее ранее использовавшееся «операционные данные». Однако, в современных системах управления базами данных это, скорее, два различных термина.
Перманентные данные - это данные, использующиеся в приложениях поддержки принятия решения, в которых большее значение имеют операции реляционнои алгебры, в особенности декартово произведение (в языке SQL ему соответствует операция JOIN).
Операционные данные, хранимые для оперативных или производственных приложении баз данных, т.е. рутинных, часто выполняющихся приложении для поддержки повседневнои работы предприятия. Для таких сред используется понятие «Оперативная обработка транзакции» (On-Line Transaction Processing - OLTP) и имеет наибольшее значение скорость выполнения операции манипулирования данными, таких как SELECT, INSERT, DELETE, UPDATE, далее операции манипулирования оперативными данными.
Но следует заметить, что очень часто перманентные данные получаются или обновляются с определеннои периодичностью из операционных данных, хранимых в другои базе. Следовательно, объемы данных обоих типов одинаковы, но в современном понятии Big Data рассматриваются приоритетно перманентные данные, а операционные отходят на второи план. Реляционная модель данных имеет 4 ограничения для отношении (таблиц)[2]:
1. Каждыи кортеж содержит точно одно значение (соответствующего типа) для каждого атрибута;
2. Атрибуты не характеризуются каким-либо упорядочением (например, слева на право);
3. Кортежи не характеризуются каким-либо упорядочением (например, сверху вниз);
4. В отношении отсутствуют дубликаты кортежеи.
Нормализованность отношении предполагает, что каждыи кортеж для каждого из своих атрибутов имеет точно одно значение. Если же допускать любое множество элементов с фиксированнои структурои и заданными на нем операциями, как возможныи домен атрибутов, все возможные отношения находятся в 1 нормальнои форме.
В конечном представлении в виде таблицы, атрибуты (столбцы) имеют строгий порядок, но следует учитывать, что этот порядок необходим только для представления информации и не имеет значения в теории баз данных.
Реляционная модель данных предполагает отсутствие упорядоченности кортежеи. Утверждается [1], что «То обстоятельство, что тело отношения является множеством кортежеи, облегчает построение полного механизма реляционнои модели данных, включая базовые средства манипулирования данными - реляционные алгебру и исчисление». А также «Отсутствие требования к поддержанию порядка на множестве кортежеи отношения придает СУБД дополнительную гибкость при хранении баз данных во внешнеи памяти и при выполнении запросов к базе данных». Однако, из-за отсутствия упорядоченности сложность операции манипулирования оперативными данными возрастает до n - количества записеи в базе.
Отсутствие дубликатов кортежеи следует из отсутствия необходимости хранения уже имеющихся данных.
Эти четыре требования являются фундаментальными своиствами отношении в реляционнои модели баз данных и деиствительно облегчают работу с перманентными данными. Однако, как уже было замечено, для оперативных данных, большое значение имеют операции манипулирования оперативными данными, на которые третье требование накладывает ограничение на сложность, а значит и на время выполнения.
Если же отказаться в технологических целях от допущения неупорядоченности кортежеи, то можно рассматривать динамически упорядоченную модель данных, которую можно связать с реляционнои моделью, установив соответствие между данными и операциями в обеих моделях. Таким образом предлагаемая модель будет промежуточнои моделью между высокоуровневои, используемои на этапе проектирования реляционнои моделью, и низкоуровневои моделью вычислении, которая определяется характером и структурои вычислительнои системы [3]. Но это допущение следует из определения отношения, а значит для создания новои модели придется дать новое определение этому термину. Согласно С.Д.Кузнецову: "Для уточнения термина отношение выделяются понятия заголовка отношения, значения отношения и переменнои отношения. Кроме того, требуется вспомогательное понятие кортежа" [1].
Заголовком (или схемои) отношения r (Hr) называется конечное множество упорядоченных пар вида <A, T>, где A называется именем атрибута, а T обозначает имя домена, произвольного типа с фиксированнои структурои. По определению требуется, чтобы все имена атрибутов в заголовке отношения были различны.
Кортежем tr, соответствующим заголовку Hr, называется множество упорядоченных триплетов вида <A, T, v>, по одному такому триплету для каждого атрибута в Hr.
Телом Br отношения r называется произвольное множество кортежеи tr.
Значением Vr отношения r называется пара из множества Hr и Br.
Переменнои VARr называется именованным контеинер, которьш может содержать любое допустимое значение Vr.
Перед рассмотрением операции манипулирования оперативными данными в новои модели, следует описать структуру самих данных. Все кортежи хранятся в физическои памяти вычислительнои системы, не занимая место в ее оперативнои памяти, обращение к ним происходит только на заключительных этапах операции, с целью исключения потери времени на считывание. В оперативнои памяти хранятся двухуровневые индексы, созданные на основе индексно-последовательного метода доступа (ISAM). Таблица главных индексов представляет собои проекцию всеи базы на двухсвязныи список, где каждая запись состоит из значения атрибута Ai соответствующеи записи базы, ее адреса в физическои памяти (что является уникальным ключом), и двух полеи указателеи, необходимых для организации двухсвязного списка. Основным требованием к даннои таблице является ее упорядоченность по значению атрибутов Ai. Таблица вторичных индексов строится по всем правилам реляционнои модели, каждыи кортеж состоит из значения атрибута Ai, каждои k-ои записи, начиная отсчитывать с конца таблицы первичных индексов и адреса этои записи в оперативнои памяти. Таблица вторичных индексов получается упорядоченнои в обратном таблице первичных индексов порядке за счет упорядоченности последнеи и начала отсчета с конца. Таких пар таблиц должно содержаться по однои на каждыи, участвующии в построении предикатов, используемых в запросах, атрибут или набор атрибутов, для которых можно задать отношение порядка. Одним из оптимальных значении k является значение Vn^, если n -общее число записеи в базе данных. Тогда размер таблицы вторичных индексов будет [п — 1.
В новои модели операция SELECT является основнои среди операции манипулирования оперативными данными, так как будет задеиствована при выполнении любои другои операции. В
зависимости от предикатов, заданных в запросе, будет происходить обращение к однои или более парам индексных таблиц. Далее рассмотрим случаи использования одного предиката, легко обобщаемыи на большее их количество.
Пусть дан предикат П. Включающии в себя значение атрибута Ai. Необходимо среди вторичных индексов соответствующих данному атрибуту наити запись или записи, максимально близкие к истинному предикату, но не обращающие его в истинное тождество (к примеру, для предиката "Год выпуска" < 1890 и "Год выпуска" > 1700 - наити наименьшую из записеи , с атрибутом "Год выпуска" не меньшим 1890, либо наибольшую не меньшую 1700). Это возможно организовать с помощью дихотомического поиска, соответственно сложность этои части запроса составляет O(Log2(m)), где m - количество записеи в метаданных. Затем получив из наиденных записеи адреса соответствующих кортежеи первичных индексов, двигаться по списку в направлении значении, дающих истинныи предикат, пока не будет обнаружена первая удовлетворяющая ему запись, начиная с нее и до первои, не удовлетворяющеи предикату, по адресу в физическои памяти можно получать все указанные в запросе атрибуты. Либо считать k записеи доидя соответственно до следующеи записи в метаданных. В даннои части алгоритма, требуется прочитать не более k записеи для нахождения первого совпадения, соответственно ее сложность O(k). Суммарная теоретическая сложность получается O(k + Log2(m)).
Второи из основных операции, является операция INSERT Второи она рассматривается, потому что опирается на поиск записи в фаиле, при реализации же она имеет возможно первостепенное значение. При добавлении новои записи, она записывается на свободное место в физическои памяти, но в каждую из пар индексных таблиц необходимо внести сведения об изменении базы. Так, в таблице первичных индексов появляется новая запись, меняются ссылки двух соседних записеи, так как основои структуры является двухсвязныи список, а в таблице вторичных производится перерасчет. Поиск подходящего места для записи схож с запросом SELECT по предикату А= А\ новои записи, с небольшим изменением: считывание происходит до первого совпадения, либо первои записи, превзошедшеи по порядку значение Ai. Пересчет происходит из требовании к количеству записеи, разделяющих записи метаданных, их должно быть k штук. Для его реализации необходимо изменить все вторичные индексы, значения атрибута Ai которых не превосходит соответствующее значение добавленнои записи, на соседние для них первичные индексы, в порядке возрастания. Сложность операции INSERT будет складываться из сложности поиска и максимальнои сложности пересчета: O(k + Log2(m)) + O(m).
Однако следует заметить, что k и m могут принимать только целочисленные значения, а из их назначения к*т = п. Получается, что невозможно получить такие вторичные индексы, которые будут удовлетворять требованию: между записями, соответствующим двум соседним вторичным индексам, расположено строго k записеи. Максимально приближенным вариантом будет, когда при росте n, растут соответственно k и m.
Одним из способов решения даннои проблемы является создание внеиндекснои (для вторичных индексов) части таблицы, в которои будут накапливаться записи до определенного количества, а потом при пересчете, они будут включаться в существующие группы из k записеи, увеличивая значение k на один, либо образовывать новую группу увеличивая количество записеи в таблице вторичных индексов m на один. Таким образом может образоваться внеиндексная часть базы размером k или m записеи. Это увеличивает наибольшую сложность поиска, а следовательно, и добавления до O(max(k,m) + Log2(m)) и O(max(k,m)+ Log2(m)) + O(m) + O((m2+m)/2) , так как сложность увеличения количества записеи вторичных индексов сводится к добавлению адреса и значения наименьшего по порядку значения атрибута Ai и его адреса, а увеличение размера записеи к считыванию i = (т2 + т)/2 записеи: первыи вторичныи индекс сместится на одну первичную запись, второи - на две и так далее. Из сложности добавления легко заметить, что оптимальные значения удовлетворяют условию k > m. Тогда получаем сложности O(k+ Log2(m)) и O(k+ Log2(m) + (m2+3m)/2). Из сложностеи поиска и добавления, и смысла переменных k и m получаем систему ограничении:
к + Log2 (т) ^ min к + Log2(m) + (т2 + 3т)/2 ^ min. к* (т+ 1) >п
Не стоит забывать, что Big Data подразумевает собои огромное количество записеи, следовательно, Log2(m) имеет много меньшии порядок чем k или m, а значит этим значением можно пренебречь при вычислениях.
!к ^ min к + (т2 + 3т)/2 ^ min. к * (т + 1) > п
Из неравенства к * (т + 1) > п легко получить нижнюю границу значения k, а одно из ограничении системы утверждает, что k должно быть минимальным.
f k^min , к = п/(т+1)
\к + (т2 + 3т)/2 ^ min ~ ] п , , 2 , „ . .„ . .
, ^ , .. --+ (mz + 3m)/2 ^ mm
l к>п/(т+1) W+i v п
Остается наити оптимальное значение m. Рассмотрим функцию f(m)= (™-2 + 3т)/2.
Она непрерывна на D(f), f'(m)= (т+1)2 + т + 1.5. Функция убывает на (-ю;х) где х - решение уравнения + т + 1.5 = 0. Снова учтя цели решения даннои задачи, пренебрежем числом 0.5,
оставив уравнение вида +^+1 = 0. Его решением является m=[п — 1, тогда k= [п2.
Таким образом мы получили близкие к оптимальным значения k и m. И можем выразить сложности операции SELECT и INSERT через n учитывая все предыдущие допущения: 0([п2) -сложность операции SELECT, 0(1.5 [п2 + 0.5 [п) - сложность операции INSERT. Следует заметить, что это сложности в самых «неблагоприятных» случаях, когда искомои записи нет или, когда требуется изменение количества записеи, разделяющих вторичные индексы.
Операция DELETE может рассматриваться как обратная к INSERT. Следовательно, выполнять она должна те же шаги: искать нужную запись, менять ссылки соседних элементов в таблице первичных индексов, производить пересчет в таблице вторичных индексов, а также в определенных случаях изменять значения k и m в соответствии с изменяющимся n. Поиск происходит аналогично операции SELECT. Перерасчет представляет собои замену всех вторичных индексов, значение атрибута Ai которых не превосходит удаляемое, на соседние первичные в порядке убывания, если в таком случае один из вторичных индексов должен выити за пределы таблицы, то он удаляется, уменьшая значение m на один. Уменьшать значение k можно путем считывания i = (m2 + m)/2 записеи: первыи вторичныи индекс сместится на одну первичную запись, второи - на две, и так далее. Учитывая все описанные шаги - сложность удаления записи получилась равнои сложности добавления.
Последняя из не рассмотренных унарных операции манипулирования оперативными данными - UPDATE. Она состоит из поиска записи в которую необходимо внести изменения, собственно изменения и перемещения записи на соответствующее ее новым значениям место в таблица индексов. Поиск записи ничем не отличается от предыдущих. А вот изменение таблиц индексов является слиянием пересчета при операции DELETE и операции INSERT. После изменения данных необходимо удалить со старого места и изменить ссылки соседних элементов таблицы первичных индексов, и произвести пересчет таблицы вторичных, единственным отличием от выше описаннои операции является отсутствие необходимости в уменьшении значения k. Затем следует добавить «новую» запись на подходящее место операциеи INSERT, опять же без необходимости изменять k, так как оно сохранено предполагающим наличие этои записи. Сложность операции получается равнои 0( 2[п2 + 2[п). Однако, если не должны изменяться значения атрибута Ai, для которых построены таблицы индексов, то сложность сводится к обыкновенному поиску записи -
0( VF).
Данные определения данных, их структуры и операции над ними полностью описывают модель представления оперативных данных в реляционнои алгебре. Далее следует рассмотреть преимущества и недостатки использования именно такои модели в СУБД.
Одно из первых преимуществ - скорость поиска. За счет сокращения его сложности нет необходимости последовательного перебора всех данных базы, либо сортировки таблиц после добавления новых записеи. Выигрыш по сравнению с обычным поиском приблизительно в [п раз. Единственным ограничением является необходимость хранения таблиц первичных индексов в оперативнои памяти. Так как они представляют собои двухсвязные списки использование ссылок вне динамическои памяти значительно замедлит операции, за счет трат время на считывание данных из физическои памяти.
Тут же следует рассмотреть недостаток: при выполнении операции SELECT по более чем одному атрибуту необходимо задеиствовать в определеннои количество раз большее производительнои мощности, так как индексные таблицы никак не связаны между собои и поиск будет происходить по каждому и них, а затем будут выбираться общие наиденные записи. Решение этои проблемы может быть создание индекснои таблицы, имеющеи вместо поля данных атрибута Ai поле данных для нового атрибута Aii..ip представляющего совокупность данных Ai,...Ap с заданным для них отношением порядка.
Рис.1. Сравнение скорости поиска в данной модели и в классической
Второе преимущество - полная упорядоченность сразу по нескольким значениям атрибутов. В отличии от классической реляционной модели любая база данной модели упорядочена и не нуждается в сортировке ни для каких операции или выгрузки данных в удобных для пользователя виде. Достаточно просто считывать последовательно записи по однои из таблиц первичных индексов.
Недостаток относящиися к упорядоченности схож с предыдущим - если пользователю необходимо отсортировать по нескольким значениям атрибутов, расставив при этом приоритеты -этого сделать не удастся, так как таблицы индексов никак между собои не связаны. Решением опять же может стать новая пара таблиц индексов для атрибута Aii.jp представляющего совокупность данных Ai,...Ap с заданным для них отношением порядка.
И самьш большои из недостатков даннои модели тоже относится к требованию упорядоченности: усложнение, а как следствие и замедление, операции INSERT, DELETE и UPDATE. Для поддержания упорядоченнои структуры базы необходимо тратить лишние ресурсы на эти операции по сравнению с классическои моделью. Тут нет возможности предложить решение проблемы, можно ставить только задачи оптимизации выполнения этих операции, путем построения других алгоритмов, распараллеливания существующих, создания других структур данных. Однако, следует заметить, что выигрыш в поиске компенсирует добавление записеи, а значит в целом если количество операции SELECT будет не на много меньше количества остальных операции, то их продолжительность не будет заметна.
Самым большим плюсом является возможность организации многопоточного доступа к базе. Опираясь на идеи ISAM, если база не будет ограничена от такои возможности на физическом уровне, легко организовывается множественным доступ. Не одна из операции над одним атрибутом или набором атрибутов не требует создания более одного потока вычислении. Пересекаться потоки могут только при пересчете вторичных индексов, что может быть исключено уже при непосредственнои реализации даннои модели и не будет оказывать большого влияния на ее работу. Таким образом можно будет исключить время «простоя» базы, пока оперативные данные переводятся в другую базу и становятся перманентными. А значит помимо ускорения работы увеличивается само время доступное для работы.
Еще одним плюсом является отсутствие необходимости в хранении данных в открытом виде. Для полноценного функционирования базе достаточно таблиц первичных и вторичных индексов, в которых в «открытом» виде хранятся значения только некоторых полеи. Остальные же могут оставаться зашифрованными до момента их обработки. Что повышает защищенность данных от несанкционированного доступа, потому что даже достигнув оперативнои памяти невозможно получить полную информацию о базе, для этого надо обращаться к физическои памяти и нет помех для создания шифрования этого обращения. В то же время за счет «незащищенности» отдельных полеи база не теряет в производительности.
Подводя итог, еще раз обращаю внимание, что в даннои статье рассматривается представление именно оперативных данных и операции своиственные именно этому виду данных. Остальные операции реляционнои модели могут выполняться и на этои модели, так как она
является наследницей реляционной, но в большинстве случаев из-за особой структуры данных и описания унарных операции они будут выполняться намного медленнее, чем во многих других моделях. Но нет никаких помех при переводе оперативные данные из базы в даннои модели в перманентные данные другои, где уже в свою очередь и производить необходимые операции, а при необходимости загрузить обработанные данные обратно.
Литература
1. С.Д. Кузнецов. Основы баз данных. Учебное пособие 2-е издание, исправленное. Москва 2007. Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. - 484 с.
2. Дейт К. Дж. Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом "Вильяме", 2005. — 1328 с.
3. Мунерман В.И. Построение архитектур программно-аппаратных комплексов для повышения эффективности массовой обработки данных. - Системы высокой доступности, № 4, 2014, т.10, с. 3-16.
References
1. S.D. Kuznetsov. Osnovy baz dannykh. Uchebnoe posobie 2-e izdanie, ispravlennoe. Moskva 2007. Internet-Universitet Informatsionnykh Tekhnologiy; BINOM. Laboratoriya znaniy, 2007. - 484 s.
2. Deyt K. Dzh. Vvedenie v sistemy baz dannykh, 8-e izdanie.: Per. s angl. — M.: Izdatel'skiy dom "Vil'yame", 2005. — 1328 s.
3. Munerman V.I. Postroenie arkhitektur programmno-apparatnykh kompleksov dlya povysheniya effektivnosti massovoy obrabotki dannykh. - Sistemy vysokoy dostupnosti, № 4, 2014, t.10, s. 3-16.
Поступила 12.10.2016
Об авторах:
Емельченков Евгений Петрович, заведующии кафедрои информатики Смоленского государственного университета, кандидат физико-математических наук, [email protected];
Макаров Александр Ильич, студент физико-математического факультета Смоленского государственного университета, [email protected].