Сопоставление реляционной модели данных и принципов объектно-ориентированного программирования для разработки информационно-вычислительных систем

УДК519.6:004.4

Сопоставление реляционной модели данных и принципов объектно-ориентированного программирования для разработки информационно-вычислительных систем

Д.Е. Белов, к. б. н., А.Ф. Шалин, гл. специалист по информационной безопасности,

В.А. Астапов, инженер-программист

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

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

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

а) неизвестно, когда произойдет очередная вспышка АЧС;

б) неизвестно, где она произойдет;

в) неизвестно, какие показатели при этом захочет получать неизвестно какая структура с неизвестной периодичностью;

г) неизвестно, сколько времени потребуется для ликвидации очага АЧС и на какую территорию он распространится;

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

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

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

Для понимания данного вопроса постараемся провести аналогию и найти отличительные черты объектной и реляционной моделей. Для этого необходимо определиться с такими фундаментальными понятиями, как реляционная модель и «объектная модель». Так что же такое реляционная модель? Разделяя мнения Эдгара Кодда и Кристофера Дейта, определим реляционную модель как абстрактную теорию данных, основанную на некоторых областях математики (в основном на теории множеств и логике предикатов). Принципы реляционной модели были сформулированы в 1969 и 1970 годах Эдгаром Коддом, который в то время работал в корпорации IBM. Он впервые пришел к выводу, что для внедрения в сферу управления базами данных строгих и точных принципов можно использовать математические дисциплины. В то время данной области недоставало именно этих качеств. Идеи Кодда впервые подробно были изложены в статье «Relational Model of Data for Large Shared Data Banks», ставшей наиболее фундаментальным трудом в этой области.

Итак, реляционная модель имеет в своем основании достаточно строгое математическое обоснование, которое определяет отношение R как n-арное множество кортежей, состоящее из множеств S1, S2, ..., Sn, выражаемых доменами d, определенными типами данных jj.

R с {Sl\S = dh }

R а {£2|£ = dh }

R с {Sn\s = dh }

Что касается «объектной модели», то необходимо отметить, что она стала продуктом эволюции более ранних методологий программирования.

Возрастание сложности стимулировало многочисленные прикладные исследования по методологии проектирования программного обеспечения, особенно в области декомпозиции, абстракции и иерархии. Это способствовало также появлению более выразительных языков программирования, в том числе java. «Объектная модель» употребляется в кавычках, так как, говоря о ней, мы подразумеваем технологию объектно-ориентированного

программирования, которая оперирует такими понятиями, как: о абстракция; о наследование; о композиция; о полиморфизм.

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

Казалось бы, две совсем разные теории! Есть ли способ их совместить? Как это ни парадоксально, ответ на этот вопрос кроется в объектно-ориентированной технологии. Сформулируем его следующим образом: если объектами можно описать все, что угодно (Земля, дом, машина, колесо, молекула, атом, электрон, бозон и т.д.), значит, ими можно описать отношения, кортежи и домены. В таблице приведено сопоставление реляционной модели и «объектной модели».

Таблица - Сравнение реляционной и «объектной моделей»

Реляционная модель

Отношение Контейнер объектов

Кортеж Объект класса

Домен Поле

Несмотря на, казалось бы, всю простоту данной аналогии при использовании выбранной нами технологии «объектно-реляционного связывания» (ORM - object relation mapping), реализованного на основе JPA (java persistence API), происходит сужение реляционной модели. В результате возникают следующие негативные побочные эффекты:

a) в объектной модели перестают работать основные концепции теории множеств, то есть мы не можем выполнять над коллекциями объектов операции, присущие множествам, такие как пересечение, объединение, разность и прямое или Декартово произведение, что доступно в реляционной модели;

b) класс должен являться проекцией отношения базы данных, то есть, описывая класс, мы должны на этапе написания программы задать все его поля и методы для извлечения, сохранения, обновления и удаления данных. Динамически (во время исполнения программы) этого эффекта добиться невозможно, так как в языке программирования java отсутствуют возможности динамического сознания и модификации классов на стадии выполнения программы. Другими словами, отсутствует аналог DDL (data definition language) в реляционной модели.

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

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

применения множественных операций.

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

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

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

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

Существует несколько подходов к логированию действий пользователей в системе, таких как полное ведение лога, для определенных DML- и DDL- операций, ведение полного лога для определенных критических сущностей, частичное ведение лога по правилам «последней порчи», все они имеют как достоинства, так и недостатки.

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

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

класса, в котором были определены методы, позволяющие из сессии получать Ю-пользователя, его ^-адрес, создавать актуальное время транзакции и сохранять данные в системе (рис. 1).

Как видно из представленной на рисунке 1 диаграммы, корневым классом является AbstractBean, от которого наследуются все классы в системе. Именно этот класс обладает методами, позволяющими проводить системное логирование всех остальных классов.

Рисунок 1 - UML-диаграмма доменной модели классов для организации

логирования в системе.

Однако при рассмотрении данной модели остается открытым один вопрос - каким образом компилятор узнает фактический тип объекта, с которым ему необходимо работать? Ответ на этот вопрос кроется в феномене полиморфизма, который поддерживает язык java. То есть во время компиляции программы фактический тип используемого объекта неизвестен, он загружается лишь на стадии выполнения программы. А значит, во время выполнения программы мы можем получить доступ ко всем методам класса (используя Java Reflection API), который фактически используется пользователем, и так как он точно будет являться наследником AbstractBean, то мы можем применять к нему методы базового класса, используя восходящее преобразование.

Литература:

1. Абонеев В.В. Стратегия развития овцеводства в Российской Федерации /В.В. Абонеев //Достижения науки и техники АПК. -2008.-№10. -С.37-39.

