Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Индексы

Тип Реферат
Предмет Информатика и программирование
Просмотров
1512
Размер файла
15 б
Поделиться

Ознакомительный фрагмент работы:

Индексы

Евгений Каратаев

Речь пойдет об алгоритмах и структурах данных, их организации и поддержке. Термин индекс далее используется строго в целях обозначения дополнительных поисковых или оптимизирующих структур. Основным языком примеров выбран язык МUMPS. По возможности применяется страндартный синтаксис, в некоторых исключительных случаях для большей читаемости применяются Cache Object Script - расширения. Их применение ограничено и допускает альтернативную замену на эквивалентные выражения в иных диалектах МUMPS.

Индексы - это структуры данных, размещаемые параллельно и поддерживаемые синхронно основным структурам данных и имеющие основным назначением поддержание структур данных, ориентированных на ускорение поиска или оптимизацию хранения основных данных. Здесь под основными данными понимаются данные, хранение и работа с которыми является основным назначением системы базы данных.

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

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

Индексные структуры сами по себе обычно не являются необходимыми для работы системы базы данных. И их применение определяется программистом или администратором системы.

В большинстве общераспространенных систем баз данных поддержка индексных структур и их использование выполняется автоматическими средствами. В этой работе мы будем составлять структуры и алгоритмы, которые можно использовать вне автоматики и пользоваться всеми возможностями безотносительно ограничений системы базы данных. Примерно как если бы по частям реализовали внутренние механизмы большой системы, но в несколько упрощенном варианте.

Обобщенный механизм поддержки индекса.

Индексная структура по своему состоянию должна соответствовать состоянию индексируемых данных. Поэтому операции обновления индексов обычно делят на две группы - динамическое обновление индексных структур при обновлении одной записи и массовые операции удаления / построения индексов.

Далее будем рассматривать строки данных, устроенные для простоты следующим образом:

идентификатор записи получаем инкрементом ноду ^Data

значение записи хранится в узле ^Data(id)

запись состоит из полей с разделителем ~ (тильда)

индексные записи храним с глобале ^Index

в записи предполагаем поля - фигура, цвет, количество

общее строение записи: ^Data(id)=Figure~Color~Count

Операции динамического обновления индексов могут быть встроены в виде вызова из операции обновления записи и либо предшествовать собственно сохранению основной записи, либо последовать ему, либо обрамлять. Например:

; просто сохранение объекта

SaveObject(id,ObjVal)

i '+$g(id) s id=$i(^Data)

s ^Data(id)=ObjVal

q

; обновление индексов перед сохранением

SaveObject(id,ObjVal)

n OldValue

i '+$g(id) s id=$i(^Data)

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)

И внутри функций удаления / вставки индексных записей также вставляются обрамляющие блокировки. Наличие блокировок особенно критично в случае исполнения кода в контексте транзакции и возможности выполнения операции trollback.

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

Операция перестроения индекса сводится к удалению всех индексных записей и перебору всех имеющихся записей с данными и построения индексных записей по каждой имеющейся записи данных. Полагаем, что есть функции DeleteIndex для удаления всех индексных записей по одному индексу. Тогда перестроение индекса может выглядеть как

UpdateIndex(IndexName)

dDeleteIndex(IndexName)

n id,ObjValue

s id="" f s id=$o(^Data(id),ObjValue) q:id="" d

. d InsertIndex(IndexName,id,ObjVal)

Q


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
157018
рейтинг
icon
6076
работ сдано
icon
2739
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
66 337 оценок star star star star star
среднее 4.9 из 5
АГЗ МЧС России
Работу выполнила очень быстро и полностью раскрыла все вопросов по теме.Благодарю 😘
star star star star star
Колледж управления и права
Все выполнила качественно, сделала реферат раньше срока, все замечания были учтены и испра...
star star star star star
ММА
Спасибо Алексей! Все быстро с соблюдением методички. Тема раскрыта полностью.
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

На выбор из приложения

Курсовая, Технические средства автоматизации и управления

Срок сдачи к 12 июня

только что

Сохранить в 22 версии компас

Чертеж, Чертежи в компас

Срок сдачи к 14 мая

только что

По таблице квалитетов нужно как то решить задачи, начертить чертеж и тд

Решение задач, Метрология, стандартизация и сертификация

Срок сдачи к 17 мая

3 минуты назад

сделать презентацию и речь

Презентация, современные технологии изготовления оптических линз и оправ

Срок сдачи к 17 мая

4 минуты назад

Совершенствование маркетинговой деятельности на предприятии

Курсовая, Экономика организации (предприятия)

Срок сдачи к 20 мая

4 минуты назад

вариант 3 титульный сделаю сам

Контрольная, семейное право

Срок сдачи к 20 мая

5 минут назад

Решить контрольную

Контрольная, Правовое и документальное обеспечение в туризме и гостеприимстве

Срок сдачи к 17 мая

6 минут назад

Рецензия на религиозную статью

Рецензия, Религия

Срок сдачи к 20 мая

6 минут назад

технология программирования

Лабораторная, Программирование

Срок сдачи к 19 мая

8 минут назад
8 минут назад

Решения задач

Решение задач, Высшая математика

Срок сдачи к 14 мая

9 минут назад

Ванеев Анатолий Николаевич

Презентация, Библиотековедение

Срок сдачи к 16 мая

9 минут назад

Возмещение вреда, причиненного гражданину органами государственной...

Реферат, Административное право

Срок сдачи к 13 мая

10 минут назад

Выполнить контрольную работу

Контрольная, Основы роботизированной сварки

Срок сдачи к 26 мая

10 минут назад

Выполнить курсовую работу по методичке по предмету "Первичная переработка нефти и попутного нефтяного газа"

Курсовая, "Первичная переработка нефти и попутного нефтяного газа"

Срок сдачи к 23 мая

10 минут назад

Решить задачи по семейному праву

Решение задач, Семейное право

Срок сдачи к 15 мая

11 минут назад

Разработка технического задания программного продукта и предпроектное обследование организации

Лабораторная, Техническое документирование информационных систем

Срок сдачи к 30 мая

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно