~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 3F7C6AA3A46585FD1F76B1D176921B5F__1692881160 ✰
Заголовок документа оригинал.:
✰ Fractal tree index - Wikipedia ✰
Заголовок документа перевод.:
✰ Индекс фрактального дерева — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Fractal_tree_index ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/3f/5f/3f7c6aa3a46585fd1f76b1d176921b5f.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/3f/5f/3f7c6aa3a46585fd1f76b1d176921b5f__translat.html ✰
Дата и время сохранения документа:
✰ 02.07.2024 04:00:05 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 24 August 2023, at 15:46 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Индекс фрактального дерева — Jump to content

Индекс фрактального дерева

Из Википедии, бесплатной энциклопедии
Индекс фрактального дерева
Тип дерево
Изобретенный 2007
Изобретён Майкл А. Бендер , Мартин Фарах-Колтон , Брэдли К. Кушмаул
Временная сложность в большой записи O
Операция Средний Худший случай
Поиск О (логарифм B N ) О (логарифм B N )
Вставлять O(log B N / B е ) O(log B N / B е )
Удалить O(log B N / B е ) O(log B N / B е )
Пространственная сложность
Космос О( Н / Б ) О( Н / Б )

В информатике индекс фрактального дерева — это древовидная структура данных , которая обеспечивает сортировку данных и обеспечивает поиск и последовательный доступ за то же время, что и B-дерево , но с вставками и удалениями, которые асимптотически быстрее, чем B-дерево. Как и B-дерево, индекс фрактального дерева является обобщением бинарного дерева поиска , в котором узел может иметь более двух дочерних элементов. Кроме того, в отличие от B-дерева, индекс фрактального дерева имеет буферы в каждом узле, которые позволяют хранить вставки, удаления и другие изменения в промежуточных местах. Целью буферов является планирование записи на диск так, чтобы каждая запись выполняла большой объем полезной работы, тем самым избегая наихудшей производительности B-деревьев, в которых каждая запись на диск может изменить небольшой объем данных на диске. Как и B-дерево, индексы фрактального дерева оптимизированы для систем, которые читают и записывают большие блоки данных. Индекс фрактального дерева был коммерциализирован в базах данных компанией Tokutek . Первоначально он был реализован как массив опережающего просмотра без учета кэша. [1] но текущая реализация является расширением B е дерево. [2] Б е связано с деревом буферизованного репозитория. [3] Дерево буферизованного репозитория имеет степень 2, тогда как B е дерево имеет степень B е . Индекс фрактального дерева также использовался в прототипе файловой системы . [4] [5] . с открытым исходным кодом Доступна реализация индекса фрактального дерева [6] который демонстрирует детали реализации, изложенные ниже.

Обзор [ править ]

В индексах фрактального дерева внутренние ( нелистовые ) узлы могут иметь переменное количество дочерних узлов в пределах некоторого заранее определенного диапазона. Когда данные вставляются или удаляются из узла, количество дочерних узлов изменяется. Чтобы поддерживать заранее заданный диапазон, внутренние узлы можно объединять или разделять. Каждый внутренний узел B-дерева будет содержать количество ключей, на один меньше, чем его коэффициент ветвления . Ключи действуют как значения разделения, которые делят его поддеревья . Ключи в поддеревьях хранятся в порядке дерева поиска , то есть все ключи в поддереве находятся между двумя значениями брекетинга. В этом отношении они похожи на B-деревья.

Индексы фрактального дерева и B-деревья используют тот факт, что при извлечении узла из хранилища блок памяти, размер которого обозначается , извлекается. Таким образом, узлы настраиваются примерно на размер . Поскольку доступ к хранилищу может доминировать над временем работы структуры данных, временная сложность алгоритмов внешней памяти во многом определяется количеством операций чтения/записи, вызываемых структурой данных. (См., например, [7] для следующих анализов.)

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

Узлы фрактальных деревьев используют меньший коэффициент ветвления, скажем, . Тогда глубина дерева , тем самым асимптотически сопоставляя B-дерево. Оставшееся пространство в каждом узле используется для буферизации вставок, удалений и обновлений, которые мы в совокупности называем сообщениями. Когда буфер заполнен, он массово сбрасывается дочерним элементам. Существует несколько вариантов очистки буферов, и все они приводят к одинаковой сложности ввода-вывода. Каждое сообщение в буфере узла будет передано конкретному дочернему элементу, как определено его ключом. Предположим, для конкретности, что сбрасываются сообщения, направляющиеся одному и тому же дочернему элементу, и что среди дети, мы выбираем того, у которого больше всего сообщений. Тогда есть как минимум сообщения, которые могут быть отправлены дочернему элементу. Для каждой промывки требуется сбросов, и, следовательно, стоимость сброса за одно сообщение равна .

Учитывайте стоимость внедрения. Каждое сообщение сбрасывается раз, а стоимость промывки составляет . Таким образом, стоимость внедрения составляет . Наконец, заметим, что коэффициент ветвления может меняться, но для любого фактора ветвления , стоимость промывки равна , тем самым обеспечивая плавный компромисс между стоимостью поиска, которая зависит от глубины дерева поиска и, следовательно, коэффициента ветвления, и временем вставки, которое зависит от глубины дерева, но более чувствительно от размера очистки буфера.

Сравнение с другими индексами внешней памяти [ править ]

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

B-деревья [ править ]

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

В чем они различаются, так это вставках, удалениях и обновлениях. Вставка в индекс фрактального дерева занимает тогда как B-деревья требуют . Таким образом, индексы фрактальных деревьев быстрее, чем B-деревья, в два раза быстрее. . С может быть довольно большим, это дает потенциальное улучшение времени вставки в худшем случае на два порядка, что и наблюдается на практике. И B-деревья, и индексы фрактальных деревьев в лучшем случае могут выполнять вставку быстрее. Например, если ключи вставляются в последовательном порядке, обе структуры данных достигают Операции ввода-вывода на каждую вставку. Таким образом, поскольку лучшие и худшие случаи B-деревьев сильно различаются, тогда как индексы фрактальных деревьев всегда близки к лучшему случаю, фактическое ускорение, которого достигают индексы фрактальных деревьев по сравнению с B-деревьями, зависит от деталей рабочей нагрузки.

Деревья слияния с лог-структурой [ править ]

Деревья слияний с лог-структурой (LSM) относятся к классу структур данных, который состоит из двух или более индексных структур с экспоненциально растущей емкостью. Когда дерево на каком-то уровне достигает своей мощности, оно переходит на следующий, больший уровень. Сложность ввода-вывода LSM зависит от таких параметров, как коэффициент роста между уровнями и структура данных, выбранная на каждом уровне, поэтому для анализа сложности LSM нам нужно выбрать конкретную версию. В целях сравнения мы выбираем версию LSM, которая соответствует индексам фрактального дерева по производительности вставки.

Предположим, что LSM реализован через B-деревья, каждое из которых имеет емкость, больше, чем его предшественник. Время слияния зависит от трех фактов: Отсортированного порядка ключей в -B-дерево элементов может быть создано в ИО; Два отсортированных списка и элементы можно объединить в отсортированный список в ИО; и B-дерево отсортированного списка элементы могут быть встроены ИО. Когда дерево переполняется, оно объединяется с деревом, размер которого равен больше, поэтому уровень, который держится предметы требуют IO для объединения. Предмет может быть объединен один раз за уровень, что дает общее время , что соответствует индексу фрактального дерева.

Время запроса — это просто время запроса B-дерева на каждом уровне. Время запроса в й уровень , поскольку й уровень имеет емкость . Таким образом, общее время . Это в логарифмическом коэффициенте больше, чем индексы B-дерева и фрактального дерева. Фактически, хотя B-деревья и индексы фрактальных деревьев находятся на оптимальной кривой компромисса между вставками и запросами, LSM - нет. Они несравнимы с B-деревьями и в них преобладают индексы фрактальных деревьев.

Несколько замечаний о LSM: есть способы ускорить запросы. Например, если требуются только запросы на членство и нет запросов на преемника/предшественника/диапазона, то фильтры Блума для ускорения запросов можно использовать . Кроме того, коэффициент роста между уровнями может быть установлен на какое-то другое значение, что дает диапазон компромиссов вставки/запроса. Однако при каждом выборе скорости вставки соответствующий индекс фрактального дерева имеет более быстрые запросы.

Б е деревья [ править ]

Индекс фрактального дерева — это уточнение B е дерево. Как Б е дерево, оно состоит из узлов с ключами и буферами и реализует оптимальный компромисс между вставкой и запросом. Индекс фрактального дерева отличается включением оптимизации производительности и расширением функциональности. Примеры улучшенной функциональности включают семантику ACID . Реализации семантики ACID в виде B-дерева обычно включают блокировку строк, участвующих в активных транзакциях. Такая схема хорошо работает в B-дереве, поскольку и вставки, и запросы требуют извлечения одного и того же листа в память. Таким образом, блокировка вставленной строки не влечет за собой штраф за ввод-вывод. Однако в индексах фрактального дерева вставки являются сообщениями, и строка может находиться более чем в одном узле одновременно. Поэтому индексам фрактального дерева требуется отдельная структура блокировки, которая эффективно использует ввод-вывод или находится в памяти, чтобы реализовать блокировку, необходимую для реализации семантики ACID.

