Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемГалина Ларюшкина
1 Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей
2 Современные языки программирования ЯзыкИндекс* 1Java19.711%+2.20% 2C15.262%-2.02% 3C %-0.86% 4C#7.210%+2.95% 5PHP6.566%-3.34% 6Python5.737%+1.51% 7(Visual) Basic4.710%-1.86% 8Objective-C3.518%+1.55% 9Perl1.969%-1.85% 10JavaScript1.866%-0.78% * TIOBE Programming Community Index, март 2011
3 Объектная модель данных Один из наиболее популярных классов ЯП – объектно-ориентированные языки со строгой типизацией Модель данных –Аспект структуры –Аспект манипуляции –Аспект целостности Объектная модель данных –Класс –Ассоциация, агрегация, наследование –Строгая типизация Каждый объект имеет определенный тип Для любой операции определяются типы входных и выходных параметров
4 Функции СУБД Функции, предоставляемые СУБД –Управление данными во внешней и оперативной памяти –Журнализация изменений, резервное копирование и восстановление данных –Поддержка языков БД (SQL) Основные требования: –Надежность, устойчивость –Производительность –Многозадачность Наиболее популярные СУБД основаны на реляционной модели данных
5 Проблема объектно- реляционного отображения Объектная модель – во время выполнения приложения Реляционная модель – для использования функциональности СУБД Интерфейс БД
6 Может быть определен в терминах объектной модели Может быть строго типизированным Интерфейс БД
7 Содержание доклада Существующие подходы к решению проблемы объектно-реляционного отображения Интерфейсы доступа к СУБД Подход к решению проблемы объектно- реляционного отображения на основе генерации схемы реляционной БД по объектной схеме данных –Абстракция реляционной модели данных –Строгая типизация на уровне структур данных –Строгая типизация запросов к данным –Производительность РСУБД
8 Прямой доступ к СУБД, SQL SQL-запрос – это текст Отсутствует строгая типизация запроса Отсутствует строгая типизация результата SELECT * FROM Users WHERE Id = 1000
9 Средства ОР-отображения Необходимость задавать и поддерживать описание отображения Пример: Hibernate
10 LINQ2SQL Средство ОР-отображения в.NET Framework Основное преимущество: строго типизированные запросы. Пример: var users = from usr in context.Users where usr.Name.Contains("A") orderby usr.Id select usr;
11 ООСУБД Отсутствует необходимость в ОР отображении Строгая типизация структур данных Строгая типизация запросов Недостатки: ограниченные средства доступа к данным, производительность Пример: Db4Objects
12 Выводы Идеальный интерфейс: –Абстракция реляционной модели –Строго типизированные структуры данных –Строго типизированные запросы, задаваемые в терминах ЯП –Абстракция конкретной реализации хранилища При этом остаются требования к устойчивости, производительности и другие свойства классических РСУБД (ОРСУБД)
13 Схема хранимых данных Выделение схемы хранимых данных Объектная строго типизированная схема данных Модель хранимых данных является подмножеством объектной модели [DbEntity] public class Author : DbEntity { [DbField(IsIndex = true)] public string Name { get; set; } [DbField] public string City { get; set; } } public class DbEntity { public long Id { get; set; } }
14 Схема хранимых данных 2 Ссылки на другие сущности схемы [DbEntity] public class Author : DbEntity { // … [DbLink(AuthorPapers")] public IEnumerable Papers { get; set; } } [DbEntity] public class Paper : DbEntity { //... [DbLink(AuthorPapers")] public Author Author { get; set; } }
15 Интерпретация схемы по соглашению Если задать некоторый набор соглашений, можно избавиться от атрибутов элементов схемы данных Примеры соглашений: –Первичный ключ: Id или [ИмяКласса]Id –Все поля простых типов – хранимые поля –Соглашения для ссылок: название поля [ИмяКласса]s или [ИмяКласса]. Microsoft Entity Framework 4.1
16 Интерфейс БД. Типовое решение Репозиторий
17 Интерфейс БД. Типовое решение Единица работы Аккумуляция изменений –Добавление объектов –Изменение объектов –Удаление объектов Управление транзакциями –Откат транзакции
18 Репозиторий + Единица работы = Контекст БД public interface IDbContext { IQueryable Get () where T : DbEntity, new(); void Store (T entity) where T : DbEntity, new(); void Delete (T entity) where T : DbEntity, new(); void Commit(); void Rollback(); } Объекта «контекста БД» достаточно для выполнения любых операций над хранимыми данными
19 Деревья запросов IQueryable = дерево запроса + провайдер var names = from author in context.Get () where author.Name.Length > 10 orderby author.Id select author.Name; selectorderbywhereGet ()Length > 10usr.Idusr.Name
20 Архитектура системы
21 Реализация хранилищ. РСУБД Реализация хранилища –Отображение объектной схемы на схему БД –Реализация провайдера для выполнения запросов в виде деревьев выражений –Реализация других операций над данными Использование существующих РСУБД (ОРСУБД)
22 Отображение объектной схемы на реляционную схему Автоматическая генерация схемы БД: –Преобразование описания объектной схемы в инструкции языка реляционных БД (SQL DDL) [DbEntity] public class Author : DbEntity { [DbField(IsIndex = true)] public string Name { get; set; } [DbField] public string City { get; set; } } CREATE TABLE Authors ( Id bigint PRIMARY KEY IDENTITY, Name varchar(50), City varchar(50) ); CREATE INDEX IX_Authors_Name ON Authors(Name);
23 Реализация хранилища в памяти Во время сеанса работы все данные хранятся в памяти в виде коллекций объектов Между сеансами данные сохраняются в линейный файл (например, XML) Реализация индексов – дополнительные структуры данных в памяти в виде хэш- таблиц или деревьев Во время выполнения – преобразование деревьев запросов для использования индексов
24 Имитация реальной БД
25 Имитация БД. Преимущества Не требуется специальной процедуры развертывания СУБД Каждый разработчик имеют свою копию данных. Изменение схемы БД сразу отражается в схеме данных, которая описана в коде, что не приводит к конфликтным данным. Возможность просто восстанавливать начальные данные для использования в модульных тестах.
26 Версионность модели Поддержка версионности – корректная обработка ситуации, когда схема изменяется между запусками приложения Простая схема для поддержания версионности: считать измененный класс новым классом Реализация: идентификация по имени класса и значению хэш-функции от структуры класса Возможность миграции данных в обновленную схему
27 Спасибо за внимание! Алексей Богданов
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.