Ортогональная персистентность (ОП)
Nov. 23rd, 2006 11:09 amСам текст "Всеобщая "объектная ориентация" принадлежит перу Андрея Зубинского, напечатан в Компьютерное Обозрение, #40, 18 - 24 октября 2000 электронный вариант найти можно на ITC Online - Новости, обзоры, тесты, аналитика, рынок IT, форум, объявления, работа.
Интересна тем, что именно свойство ортогональной персистентности требуют от f2f заинтересованные лица.
Я привёл только отрывок - вторую часть статьи:
Ортогональность в этом определении подразумевает "полную взаимную независимость особенностей и возможностей". Такое туманное толкование на деле означает отсутствие необходимости изучения и использования всех особенностей и возможностей некоторой системы в тех случаях, когда для решения задачи с помощью этой системы достаточно только знания/использования их ограниченного набора. Ортогональность -- исключительно важное свойство для всех хорошо спроектированных систем и, в первую очередь, оно характеризует даже не удобство, а более емкую "пригодность к использованию" (usability). К слову, многие популярные технологические средства программирования хронически страдают "неортогональным характером". Так, язык программирования С++ подвергается серьезной и обоснованной критике не столько за сложность языковых конструкций, сколько за их взаимосвязь (что вынуждает программистов расплачиваться за использование той или иной возможности языка знанием всех нюансов "сопутствующих" конструкций).
Персистентность же означает "постоянство существования". Все персистентные объекты обладают общим свойством -- они есть всегда (до момента принудительного стороннего уничтожения), вне зависимости от работоспособности аппаратных средств, поддерживающих "существование" этих объектов, каналов связи и прочих, "сторонних" по отношению к самим объектам, факторов. С точки зрения рядового потребителя "плодов информационных технологий", персистентный характер, например, текстового редактора, означает, что создаваемое с его помощью бессмертное литературное произведение не надо периодически сохранять активацией соответствующей команды меню (хотя эта возможность и не исключается), при аппаратных сбоях текст не утратит ни одного символа, а после "перезагрузки" компьютера будет автоматически восстановлено точное и полное состояние программы в момент сбоя.
Объединение двух терминов ("ортогональность" и "персистентность") формирует, скажем так, уточненное понятие "постоянства существования": этим свойством должны обладать все объекты системы (то есть не может быть "чуточку ортогонально персистентных" объектов), и для всех объектов обеспечивающие персистентность механизмы должны быть с точки зрения пользователя/программиста одинаковыми (иначе ни о какой ортогональности и речи быть не может).
ОП -- ООП
Полноценная реализация ОП в рамках объектно-ориентированной технологии и является тем самым "сильнодействующим" лекарством, которое действительно необходимо современным разработчикам. Ортогонально-персистентные объекты уже являются и "овеществленными", так как требование ортогональности заставляет "упрятывать" (инкапсулировать) в объект механизмы управления "постоянством существования", и "живучими" (по определению персистентности). И наконец, они не предъявляют никаких ограничений на форму представления содержания -- в них могут храниться и таблицы, и растровые картинки, и 3D-модели, и даже метаданные. Все три "прокрустовых ложа" устранены с помощью одной концепции!
Но... на теоретическом уровне. Практика, увы, особых сюрпризов не приносит. Единственная область, в которой концепция ортогональной персистентности активно развивается и достигла коммерческого уровня, -- системы управления базами данных. А именно -- объектно-ориентированные СУБД. Пока только они (и несколько исследовательских операционных систем) представляют собой "частную реализацию ОП". В отличие от классических (реляционных), ОО СУБД не навязывают табличного характера данных. Более того, он этим СУБД "абсолютно безразличен".
На уровне объектно-ориентированных языков программирования работа с ОО СУБД практически ничем не отличается от работы с "живущими во время исполнения программы" объектами (хороший пример ортогональности): данные-объекты просто наследуют свойства основного класса ОО СУБД, в который инкапсулированы все необходимые операции с базой данных и скрытая управляющая информация системного характера. Самое важное характерное отличие ОО СУБД -- хранение именно объектов, а не содержимого данных, подразумевающее целостность не только самих данных, но и состояний операций, над ними производимых (персистентность).
Спектр существующих реализаций ОО СУБД обширен. Есть так называемые "встраиваемые системы", используемые в качестве программных компонентов в проектах, разрабатываемых на объектно-ориентированных языках программирования (в первую очередь -- C++ и Java, например недорогая и популярная система Poet одноименной американской компании. На более высоком уровне находится система одного из лидеров рынка ОО СУБД -- Versant Corporation. И наконец, "вершиной" функциональной насыщенности можно по праву считать интегрированную систему Jasmine разработки Computer Associates, ориентированную на применение в системах электронной коммерции. Создателям Jasmine удалось почти полностью реализовать потенциал ОО СУБД за счет интеграции механизмов ОП с элементами систем "разведки данных" (data mining) -- нейронными сетями и Internet-интерфейсами.
В области НИР и НИОКР тема ОП остается актуальной и исключительно интересной. Полноценная реализация ОП, естественно, требует радикальных изменений в теории и практике проектирования операционных систем и языков программирования. С некоторыми достижениями в этих областях можно ознакомиться на сайтах разработчиков ОП ОС Grasshopper, Mungi, ядра и системного окружения ОС Brix. Наиболее отважные могут попробовать "на вкус" работоспособную ОС Eros с открытыми исходными текстами.