Б х -дерево
По информатике B х Tree — это запрос, который используется для обновления эффективных структур индексов на основе дерева B+ для перемещения объектов.
Структура индекса [ править ]
Базовая структура B х -tree — это дерево B+, в котором внутренние узлы служат каталогом, каждый из которых содержит указатель на своего правого брата. В более ранней версии B х -дерево, [1] листовые узлы содержали движущихся объектов индексируемые местоположения и соответствующее время индексации. В оптимизированной версии [2] каждая запись листового узла содержит идентификатор, скорость, значение одномерного отображения и время последнего обновления объекта. Разветвление увеличивается за счет отсутствия сохранения местоположений движущихся объектов, поскольку их можно получить из значений сопоставления .
Использование дерева B+ для перемещения объектов [ править ]
Как и для многих других индексов движущихся объектов, двумерный движущийся объект моделируется как линейная функция как O = ((x, y), (vx, vy), t), где (x, y) и (vx, vy). ) — местоположение и скорость объекта в данный момент времени t , т. е. время последнего обновления. Дерево B+ — это структура для индексации одномерных данных. Чтобы принять дерево B+ в качестве индекса движущегося объекта, B х -tree использует технику линеаризации , которая помогает интегрировать местоположение объектов в момент времени t в одномерное значение. В частности, объекты сначала секционируются в соответствии со временем их обновления. Для объектов в одном разделе B х -tree хранит их местоположения в данный момент времени, которые оцениваются с помощью линейной интерполяции . Тем самым Б х -tree сохраняет согласованное представление всех объектов в одном разделе, не сохраняя время обновления каждого объекта.
Во-вторых, пространство разбивается сеткой, а расположение объекта внутри перегородок линеаризуется в соответствии с кривой заполнения пространства, например, кривыми Пеано или Гильберта .
Наконец, благодаря сочетанию номера раздела (информации о времени) и линейного порядка (информации о местоположении) объект индексируется в B. х -дерево с одномерным индексным ключом B х ценить:
Здесь index-partition — это индексный раздел, определяемый временем обновления, а xrep — это значение кривой заполнения пространства для положения объекта в индексированное время. обозначает двоичное значение x, а «+» означает конкатенацию.
Учитывая объект O ((7, 2), (-0,1,0,05), 10), tmu = 120, B х значение O можно вычислить следующим образом:
- O индексируется в разделе 0, как уже упоминалось. Следовательно, indexpartition = (00) 2 .
- Позиция O в метке времени метки раздела 0 равна (1,5).
- Используя Z-кривую с порядком = 3, Z-значение O, т. е. xrep, равно (010011) 2 .
- Объединение indexpartition и xrep, B х значение (00010011) 2 =19.
- Пример O ((0,6), (0,2, -0,3), 10) и tmu=120, затем позиция O в метке времени раздела: ???
Вставка, обновление и удаление [ править ]
Для нового объекта вычисляется его индексный ключ, а затем объект вставляется в B. х -дерево, как в дереве B+. Обновление состоит из удаления с последующей вставкой. Вспомогательная структура используется для хранения последнего ключа каждого индекса, чтобы объект можно было удалить путем поиска ключа. Ключ индексирования вычисляется до воздействия на дерево. Таким образом, Б х -tree напрямую наследует хорошие свойства дерева B+ и обеспечивает эффективную производительность обновления.
Запросы [ править ]
Запрос диапазона [ править ]
Запрос диапазона извлекает все объекты, местоположение которых попадает в прямоугольный диапазон. во время не раньше текущего времени.
Б х -tree использует технику увеличения окна запроса для ответа на запросы. Поскольку Б х -tree хранит местоположение объекта по состоянию на какое-то время после его обновления, увеличение включает два случая: местоположение должно быть либо возвращено в более раннее время, либо перенесено в более позднее время. Основная идея состоит в том, чтобы увеличить окно запроса так, чтобы оно охватывало все объекты, чьи позиции не находятся в окне запроса по метке времени его метки, но будут входить в окно запроса по метке времени запроса.
После расширения перегородки B х -дерево необходимо пройти, чтобы найти объекты, попадающие в увеличенное окно запроса. В каждом разделе использование кривой заполнения пространства означает, что запрос диапазона в исходном двумерном пространстве становится набором запросов диапазона в преобразованном одномерном пространстве. [1]
Чтобы избежать чрезмерно большого региона запроса после расширения в искаженных наборах данных, существует оптимизация алгоритма запроса: [3] что повышает эффективность запросов, избегая ненужного расширения запроса.
K запрос ближайшего соседа [ править ]
Запрос K ближайшего соседа вычисляется путем итеративного выполнения запросов диапазона с постепенно увеличивающейся областью поиска до тех пор, пока не будет получено k ответов. Другая возможность — использовать аналогичные идеи запросов в The iDistance Technique .
Другие запросы [ править ]
Алгоритмы запроса диапазона и K ближайших соседей можно легко расширить для поддержки интервальных запросов, непрерывных запросов и т. д. [2]
механизмов реляционных баз данных для размещения объектов Адаптация движущихся
Поскольку Б х -tree — это индекс, построенный на основе индекса дерева B+, все операции в дереве B+ х -дерево, включая вставку, удаление и поиск, такие же, как и в дереве B+. Нет необходимости менять реализацию этих операций. Разница лишь в том, что процедуру получения ключа индексации можно реализовать как хранимую процедуру в существующей СУБД . Следовательно, Б х -tree можно легко интегрировать в существующие СУБД, не затрагивая ядро .
СПЭЙД [4] — это система управления движущимися объектами, построенная на основе популярной системы реляционных баз данных MySQL , которая использует класс B. х -дерево для индексации объектов. При реализации данные движущегося объекта преобразуются и сохраняются непосредственно в MySQL, а запросы преобразуются в стандартные операторы SQL, которые эффективно обрабатываются в реляционном механизме. Самое главное, что все это достигается аккуратно и независимо, без проникновения в ядро MySQL.
Настройка производительности [ править ]
Потенциальная проблема с искажением данных [ править ]
Б х Дерево использует сетку для разделения пространства при отображении двумерного местоположения в одномерный ключ. Это может привести к снижению производительности операций запроса и обновления при работе с искаженными данными. Если ячейка сетки имеет слишком большой размер, в ячейке содержится много объектов. Поскольку объекты в ячейке неразличимы для индекса, в базовом дереве B+ будут некоторые узлы переполнения. Существование страниц переполнения не только нарушает балансировку дерева, но и увеличивает стоимость обновления. Что касается запросов, то для данной области запроса большая ячейка вызывает больше ложных срабатываний и увеличивает время обработки. С другой стороны, если пространство разделено более мелкой сеткой, то есть ячейками меньшего размера, каждая ячейка будет содержать мало объектов. Страницы практически не переполняются, что позволяет свести к минимуму затраты на обновление. В запросе получается меньше ложных срабатываний. Однако для поиска необходимо большее количество ячеек. Увеличение количества просматриваемых ячеек также увеличивает рабочую нагрузку запроса.
Настройка индекса [ править ]
СТ 2 B-дерево [5] представляет систему самонастройки для настройки производительности B х -tree при работе с неравномерностью данных в пространстве и изменением данных со временем. Чтобы справиться с неравномерностью данных в пространстве, ST 2 B-дерево разбивает все пространство на области с разной плотностью объектов, используя набор опорных точек. В каждом регионе используется отдельная сетка, размер ячейки которой определяется плотностью объектов внутри нее.
Б х -tree имеет несколько разделов, относящихся к разным временным интервалам. По прошествии времени каждый раздел попеременно увеличивается и уменьшается. СТ 2 B-дерево использует эту функцию для онлайн-настройки индекса, чтобы скорректировать разделение пространства и приспособиться к изменениям данных со временем. В частности, когда раздел становится пустым и начинает расти, он выбирает новый набор контрольных точек и новую сетку для каждой контрольной точки в соответствии с последней плотностью данных. Настройка основана на последних статистических данных, собранных за определенный период времени, поэтому предполагается, что способ разделения пространства лучше всего соответствует последнему распределению данных. Таким образом, СТ 2 Ожидается, что B-дерево сведет к минимуму эффект, вызванный неравномерностью данных в пространстве и изменениями данных со временем.
См. также [ править ]
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Кристиан С. Дженсен, Дэн Лин и Бенг Чин Оой. Запрос и обновление. Эффективное индексирование движущихся объектов на основе B+дерева . В материалах 30-й Международной конференции по очень большим базам данных (VLDB), страницы 768–779, 2004 г.
- ^ Jump up to: Перейти обратно: а б Дэн Лин. Индексирование и запрос к базам данных движущихся объектов , докторская диссертация, Национальный университет Сингапура, 2006 г.
- ^ Дженсен, К.С., Д. Тисайт, Н. Традисаускас, Надежное индексирование движущихся объектов на основе B +-дерева, в материалах седьмой международной конференции по управлению мобильными данными , Нара, Япония, 9 страниц, 9–12 мая 2006 г.
- ^ SpADE. Архивировано 2 января 2009 г. на Wayback Machine : SPatio-временной автономный механизм базы данных для служб с учетом местоположения.
- ^ Су Чен, Бенг Чин Оой, Кан-Ли. Тан и Марио А. Насисменто, ST2B-дерево: самонастраиваемое пространственно-временное B+-дерево для движущихся объектов. Архивировано 11 июня 2011 г. в Wayback Machine . В материалах Международной конференции ACM SIGMOD по управлению данными (SIGMOD), стр. 29–42, 2008 г.