Многомерное Дерево Mtree

Организация данных в программировании имеет решающее значение.

Способов организации данных не так много.

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

Это наиболее распространенная организация данных, и на ее основе можно легко смоделировать все остальные структуры данных.

Массивы, очереди, стеки легко реализуются в дереве.

Многолетний опыт создания информационных систем подтвердил мне универсальность этой структуры данных.

Но основное преимущество дерева проявляется при моделировании связей между сущностями.

Конечно, дерево – не единственный и даже не самый распространенный способ сделать это.

В модели SQL это делается в виде таблиц.

Способ хоть и самый распространенный, но не самый оптимальный.

В этом случае эффективность приносится в жертву языку манипулирования данными.

При этом возникают различные нормальные формы ненормальной организации данных.

Дерево намного лучше по сравнению с набором таблиц.

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

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

Любую структуру данных, даже простой последовательный файл, имеющую эти методы доступа, можно рассматривать как дерево.

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

Пришлось придумать продолжение к дереву.

Назовем это расширение Mtree N-го порядка.

Это дерево, в котором каждый узел помимо данных и прямых потомков содержит еще N ветвей.

Узел Mtree 2-го порядка содержит две ветви: основную и альтернативную.

Такая структура необходима, когда основные ветви отражают взаимоотношения сущностей, а сами сущности являются иерархическими объектами.

Дерево Mtree может быть построено аналогично дереву Btree. Дерево Btree — очень эффективная структура, широко используемая во многих ИТ-проектах.

В частности, эта структура используется для реализации данных в MUMPS-системах, о преимуществах которых я писал в разделе предыдущий пост .

Влияние такой организации данных на MUMPS невозможно переоценить.

Основные свойства этого языка определяются именно иерархической организацией данных в виде Btree-дерева.

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

Мне трудно понять, как данные могут быть объявлены в разных узлах дерева.

И очень странно предполагать, что все узлы дерева будут одного типа.

Ни один другой язык не имеет такой тесной связи между языком и организацией данных внутри него.

Но иерархическая структура оказалась не идеальной.

На нем довольно удобно отображать структуру данных, но тогда в узлах такого дерева можно хранить только простые переменные.

Что делать, если вам нужно сохранить свойства объекта? А сами объекты могут быть объектами, что порождает новую иерархию.

Это означает, что необходима новая структура данных.

Мдерево 2-го порядка.

Попытка расширить MUMPS до объектного хранилища привела меня к созданию структуры данных Mtree 2-го порядка.

И на основе этого дерева создать язык MSH, о котором я писал в другом предыдущий пост .

Такое дерево решает проблему хранения объекта и его свойств в узле дерева.

Основная иерархия отражает связи между объектами, а альтернативные ветви содержат свойства объекта.

Это не единственное применение многомерных деревьев.

На такой структуре легко построить файловую систему.

Основная иерархия может хранить имена каталогов, а альтернативные ветви могут хранить имена файлов и ссылки на занятые блоки.

DOM браузеров так же легко соответствует этой структуре.

Я думаю, что многомерным деревьям найдутся и другие применения.

Придумать структуру и язык – это еще не все.

Эти идеи необходимо реализовать.

Я выполнил первый этап реализации дерева Mtree 2-го порядка.

Программирование в целом завершено и примитивная отладка проведена, но требуется более комплексное тестирование базы.

Программирование выполнялось на языке C с использованием Linux IDE NetBeans. Если кто-то хочет помочь, напишите мне на почту.

Теги: #структуры данных #языки программирования #MUMPS #базы данных #разработка веб-сайтов #компиляторы #ООП #большие данные

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.