Рубрики
Uncategorized

День 3 – “Шаблоны архитектуры корпоративных приложений” – Сопоставление с реляционными базами данных

Автор оригинала: David Wong.

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

1. Архитектурный узор:

Как управлять логикой домена для доступа к данным:

Операторы SQL встроены в языки программирования.

Ввод данных в строке, ввод данных в таблице:

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

Записи о деятельности:

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

Устройство отображения данных:

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

Объектно-ориентированная база данных:

Модели предметной области можно использовать независимо от того, насколько они сложны (из-за риска они используются нечасто). Главное преимущество-это повышение производительности!

2. Поведенческие проблемы:

1) Так называемая проблема формулировки заключается в том, как заставить объект считываться из базы данных и храниться в базе данных.

2) Единица работы:

Действуя в качестве контроллера отображения базы данных, он отслеживает все объекты, считанные из базы данных, и все объекты, измененные в любой форме, и отправляет обновления в базу данных (для решения проблемы синхронизации между объектами памяти и данными в базе данных).

3) Сопоставление личности:

Запишите каждую строку, прочитанную на карте идентификации, чтобы предотвратить повторную загрузку одного и того же объекта

4) Задержка загрузки:

Уменьшайте количество данных, считываемых моделями предметной области каждый раз

3. Считывание данных:

1) Искатель:

При чтении данных вы можете думать о методе чтения данных как о поиске.

2) Объект поиска:

Если класс взаимодействия с базой данных основан на таблицах, операции вставки и обновления также привязаны к методу finder.

Если база данных взаимодействует с классами на основе строк, создайте отдельные объекты finder (каждый класс finder имеет множество методов, инкапсулирующих инструкции SQL, и при запросе объект finder возвращает соответствующий набор объектов на основе строк)

3) Эмпирические правила производительности считывания данных:

При необходимости попробуйте прочитать несколько строк одновременно.

Если вам нужны данные нескольких таблиц, используйте Join

4. Структурные схемы отображения:

1) Отображение взаимосвязей:

Способ разрешения взаимосвязи между реляционными таблицами и ссылочной связью между объектами:

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

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

Вы также можете сохранить набор объектов в виде одного столбца в таблице путем сериализации полей

2) Наследование:

Наследование одной формы:

Создайте таблицу для всех классов в иерархии системы наследования (ее легко изменить и избежать объединения, но каждая строка должна занимать место для шести столбцов каждого возможного подкласса Boa)

Специфическое наследование таблиц:

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

Наследование таблицы классов:

Создайте таблицу для каждого класса в иерархии наследования (для загрузки объекта требуется несколько операций объединения, обычно это приводит к потере производительности).

Вышеупомянутые три шаблона должны учитывать их собственную среду и предпочтения (Мартин, как правило, использует наследование одной формы и два других шаблона, чтобы помочь решить неизбежные неуместные и бесполезные проблемы с колонками).

5. Картографирование:

Выберите свое собственное решение для базы данных:

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

Использование существующих схем баз данных:

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

Для нескольких источников данных:

Создайте несколько слоев отображения, по одному для каждого источника данных. Если данные очень похожи, данные могут быть преобразованы из схемы памяти в схему логического хранения данных и сопоставлены со схемой логического хранения данных в фактическую схему физического хранения (часть 2 содержит различия).

6. Использование метаданных:

Сопоставление метаданных основано на методе концентрации сопоставления в файлах метаданных. Файлы метаданных подробно описывают, как столбцы в базе данных сопоставляются с доменом объекта. Такие как:

7. Подключение к базе данных:

Пул подключений к базе данных

8. Другие вопросы:

Вопрос выбора * из

Чаще используйте статический предварительно скомпилированный SQL