2. Абонеев, В.В. Методика оценки мясной продуктивности овец /В.В. Абонеев, Ю.Д. Квитко, И.И. Селькин и др. //Ставрополь, 2009. -34с.

3. Абонеев, В.В. Перспективные направления селекции овец в условиях рыночной экономики /В.В.Абонеев, А.Н. Соколов //Овцы, козы, шерстяное дело. -2007. -№1. -С.7-11.

4. Абонеев, В.В. Приемы и методы повышения конкурентоспособности товарного овцеводства /В.В. Абонеев, Л.Н. Скорых, Д.В. Абонеев //ГНУ СНИИЖК, Ставрополь. -2011. -337с.

5. Абонеев, В.В. Развитие тонкорунного овцеводства в России /В.В. Абонеев, В.В. Марченко, А.И. Суров, А.А. Пикалов, А.И. Ерохин, С.А. Карасев //Овцы. Козы. Шерстяное дело. -2012. -№ 2. - С.6-13.

6. Василенко, В.Н. Племенная база овцеводства Ростовской области /В.Н. Василенко, Ю.А. Колосов //Зоотехния, 2002. -№8. -С.9-12.

7. Завгородняя, Г.В. Мясная продуктивность баранчиков разных генотипов и уровней кормления /Г.В. Завгородняя, Ю.Д. Квитко, И.И. Дмитрик, И.П. Будякова, И.Н. Шарко //Овцы. Козы. Шерстяное дело, 2012. -№2 -С.42-44.

8. Квитко, Ю.Д. Мясная продуктивность и качество мяса молодняка овец разного происхождения /Ю.Д. Квитко, А.В. Скокова, С.Ф. Силкина //Овцы. Козы. Шерстяное дело, 2012. - № 2. - С.39-41.

9. Квитко, Ю.Д. Проблемы и новые подходы в организации производства баранины /Ю.Д. Квитко //Сборник научных трудов Ставропольского научно-исследовательского института животноводства и кормопроизводства, 2005. -Т.1. -№2. -С.3-7

10. Ковалюк, Н.В. Использование генетического маркера BOLA-DRB3 для оптимизации селекционного процесса при скрещивании /Н.В. Ковалюк, В.Ф. Сацук //Молочное скотоводство, 2010.-№2.-С.10-12.

11. Ковалюк, Н.В. Методические рекомендации по использованию маркера ВоЬА DRB3 в селекционно-племенной работе с крупным рогатым скотом /Н.В. Ковалюк, В.Ф. Сацук //Рекомендации СКНИИЖ. -Краснодар, 2010. -24с.

12. Ковалюк, Н.В. Молекулярно-биологические методы для оздоровления стад крупного рогатого скота от лейкоза /Н.В. Ковалюк //Ветеринария, 2008. -№2. -С.22-26.

13. Ковалюк, Н.В. Современные методы диагностики лейкоза крупного рогатого скота /Н.В. Ковалюк, В.Ф. Сацук, Е.В. Мачульская //Вестник Кубани, 2007. -№ 1.

14. Ковалюк, Н.В. Современные методы диагностики лейкоза крупного рогатого скота /Н.В. Ковалюк, В.Ф. Сацук, Е.В. Мачульская //Ветеринария Кубани, 2007. -№ 1. -С.18-20.

15. Колосов, Ю.А. Информационное сопровождение селекционного процесса в овцеводстве: учебное пособие /Ю.А. Колосов, А.И. Бараников, В.Н. Василенко, Н.В. Михайлов //Изд-во Донского ГАУ, пос. Персиановский, 2012. -55с.

16. Колосов, Ю.А. Модель организации селекционно-племенной работы в овцеводстве с применением метода зависимых уровней отбора /Ю.А. Колосов, И.В. Засемчук //Новочеркасск, 2008.-С.76.

17. Колосов, Ю.А. Продуктивность молодняка породы советский меринос и её помесей с эдильбаевскими баранами /Ю.А. Колосов, С. В. Шихов //Овцы, козы, шерстяное дело, 2006. -№ 3. -С. 7-10.

18. Новопашина, С.И. Переваримость питательных веществ рациона молочными козами при разном уровне протеина /С.И. Новопашина, Ю.Д. Квитко, М.Ю. Санников, Е.И. Кизилова //Овцы. Козы. Шерстяное дело, 2012. -№ 2. - С.64-67.

19. Ольховская, Л. В. Иммуногенетический анализ в селекции коз/Л. В. Ольховская, Л. Н. Чижова и др. //Ставрополь. ВНИИОК, 2000. -С. 3-11.

20. Тимошенко, Н.К. Рынок шерсти: состояние и тенденции развития. /Н.К. Тимошенко, В.В. Абонеев //Овцы, козы, шерстяное дело, 2012. -№2. -С.50.

21. Тимошенко, Н.К. Состояние и перспективы развития первичной обработки шерсти /Н.К. Тимошенко //Овцы, козы, шерстяное дело, 2007. -№4. -С.46-50.

22. Чижова Л.Н. Методические рекомендации комплексной оценки крупного рогатого скота мясных пород по фенотипу и генотипу /Л.Н. Чижова и др. //Ставрополь, 2008. -52с.

23. Чижова, Л. Н. Биохимические тест-системы, генетические маркеры продуктивности, их использование в селекции овец /Л.Н. Чижова //Автореф. дисс.... д-ра с.-х. наук. -Ставрополь, 2004. -58с.

24. Cod, E.F. Eхtending the database relational model to capture more meaning. - ACM Trans. on Database Systems, 1979, N4. - pp. 397 - 434.

25. Codd, E.F. A Relational Model of Data for Large Shared Data Banks. Comm. of ACM, vol. 13, N 6, 1970. - p. 377 - 387.