Distributed System L-8 (Лекции по распределённым системам)
Описание файла
Файл "Distributed System L-8" внутри архива находится в папке "Лекции по распределённым системам". PDF-файл из архива "Лекции по распределённым системам", который расположен в категории "". Всё это находится в предмете "распределённые системы" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "распределённые системы" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
РаспределенныевычислительныесистемыЛекция №8:Долговременное хранениераспределенных объектовАлексей В. Бурдаков, к.т.н.burdakov@usa.net8-1План лекции• Концепция долговременного хранения объектов• Применение хранилищ данных•Файлы•РСУБД•ОСУБД8-21Объекты с внутреннимсостоянием и без него• Объекты в распределенной вычислительнойсистеме могут быть:• С внутренним состоянием (statefull)• Атрибуты в определении интерфейса – достаточное, но ненеобходимое условие• Внутренние переменные экземпляра• Без внутреннего состояния (stateless)• Долговечными (persistent) – продолжающиесуществовать и после завершения процесса• Использование энергонезависимой памяти• Временными (transient)• Хранение в энергозависимой памяти• Пример: служба именования• statefull• persistent8-3Долговременное хранение(persistence)• Долговременное хранение - способность объектапереживать процесс, в котором он находится• Состояние должно запоминаться на промежутокдеактивации и активации8-42Как реализоватьдолговременное хранение?• Сохранить объект на постоянном носителе додеактивации• Восстановить объект с постоянного носителяпосле активации• В качестве хранилища может использоваться:•Файловая система•Реляционная СУБД•ООСУБД•Флэш-память8-5Прозрачностьдолговременного хранения• Долговременное хранение должно бытьпрозрачным как для пользователей, так и дляпроектировщиков клиентских объектовКлиентскиеобъектыСерверныеобъектыКлиентскийинтерфейсХранимыеобъектыИнтерфейсдолг.
хранения8-63Концепции долговременногохраненияОбъектыХраненияВоплощениеобластихраненияХранилищеданныхСессииОбластихраненияВоплощениеобъектахранения8-7Основные понятия• Хранилище данных (datastore) - абстрактноепонятие, охватывающее различные технологиихранения - от файлов до ООБД, пример: БД• Область хранения (storage home) - контейнер,содержащий долговременные представленияхранимых объектов, пример: таблица• Объект хранения (storage object) представление состояния объекта-сервера вобласти хранения, пример: запись в таблице РБД• Тип хранения (storage type) - определяетинтерфейс объекта хранения8-84Основные понятия• Воплощение объекта хранения (storage objectincarnation) - представление объекта хранения впроцессах, является объектом языкапрограммирования• Воплощение области хранения (storage homeincarnation) - представление экземпляра областихранения на языке программирования• Ключ - атрибут, однозначно идентифицирующийобъект хранения в пределах области хранения• Сессия - логическая связь между хранилищемданных и процессом, в котором выполняетсяобъект-сервер8-9Пример• Долговременное хранение объектов сервисаименованияUEFAQPRPremierMUn anitedternea1.Ka FCiserstdEnuthSo itedUnelsBochuFirsChnManchesterUnitedternLauyerBaBVBEnglandlau2.gam1.
LigaLinyCup rseWinnGerma8-105PSSDL - Язык определения службыдолговременного хранения• PSSDL (Язык определения состояний службыдолговременного хранения) - строгоесупермножество языка CORBA/IDL• Дополнительно обеспечивает определение:•объектов хранения•областей хранения•ключей8-11Определение типов хранения// file NamingContextState.pssdl#include <CosNaming.idl>storagetypespec NamingContextState{Object resolve(in CosNaming::NameComponent n)raises(CosNaming::NotFound, CosNaming::CannotProceed,CosNaming::InvalidName);void bind(in CosNaming::NameComponent n, in Object obj)raises(CosNaming::NotFound, CosNaming::CannotProceed,CosNaming::InvalidName, CosNaming::AlreadyBound);void unbind(in CosNaming::NameComponent n, in Object obj)raises(CosNaming::NotFound, CosNaming::CannotProceed,CosNaming::InvalidName);void rebind(in CosNaming::NameComponent n, in Object obj)raises(CosNaming::NotFound, CosNaming::CannotProceed,CosNaming::InvalidName); };Storagehomespec NamingContextStateHome of NamingContextState {ref <NamingContextState> create();};8-126Архитектура сервисапостоянного храненияРеализациясерверного объектаВоплощение хранимого объектаВоплощение области храненияИнтерфейс управленияСоединениями и сессиямиОбъект хранения иСхема области храненияПрикладной интерфейсхранилища данныхХранилище данных8-13Компилятор с языка PDLСпецификацииОбласти храненияи типа хранения(PSSDL)РеализацииОбласти храненияи типа хранения( Язык прогр.)PDLкомпиляторСхемаОбласти храненияи типа хранения8-147Применение хранилищ данныхдля организации постоянногохранения8-15Технологии хранения• Файлы•Экстернализация CORBA•Сериализация Java•Структурированное хранение COM• Реляционные СУБД•Объектно-реляционное отображение•JDBC/ODBC• Объектные БД•Versant•O28-168Экстернализация в CORBA• Технология, позволяющая:•Записывать композитные объекты в бинарного потока•Считывать композитные объекты из бинарного потока• Бинарный поток может быть сохранен в илисчитан с файловой системы• Поддерживается реализациями CORBA (службаэкстернализации)8-17Служба экстернализации вCORBA• Спецификация принята в 1994 г.• Для обеспечения интероперабельностиразличных реализаций спецификациястандартизировала:•Формат хранения атомарных типов данных•Способ представления сконструированных данных8-189ИнтерфейсыэкстернализацииStreamableFactoryIdentifiableObjectLifeCycleObjectStreamableStreamStreamIOStreamFactoryRelationshipNodeRole8-19Сценарий экстернализацииc: TeamMgmntsf:StreamFactorycreate()sio:StreamIOs:Streamexternalize(t)t:Teamexternalize_to_stream(sio)write_string(t->name())write_object(player1)write_object(player2)8-2010Сценарий интернализацииc: TeamMgmnts:Streaminternalize(ff)sf:StreamableFactoryff:FactoryFindersio:StreamIOfind_factories("Team")create_uninitialized()internalize_from_stream(sio,ff)t:Teamname=read_string()player1=read_object()player2=read_object()8-21Сериализация в Java• Перевод объектов Java в поток• Отслеживает все объекты на которые естьссылки• Поток может быть записан в файл• Объекты должны реализовывать интерфейсSerializable• Атрибуты, которые нет необходимости хранитьдолговременно, могут быть продекларированы вопределении класса как transient8-2211Сериализация в Java: Типы<<Interface>>SerializableObjectInputFileInputStreamObjectOutputFileOutputStreamSessionPortableNCtxState8-23Сценарий сериализации вJava: POA: Session1: flush()o : ObjectOutputs : FileOutputStreamt:PortableNCtxState2: s=new ()3: o=new(s)4: writeObject(t)5: flush()8-2412Интерфейсы долговременногохранения в СОМIPersistStream позволяет представлятьобъекты в виде бинарныхпоследовательностейIPersistFile позволяет сохранять объектыв байтовый поток<<Interface>>IUnknown<<Interface>>IPersist+ GetClassID()<<Interface>>IPersistStorage+ IsDirty()+ InitNew()+ Load()+ Save()+ SaveCompleted()+ HandsOffStorage()<<Interface>>IPersistStream+ IsDirty()+ Load()+ Save()+ GetSizeMax()<<Interface>>IPersistFile+ IsDirty()+ Load()+ Save()+ SaveCompleted()+ GetCurFile()8-25Структурированное хранение вСОМ• СОМ также поддерживает структурированноехранение объектов• СОМ поддерживает композицию объектов –помещение объектов в объекты – контейнеры(например объект Word содержащий Excel)• Объекты-контейнеры управляют жизненнымциклом хранящихся в них объектов• Позволяет применять инкрементную загрузку иизменение, а также вложенное хранение8-2613Проблемы, связанные сдолговременным хранением вфайлах• Отображение в файлы может бытьнеэффективным (большие издержки наобработку потоков) для больших композитныхобъектов• Файловые системы обеспечивают примитивный ислабый контроль за одновременным доступом(например, нет контроля за взаимнымиблокировками и т.п.)• Файловые системы не обеспечиваютотказоустойчивость (транзакции)8-27РСУБД• Примеры РСУБД:•Ingres•Oracle•Sybase•DB2•Microsoft SQL Server•Microsoft Access• Основаны на реляционной модели•Таблицы•Кортежей•Неструктурированных (атомарных) атрибутов8-2814Отображение в РСУБД• Схема РСУБД состоит из набора таблиц• Определяется таблица для каждого типа• В каждой таблице создается•Первичный ключ для идентификации объекта•Колонка для каждого атрибута объекта•Отображение атомарных типов ПО среднего слоя напримитивные типы, поддерживаемые РСУБД•Вторичные ключи для объектных ссылок• Статическое разрешение наследования8-29Отображение в РСУБД:Пример• Создать схему для данных сервиса именования:CREATE TABLE NamingCtxts (id TEXT, objref TEXT,CONSTRAINT c1 PRIMARY KEY (id))CREATE TABLE Bindings (id TEXT, name TEXT, kind TEXT, objref TEXT,CONSTRAINT c2 PRIMARY KEY(id))CREATE TABLE NameBindings (nctx TEXT, bind TEXT,CONSTRAINT c3 FOREIGN KEY(nctx) REFERENCES NamingCtxts(id),CONSTRAINT c4 FOREIGN KEY(bind) REFERENCES Bindings(id))8-3015Таблицы хранилища сервисаименованияnctx78844556611133227bind10111213141516171823456789NameBindingsBindingsid110111213141516171823456789idkindUEFANCtxBayernTeamBochumTeamLauternTeamKaiserslauternTeamManchester United TeamMan UnitedTeamChelseaTeamQPRTeamSouth End United TeamGermanyNCtxEnglandNCtxCup WinnersNCtxPremierNCtxFirstNCtx1.
LigaNCtx2. LigaNCtxBVBTeamid objref1 lasd098asjasfd08lasdsfhasdf02 kljsadpoweurasldkfjasofduqels3 aslkjdksahdfksgdf9qeijksadhfs4 ashkw09we4ty0slajdfhisafsgfsobjref5 saldkjfdasldkjfalsdkfh0828lsdjlasd098asjasfd08lasdsfhasdf06 sosdihfw9y4t02-1jwohfkasjdnf7 lsadkfh924357109ejaojkasbjaasldhf2y4395-qFDOhdsfksadh8 asldkjfh29y35r-q[ofdhdasldgj2kasdughf92ry5u-0ASPSDFAKkasjsdhf923r5-00OSADFISAGkasjsdhf923r5-00OSADFISAGlasasaskjhasldjfadfh293ruasldlasasaskjhasldjfadfh293ruasldksajdfgw4y250-2=0sdhfkasjgsaksdhf9245-qSIDHFOASFaslh33i4y50wswfahsdkfjh29345yoakljsadpoweurasldkfjasofduqelsaslkjdksahdfksgdf9qeijksadhfsashkw09we4ty0slajdfhisafsgfssaldkjfdasldkjfalsdkfh0828lsdjsosdihfw9y4t02-1jwohfkasjdnflsadkfh924357109ejaojkasbjaasldkjfh29y35r-q[ofdhdasldgj2ksaldfhqweoiry[pa\sonasglsas8-31NamingCtxtsЗапросы• Разрешение привязки именSELECT Bindings.objrefFROM Bindings,NameBindings,NamingCtxtsWHERE NamingCtxts.objref="lsadkfh924357109ejaojkasbja" ANDBindings.name="BVB" ANDBindings.id=NameBindings.bind ANDNamingCtxts.id=NameBindings.nctx• Получение всех привязок для контекстаSELECT Bindings.name_id,(SELECT name_idFROM BindingsWHERE Bindings.id=NameBindings.naming_context)FROM NameBindings,BindingsWHERE NameBindings.binding=Bindings.id8-3216Реализация запросов впрограммах• Внедренный SQL• ODBC (Open Database Connectivity –Microsoft)• JDBC (Java Database Connectivity – Sun)8-33Проблемы, связанные схранением в РСУБД• Долговременное хранение в РСУБД– Осложняется несовпадением импеданса (impedancemismatch)– Просто реализуемо за счет широкого распространения идоступности РСУБД• Долговременное хранение в ОСУБД– Упрощено за счет концептуальной схожести• Объектных моделей• Связываний языка программирования8-3417Объектные СУБД• Стандартизацию в области ОСУБД проводитObject Database Management Group – ODMG• Организована в 1991 г.
разработчикамиОСУБД (GemStone, O2, ObjectStore, Objectivity,Poet, Versant)• В качестве исходной платформы длястандарта на ряду с прочим был использованстандарт CORBA 1.0 для обеспечения:– Переносимости приложений между ОСУБД– Интероперабельности с архитектурой CORBA8-35Стандарт ODMG• ODMG опубликовала 3 основных версии стандарта:• 1.0 в 1993 – базовый стандарт, связывание с С++ иSmalltalk• 2.0 в 1997 – дополнено связыванием с Java,изменения в объектной модели, расширениястандарта, определение репозитария метаданных• 3.0 в 2000 – существенное расширение связывания сязыками (организация постоянного хранения)8-3618Стандарт ODMG• Объектная модель является расширением объектноймодели OMG/OMA• Язык определения схемы – ODL (Object DefinitionLanguage) является расширением OMG/IDL• Связывание с программными языками– С++– Java– Smalltalk• Язык объектных запросов (OQL)• Поддержка долговременного хранения дляуказанных языков программирования• ODMG участвовал в разработке стандарта PSS8-37Пример: контекст именованияв ODLtypedef NameComponent struct {string id;string kind;};typedef struct ListElement {NameComponent name;Object obj;};interface ODLPortableNctxState {list<ListElement> m_list;extent ODLPortableNctxStateHome;Object resolve(in NameComponent n);void bind(in NameComponent n, in Object obj);void unbind(in NameComponent n, in Object obj);void rebind(in NameComponent n, in Object obj);};8-3819Отображение в ОСУБД• ОСУБД устраняют проблему «несовпаденияимпеданса» за счет использования объектноймодели• Поддерживают хранение композитныхобъектов уменьшая время выборки объекта(нет необходимости его «сборки»)• Поддерживают ассоциативные связи, чтопозволило использовать более быстрыеметоды навигации по таким связям• Поддерживают связи иерархии, упрощающиеопределение классов/интерфейсов8-39Сравнение различных методовхранения: ФС, РСУБД, ОСУБД• Долговременное хранение в файлах––––Нет затрат на лицензированиеЭкстернализация не является прозрачной для реализаций объектовОтсутствует контроль за одновременным доступомНе обеспечивает отказоустойчивость• Долговременное хранение в РСУБД– Просто реализуемо за счет широкого распространения и доступностиРСУБД– Осложняется «несовпадением импеданса»• Долговременное хранение в ОСУБД– Упрощено за счет концептуальной схожести объектных моделей– Связываний языка программирования8-4020Основные моменты• Долговременное хранение реализуется длясерверных объектов с внутренним состоянием• Долговременное хранение прозрачно дляразработчиков и проектировщиков клиентскихобъектов• Реализация долговременного хранения м.б.реализована с помощью Persistent State Service• PDL используется для определения структурданных для долговременного хранения8-41Основные моменты• Долговременное хранение м.б.
реализовано спомощью– Файловой системы– РСУБД– ОСУБД• Компилятор PDL автоматически генерируетреализацию долговременного хранения– Генерирует схему РБД– Генерирует операции доступа для сохранения илизагрузки состояния8-4221Литература / Internetисточники• В. Эммерих Конструирование распределенныхобъектов. - М.:Мир. - 2002.• М.Р. Когаловский Энциклопедия технологий базданных. - М.: ФС. - 2002.• Ю.А.
Григорьев, А.Д. Плутенко. - Жизненный циклпроектирования распределенных баз данных. Благовещенск. - 1999.• Э. Таненбаум, М. Ван Стеен Распределенныесистемы. Принципы и парадигмы. – СПб.: Питер,2003. – 877 с.: ил. – (Серия «Классика computerscience»)• www.omg.org8-4322.