Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей.

Презентация:



Advertisements
Похожие презентации
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Advertisements

Object Relational Mapping (ORM) Объектно-реляционное отображение.
Информационные системы. Базы данных. Информационная система – любая система обработки информации (шир)
Даталогическое проектирование. 1. Представление концептуальной модели средствами модели данных СУБД Общие представления о моделях данных СУБД С одной.
Object Relational Mapping (ORM) Объектно-реляционное отображение
Лекция 15 Лекция 15 Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный.
Базы данных Михайлова Елена Георгиевна, мат.-мех. ф-т, кафедра информатики, доцент.
Расширенные темы 1. SQL запросы Язык JPQL является абстракцией и «общим знаменателем» всех SQL диалектов. Очевидно, что конкретный диалект обладает бОльшими.
Системы управления базами данных СУБД является универсальным программным средством предназначенным для создания и ведения(обслуживания) баз данных на внешних.
База данных и СУБД: основные понятия. База данных: общее понятие База данных: хранилище информации отражает объект реального мира имитирует деятельность.
Опыт реализации отказоустойчивого сервера приложений и хранилища данных на базе СУБД ЛИНТЕР Михаил Ермаков, Дмитрий Мухоедов, РЕЛЭКС.
ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.
Билет Табличные базы данных (БД): основные понятия (поле, запись, первичный ключ записи); типы данных. Системы управления базами данных и принципы.
Введение. Цели и задачи. Основные понятия и определения. Требования к базам данных.
Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
Методология объектно- ориентированного программирования.
Базы данных Лекция 01 Информационные технологии баз данных.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Источники данных LINQ РУБД. LINQ (Language Integrated Query, язык интегрированных запросов ) это технология, которая позволяет разработчикам формировать.
БАЗА ДАННЫХ – ОСНОВА ИНФОРМАЦИОННОЙ СИСТЕМЫ ТЕХНОЛОГИЯ ИСПЛЬЗОВАНИЯ И РАЗРАБОТКА ИНФОРМАЦИОННЫХ СИСТЕМ.
Транксрипт:

Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей

Современные языки программирования ЯзыкИндекс* 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

Объектная модель данных Один из наиболее популярных классов ЯП – объектно-ориентированные языки со строгой типизацией Модель данных –Аспект структуры –Аспект манипуляции –Аспект целостности Объектная модель данных –Класс –Ассоциация, агрегация, наследование –Строгая типизация Каждый объект имеет определенный тип Для любой операции определяются типы входных и выходных параметров

Функции СУБД Функции, предоставляемые СУБД –Управление данными во внешней и оперативной памяти –Журнализация изменений, резервное копирование и восстановление данных –Поддержка языков БД (SQL) Основные требования: –Надежность, устойчивость –Производительность –Многозадачность Наиболее популярные СУБД основаны на реляционной модели данных

Проблема объектно- реляционного отображения Объектная модель – во время выполнения приложения Реляционная модель – для использования функциональности СУБД Интерфейс БД

Может быть определен в терминах объектной модели Может быть строго типизированным Интерфейс БД

Содержание доклада Существующие подходы к решению проблемы объектно-реляционного отображения Интерфейсы доступа к СУБД Подход к решению проблемы объектно- реляционного отображения на основе генерации схемы реляционной БД по объектной схеме данных –Абстракция реляционной модели данных –Строгая типизация на уровне структур данных –Строгая типизация запросов к данным –Производительность РСУБД

Прямой доступ к СУБД, SQL SQL-запрос – это текст Отсутствует строгая типизация запроса Отсутствует строгая типизация результата SELECT * FROM Users WHERE Id = 1000

Средства ОР-отображения Необходимость задавать и поддерживать описание отображения Пример: Hibernate

LINQ2SQL Средство ОР-отображения в.NET Framework Основное преимущество: строго типизированные запросы. Пример: var users = from usr in context.Users where usr.Name.Contains("A") orderby usr.Id select usr;

ООСУБД Отсутствует необходимость в ОР отображении Строгая типизация структур данных Строгая типизация запросов Недостатки: ограниченные средства доступа к данным, производительность Пример: Db4Objects

Выводы Идеальный интерфейс: –Абстракция реляционной модели –Строго типизированные структуры данных –Строго типизированные запросы, задаваемые в терминах ЯП –Абстракция конкретной реализации хранилища При этом остаются требования к устойчивости, производительности и другие свойства классических РСУБД (ОРСУБД)

Схема хранимых данных Выделение схемы хранимых данных Объектная строго типизированная схема данных Модель хранимых данных является подмножеством объектной модели [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; } }

Схема хранимых данных 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; } }

Интерпретация схемы по соглашению Если задать некоторый набор соглашений, можно избавиться от атрибутов элементов схемы данных Примеры соглашений: –Первичный ключ: Id или [ИмяКласса]Id –Все поля простых типов – хранимые поля –Соглашения для ссылок: название поля [ИмяКласса]s или [ИмяКласса]. Microsoft Entity Framework 4.1

Интерфейс БД. Типовое решение Репозиторий

Интерфейс БД. Типовое решение Единица работы Аккумуляция изменений –Добавление объектов –Изменение объектов –Удаление объектов Управление транзакциями –Откат транзакции

Репозиторий + Единица работы = Контекст БД 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(); } Объекта «контекста БД» достаточно для выполнения любых операций над хранимыми данными

Деревья запросов IQueryable = дерево запроса + провайдер var names = from author in context.Get () where author.Name.Length > 10 orderby author.Id select author.Name; selectorderbywhereGet ()Length > 10usr.Idusr.Name

Архитектура системы

Реализация хранилищ. РСУБД Реализация хранилища –Отображение объектной схемы на схему БД –Реализация провайдера для выполнения запросов в виде деревьев выражений –Реализация других операций над данными Использование существующих РСУБД (ОРСУБД)

Отображение объектной схемы на реляционную схему Автоматическая генерация схемы БД: –Преобразование описания объектной схемы в инструкции языка реляционных БД (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);

Реализация хранилища в памяти Во время сеанса работы все данные хранятся в памяти в виде коллекций объектов Между сеансами данные сохраняются в линейный файл (например, XML) Реализация индексов – дополнительные структуры данных в памяти в виде хэш- таблиц или деревьев Во время выполнения – преобразование деревьев запросов для использования индексов

Имитация реальной БД

Имитация БД. Преимущества Не требуется специальной процедуры развертывания СУБД Каждый разработчик имеют свою копию данных. Изменение схемы БД сразу отражается в схеме данных, которая описана в коде, что не приводит к конфликтным данным. Возможность просто восстанавливать начальные данные для использования в модульных тестах.

Версионность модели Поддержка версионности – корректная обработка ситуации, когда схема изменяется между запусками приложения Простая схема для поддержания версионности: считать измененный класс новым классом Реализация: идентификация по имени класса и значению хэш-функции от структуры класса Возможность миграции данных в обновленную схему

Спасибо за внимание! Алексей Богданов