Приведение хранилища к реляционной форме (постановка)
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Создана новая страница размером Идеи: # Вместо упаковки и записи всего-всего в один большой блоб будем испол...) |
SYSDBA (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
# Вместо упаковки и записи всего-всего в один большой блоб будем использовать реляционную таблицу для хранения древовидной иерархии. | # Вместо упаковки и записи всего-всего в один большой блоб будем использовать реляционную таблицу для хранения древовидной иерархии. | ||
| − | # Создадим бизнес-объект для работы с таблицей. | + | # Создадим бизнес-объект для работы с таблицей. Сооветственно, отпадет необходимость в частных окнах для просмотра хранилища и его элемента. Нас вполне устроит обычная форма просмотра и диалоговое окно. |
| − | + | ||
# Сохраняем неизменной как иерархию классов Хранилища, так и их интерфейсы. | # Сохраняем неизменной как иерархию классов Хранилища, так и их интерфейсы. | ||
## Вводим признак того, что объект хранилища был изменен. | ## Вводим признак того, что объект хранилища был изменен. | ||
| + | ## Добавляем в объект хранилища свойство ИД, по которому будем связывать его с записью в базе. | ||
# При загрузке хранилища из базы данных создаем объекты хранилища. | # При загрузке хранилища из базы данных создаем объекты хранилища. | ||
## Помечаем их все, как неизмененные. | ## Помечаем их все, как неизмененные. | ||
| Строка 11: | Строка 11: | ||
# При сохранении хранища сохраняем/добавляем только измененные объекты. | # При сохранении хранища сохраняем/добавляем только измененные объекты. | ||
## При удалении объекта хранилища, соответствующую запись удаляем из базы сразу же. | ## При удалении объекта хранилища, соответствующую запись удаляем из базы сразу же. | ||
| − | # Если открыт бизнес-объект хранилища, то он синхронизируется с соответствующим объектом хранилища: | + | # Если открыт бизнес-объект хранилища, то он синхронизируется с соответствующим объектом хранилища следующим образом: |
## При удалении записи в наборе данных бизнес-объекта, соответствующий объект удаляется (но, при этом обращения к базе данных не делается. Мы и так удалили соответствующую запись через БО). | ## При удалении записи в наборе данных бизнес-объекта, соответствующий объект удаляется (но, при этом обращения к базе данных не делается. Мы и так удалили соответствующую запись через БО). | ||
## При изменении или добавлении записи в набор данных БО, изменяется/добавляется соответствующий объект хранилища. При этом флаг изменения у него не выставляется. | ## При изменении или добавлении записи в набор данных БО, изменяется/добавляется соответствующий объект хранилища. При этом флаг изменения у него не выставляется. | ||
| − | ## Сопоставление объекта хранилища и записи в наборе данных БО осуществляется через ИД. | + | ## Сопоставление объекта хранилища и записи в наборе данных БО осуществляется через ИД. |
| − | ## | + | # При апгрейде структуры БД: |
| + | ## Создаются новые метаданные. | ||
| + | ## Данные хранилища перегоняются в новые метаданные. | ||
| + | ## Старые данные защищаются от изменения. | ||
| + | # Настройки... | ||
| + | # Загрузка из потока... | ||
| + | # Хэширование... | ||
[[Category:Постановка]] | [[Category:Постановка]] | ||
Версия 22:09, 8 октября 2009
Идеи:
- Вместо упаковки и записи всего-всего в один большой блоб будем использовать реляционную таблицу для хранения древовидной иерархии.
- Создадим бизнес-объект для работы с таблицей. Сооветственно, отпадет необходимость в частных окнах для просмотра хранилища и его элемента. Нас вполне устроит обычная форма просмотра и диалоговое окно.
- Сохраняем неизменной как иерархию классов Хранилища, так и их интерфейсы.
- Вводим признак того, что объект хранилища был изменен.
- Добавляем в объект хранилища свойство ИД, по которому будем связывать его с записью в базе.
- При загрузке хранилища из базы данных создаем объекты хранилища.
- Помечаем их все, как неизмененные.
- Данные БЛОБ объектов грузим только при первом обращении к соответствующим объектам.
- При сохранении хранища сохраняем/добавляем только измененные объекты.
- При удалении объекта хранилища, соответствующую запись удаляем из базы сразу же.
- Если открыт бизнес-объект хранилища, то он синхронизируется с соответствующим объектом хранилища следующим образом:
- При удалении записи в наборе данных бизнес-объекта, соответствующий объект удаляется (но, при этом обращения к базе данных не делается. Мы и так удалили соответствующую запись через БО).
- При изменении или добавлении записи в набор данных БО, изменяется/добавляется соответствующий объект хранилища. При этом флаг изменения у него не выставляется.
- Сопоставление объекта хранилища и записи в наборе данных БО осуществляется через ИД.
- При апгрейде структуры БД:
- Создаются новые метаданные.
- Данные хранилища перегоняются в новые метаданные.
- Старые данные защищаются от изменения.
- Настройки...
- Загрузка из потока...
- Хэширование...