Приведение хранилища к реляционной форме (постановка)

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

Версия 22:09, 8 октября 2009

Идеи:

  1. Вместо упаковки и записи всего-всего в один большой блоб будем использовать реляционную таблицу для хранения древовидной иерархии.
  2. Создадим бизнес-объект для работы с таблицей. Сооветственно, отпадет необходимость в частных окнах для просмотра хранилища и его элемента. Нас вполне устроит обычная форма просмотра и диалоговое окно.
  3. Сохраняем неизменной как иерархию классов Хранилища, так и их интерфейсы.
    1. Вводим признак того, что объект хранилища был изменен.
    2. Добавляем в объект хранилища свойство ИД, по которому будем связывать его с записью в базе.
  4. При загрузке хранилища из базы данных создаем объекты хранилища.
    1. Помечаем их все, как неизмененные.
    2. Данные БЛОБ объектов грузим только при первом обращении к соответствующим объектам.
  5. При сохранении хранища сохраняем/добавляем только измененные объекты.
    1. При удалении объекта хранилища, соответствующую запись удаляем из базы сразу же.
  6. Если открыт бизнес-объект хранилища, то он синхронизируется с соответствующим объектом хранилища следующим образом:
    1. При удалении записи в наборе данных бизнес-объекта, соответствующий объект удаляется (но, при этом обращения к базе данных не делается. Мы и так удалили соответствующую запись через БО).
    2. При изменении или добавлении записи в набор данных БО, изменяется/добавляется соответствующий объект хранилища. При этом флаг изменения у него не выставляется.
    3. Сопоставление объекта хранилища и записи в наборе данных БО осуществляется через ИД.
  7. При апгрейде структуры БД:
    1. Создаются новые метаданные.
    2. Данные хранилища перегоняются в новые метаданные.
    3. Старые данные защищаются от изменения.
  8. Настройки...
  9. Загрузка из потока...
  10. Хэширование...
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты