Russian Qt Forum

Программирование => Базы данных => Тема начата: Cyrax от Март 12, 2008, 20:11



Название: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: Cyrax от Март 12, 2008, 20:11
Имеется клиентское приложение, работающая с БД (чтение, обновление, добавление данных). Вопрос следующий. Стоит ли создавать промежуточное хранилище (manager - больше всего подходит) данных, в которое сначала считывается часть БД, затем работа с данными происходит уже не через саму БД, а через это промежуточное хранилище. Ну а за сохранение новых данных в самой БД отвечает это хранилище (например, политики - либо в конце вся новая информация из хранилища сливается в БД, либо сразу, либо ещё какие-то политики).
Такие хранилища можно создать для каждой области данных, например, для работы с данными о сотрудниках, для работы с заказами и т.д.

Основные плюсы:
1. Можно задавать (хранилищу, менеджеру) режимы взаимодействия с БД, а также отменять все изменения, сделанные с момента последнего сохранения.
2. Как правило, в БД информация хранится в форме, неприемлемой для её отображения и изменения в клиентском приложении (это только в учебниках ситуация иная). Вопрос отображения можно решить с помощью представлений. Но сложные манипуляции с данными при сохранении представлениям не под силу.

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


Название: Re: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: WW от Март 12, 2008, 21:43
Так. Марлезонский балет. часть 2-я.
Мы еще не услышали окончание первой части, кажись в конце февраля должна быть.

По теме.
Читать (и еще раз читать и учить) теорию БД, то бишь, что такое атомарность изменений, транзакции, ACID короче, и т.д., учить SQL. После просветления - читать о распределенных приложениях.

Кста! Чем же закончилась первая часть балета? Помниться там мы изучали библиотеку Qt.
 ;D ;D ;D


Название: Re: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: Пантер от Март 13, 2008, 12:42
Чувствую и этот пост разрастется листов на 10. ЫЙ :)


Название: Re: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: Cyrax от Март 13, 2008, 22:19
Цитировать
Так. Марлезонский балет. часть 2-я.
Мы еще не услышали окончание первой части, кажись в конце февраля должна быть.
В конце февраля, насколько я помню, должен был быть опубликован сюжет заключительной части балета. На данный момент возможно с уверенностью сказать следующее:
1. Действующих лиц будет 5.
2. Премьера состоится не раньше лета 2008 года...


Название: Re: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: WW от Март 13, 2008, 22:59
А писать снова всем форумом будем?  :o ;)


Название: Re: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: Cyrax от Март 14, 2008, 10:43
Цитировать
А писать снова всем форумом будем?
Нет, я сам всё сделаю. Всё-таки дело нужно до ума довести...


Название: Re: Клиентское приложение: оптимальная организация взаимодействия с БД...
Отправлено: Cyrax от Март 20, 2008, 20:20
По сабжу. Вопрос рассматривается в пределах одного клиентского приложения. Одновременно может быть открыто несколько окон, каждое из которых работает со своей областью данных, эти области частично перекрываются. Одно приложение. Судя по всему, я не буду для каждого окна использовать свою реплику...

В случае с Qt-архитектурой модель-представление в роли такого manager'а может выступать модель данных, в случае QTableWidget - сам QTableWidget. Разница в том, что в первом случае имеется возможность задавать и реализовывать политику работы с базой данных на уровне модели данных, во втором - для реализации такой политики придётся вводить промежуточный manager, работающий с QTableWidget.