Индексы
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферат на тему дети, учет реферат
| Добавил(а) на сайт: Дутов.
Предыдущая страница реферата | 1 2 3 | Следующая страница реферата
s OldValue=$g(^Data(id))
d DeleteIndices(id,OldValue)
d InsertIndices(id,ObjVal)
s ^Data(id)=ObjVal
q
; обновление индексов после сохранения
SaveObject(id,ObjVal)
n OldValue
i '+$g(id) s id=$i(^Data)
s OldValue=$g(^Data(id))
s ^Data(id)=ObjVal
d DeleteIndices(id,OldValue)
d InsertIndices(id,ObjVal)
q
; обрамление обновления индексов при сохранении
SaveObject(id,ObjVal)
i '+$g(id) s id=$i(^Data)
d DeleteIndices(id,$g(^Data(id)))
s ^Data(id)=ObjVal
d InsertIndices(id,ObjVal)
q
Здесь DeletIndices удаляет индексные записи по этому объекту, а InsertIndices их создает. В данном случае подразумевается простой формат хранения записи - одной строкой, которая трактуется либо как строка с разделителями либо как список. Несмотря на то, что три метода в итоге дают одинаковый результат, между ними есть разница в том, насколько правильно будет работать конкурентный (одновременный для нескольких процессов) доступ к данным и индексам. В случае хранения только данных этот вопрос практически не стоит, поскольку операция set атомарная. В случае применения параллельных структур индексов существует момент между состояниями, когда записи нет, но индекс есть, или индекс есть но записи нет. Этот вопрос решается обычно с помощью применения блокировок. Операция set нового значения записи обрамляется командами
l +^Data(id)
s ^Data(id)=ObjVal
l -^Data(id)
Рекомендуем скачать другие рефераты по теме: район реферат, реферат на тему производство.
Категории:
Предыдущая страница реферата | 1 2 3 | Следующая страница реферата