Индексы фрактального дерева также имеют несколько оптимизаций производительности. Во-первых, буферы сами индексируются для ускорения поиска. Во-вторых, листья намного крупнее, чем у B-деревьев, что позволяет добиться большего сжатия. Фактически, листья выбираются достаточно большими, чтобы время их доступа определялось временем полосы пропускания и, следовательно, амортизировало задержку поиска и вращения. Большие листья являются преимуществом при запросах с большим диапазоном, но замедляют точечные запросы, которые требуют доступа к небольшой части листа. Решение, реализованное в индексах фрактального дерева, состоит в том, чтобы иметь большие листья, которые можно выбирать целиком для запросов быстрого диапазона, но разбивать на более мелкие части, называемые базовыми узлами, которые можно выбирать индивидуально. Доступ к подвальному узлу происходит быстрее, чем доступ к листу, из-за сокращения времени полосы пропускания. Таким образом, подструктура листьев в индексах фрактального дерева по сравнению с B е Деревья позволяют выполнять быстрые запросы как по диапазонам, так и по точкам.

Индексы сообщений и фрактального дерева [ править ]

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

Упсы [ править ]

Upsert . — это оператор, который вставляет строку, если она не существует, и обновляет ее, если она существует В B-дереве upsert реализуется путем сначала поиска строки, а затем реализации вставки или обновления, в зависимости от результата поиска. Для этого необходимо загрузить строку в память, если она еще не кэширована. Индекс фрактального дерева может реализовать обновление, вставив специальное сообщение об обновлении. Такое сообщение теоретически может реализовать произвольные фрагменты кода во время обновления. На практике поддерживаются четыре операции обновления:

  1. (обобщенное приращение)
  2. (обобщенный декремент)
  3. (декремент с нижней границей 0)

Они соответствуют операциям обновления, используемым в LinkBench. [8] эталон, предложенный Facebook. Избегая первоначального поиска, сообщения upsert могут повысить скорость upsert на порядки.

Изменения в схеме [ править ]

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

Реализации [ править ]

Индекс фрактального дерева был реализован и коммерциализирован компанией Tokutek . Он доступен как TokuDB в качестве механизма хранения для MySQL и MariaDB , а также как TokuMX — более полная интеграция с MongoDB . Индексы фрактального дерева также использовались в прототипах файловых систем TokuFS. [4] и БетрФС. [5]

Ссылки [ править ]

  1. ^ Бендер, Массачусетс; Фарах-Колтон, М.; Файнман, Дж.; Фогель, Ю.; Кушмаул, Б.; Нельсон, Дж. (июнь 2007 г.). «Потоковые B-деревья без учета кэша» . Материалы 19-го ежегодного симпозиума ACM по параллелизму в алгоритмах и архитектурах . СА : ACM Press: 81–92.
  2. ^ Бродал, Г.; Фагерберг, Р. (январь 2003 г.). «Нижние границы словарей внешней памяти» . Материалы четырнадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам . Нью-Йорк : ACM Press: 546–554.
  3. ^ Бухсбаум, А.; Гольдвассвер, М.; Венкатасубраманиан, С.; Уэстбрук, Дж. (январь 2000 г.). «Об обходе графа внешней памяти». Материалы одиннадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам : 859–860. CiteSeerX   10.1.1.27.9904 .
  4. ^ Перейти обратно: а б Эсмет, Дж.; Бендер, М.; Фарах-Колтон, М.; Кушмаул, Б. (июнь 2012 г.). «Потоковая файловая система TokuFS» (PDF) . Материалы 4-й конференции USENIX по актуальным темам систем хранения и файловых систем . MA : Ассоциация USENIX. п. 14.
  5. ^ Перейти обратно: а б Яннен, Уильям; Юань, Цзюнь; Чжан, Ян; Акшинтала, Амог; Эсмет, Джон; Цзяо, Ичжэн; Миттал, Анкур; Пандей, Прашант; Редди, Фанеендра; Уолш, Лейф; Бендер, Майкл; Фарах-Колтон, Мартин; Джонсон, Роб; Кушмаул, Брэдли С.; Портер, Дональд Э. (февраль 2015 г.). «BetrFS: правильно оптимизированная файловая система, оптимизированная для записи» (PDF) . Материалы 13-й конференции USENIX по файловым технологиям и технологиям хранения . Санта-Клара, Калифорния.
  6. ^ Репозиторий Github
  7. ^ Кормен, Т.; Лейзерсон, CE; Ривест, Р.; Стоун, К. (2001). Введение в алгоритмы (2-е изд.). MIT Press и McGraw-Hill . ISBN  0-262-03293-7 .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 3F7C6AA3A46585FD1F76B1D176921B5F__1692881160
URL1:https://en.wikipedia.org/wiki/Fractal_tree_index
Заголовок, (Title) документа по адресу, URL1:
Fractal tree index - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)