This commit is contained in:
2026-05-25 02:16:22 +03:00
parent 2661ef1437
commit 3974a44fb2
2 changed files with 50 additions and 63 deletions
+36 -48
View File
@@ -4,7 +4,7 @@
Исходя из результатов обзора, в качестве пользовательской формы задания конфигурации выбрано табличное представление. Такая форма представления удобна тем, что позволяет явно фиксировать элементы сети и их атрибуты, редактировать отдельные значения и проверять заполненность полей. При этом она допускает частично заданные конфигурации: часть параметров может быть указана сразу, а часть оставлена пустой для последующего уточнения. Исходя из результатов обзора, в качестве пользовательской формы задания конфигурации выбрано табличное представление. Такая форма представления удобна тем, что позволяет явно фиксировать элементы сети и их атрибуты, редактировать отдельные значения и проверять заполненность полей. При этом она допускает частично заданные конфигурации: часть параметров может быть указана сразу, а часть оставлена пустой для последующего уточнения.
При разработке табличного представления конфигурации сети виртуальных машин рассматривались два варианта организации данных: представление в первой нормальной форме (далее~-- 1НФ) и представление в третьей нормальной форме (далее~-- 3НФ). Оба варианта позволяют структурированно описать сеть, однако различаются сложностью редактирования данных в случае непосредственной работы с таблицами. При разработке табличного представления конфигурации сети виртуальных машин рассматривались два варианта организации данных: единая таблица (представление аналогично первой нормальной форме в контексте СУБД \cite{DB} ) и раздельные таблицы (аналогично третьей нормальной форме в контексте СУБД). Оба варианта позволяют структурированно описать сеть, однако различаются сложностью редактирования данных в случае непосредственной работы с таблицами.
Разберём оба представления на примере топологии, изображённой на рисунке~\ref{fig:exmpl1} Разберём оба представления на примере топологии, изображённой на рисунке~\ref{fig:exmpl1}
@@ -16,13 +16,9 @@
\label{fig:exmpl1} \label{fig:exmpl1}
\end{figure} \end{figure}
\subsubsection*{Первая нормальная форма} \subsubsection*{Представление в единой таблице}
Первая нормальная форма \cite{DB}: При представлении данных в виде одной таблицы каждая строка содержит сведения об отдельном элементе или связи конфигурации: имя узла, интерфейс, адреса, принадлежность сети и т.д. Такое представление остаётся достаточно простым для ручного заполнения и позволяет сразу видеть основную структуру конфигурации.
Переменная отношения находится в \textbf{1НФ} тогда и только тогда, когда в любом допустимом значении этой переменной отношения каждый её кортеж содержит только одно значение для каждого из атрибутов.
В первой нормальной форме данные представляются в виде одной таблицы, где каждая строка содержит атомарные значения: имя узла, интерфейс, адреса, принадлежность сети и т.д. Такое представление остаётся достаточно простым для ручного заполнения и позволяет сразу видеть основную структуру конфигурации.
Пример представления конфигурации сети в 1НФ приведен в таблице \ref{tab:1nf}. Пример представления конфигурации сети в 1НФ приведен в таблице \ref{tab:1nf}.
@@ -45,32 +41,20 @@ com\_right & Switch & eth2 & D & \\
com\_right & Switch & eth3 & C & \\ com\_right & Switch & eth3 & C & \\
\hline \hline
\end{tabular} \end{tabular}
\caption{Конфигурация сетевых устройств} \caption{Единая таблица конфигурации сетевых устройств}
\label{tab:1nf} \label{tab:1nf}
\end{table} \end{table}
\subsubsection*{Третья нормальная форма} \subsubsection*{Представление в раздельных таблицах}
Третья нормальная форма \cite{DB}: При представлении данных в виде раздельных таблиц сведения о конфигурации распределяются по основным видам сущностей: узлы (устройства), интерфейсы, сетевые сегменты и связи. Каждой из этих сущностей сопоставляется отдельная таблица. Такой подход уменьшает дублирование данных по сравнению с единой таблицей, однако делает представление более громоздким. Для понимания одной связи приходится обращаться сразу к нескольким таблицам.
Переменная отношения находится в \textbf{3НФ} тогда и только тогда, когда её неключевые атрибуты, если они существуют, являются одновременно:
\begin{enumerate}
\item взаимно независимыми;
\item неприводимо зависимыми от первичного ключа.
\end{enumerate}
\begin{itemize}
\item \textbf{Неключевой атрибут} --- это атрибут, который не входит в состав первичного ключа рассматриваемой переменной отношения.
\item \textbf{Взаимно независимые атрибуты} --- это два или больше атрибутов, таких что ни один из них функционально не зависит от какой-либо комбинации остальных атрибутов. Подобная независимость подразумевает, что каждый такой атрибут может обновляться независимо от остальных атрибутов.
\end{itemize}
В третьей нормальной форме данные разделяются на отдельные сущности: узлы (устройства), интерфейсы, сетевые сегменты и связи. Каждой из этих сущностей сопоставляется отдельная таблица. Такой подход уменьшает дублирование данных по сравнению с 1НФ, однако делает представление более громоздким. Для понимания одной связи приходится обращаться сразу к нескольким таблицам.
Пример представления конфигурации сети в 3НФ приведен в таблицах \ref{tab:3nf1} - \ref{tab:3nf3}. Пример представления конфигурации сети в 3НФ приведен в таблицах \ref{tab:3nf1} - \ref{tab:3nf3}.
\begin{table}[htbp]
\centering
\small
\begin{table}[h] \begin{minipage}[t]{0.3\textwidth}
\centering \centering
\begin{tabular}{|l|l|} \begin{tabular}{|l|l|}
\hline \hline
@@ -84,11 +68,11 @@ com\_right & Switch & eth3 & C & \\
com\_right & Switch \\ com\_right & Switch \\
\hline \hline
\end{tabular} \end{tabular}
\caption{Сетевые устройства} \captionof{table}{Сетевые устройства}
\label{tab:3nf1} \label{tab:3nf1}
\end{table} \end{minipage}
\hfill
\begin{table}[h] \begin{minipage}[t]{0.38\textwidth}
\centering \centering
\begin{tabular}{|l|l|l|} \begin{tabular}{|l|l|l|}
\hline \hline
@@ -106,28 +90,32 @@ com\_right & eth2 & D \\
com\_right & eth3 & C \\ com\_right & eth3 & C \\
\hline \hline
\end{tabular} \end{tabular}
\caption{Интерфейсы} \captionof{table}{Интерфейсы}
\label{tab:3nf2} \label{tab:3nf2}
\end{minipage}
% \hfill
% \begin{minipage}[t]{0.28\textwidth}
% \centering
% \begin{tabular}{|l|l|}
% \hline
% Interface & IP \\
% \hline
% PC1.eth1 & 10.0.0.1/24 \\
% PC2.eth1 & 10.0.0.2/24 \\
% PC3.eth1 & 10.0.0.3/24 \\
% PC4.eth1 & 10.0.0.4/24 \\
% \hline
% \end{tabular}
% \captionof{table}{IP-адреса интерфейсов}
% \label{tab:3nf3}
% \end{minipage}
\end{table} \end{table}
\begin{table}[h] \begin{table}[h] \centering \begin{tabular}{|l|l|} \hline Interface & IP \\ \hline PC1.eth1 & 10.0.0.1/24 \\ PC2.eth1 & 10.0.0.2/24 \\ PC3.eth1 & 10.0.0.3/24 \\ PC4.eth1 & 10.0.0.4/24 \\ \hline \end{tabular} \caption{IP-адреса интерфейсов} \label{tab:3nf3} \end{table}
\centering
\begin{tabular}{|l|l|}
\hline
Interface & IP \\
\hline
PC1.eth1 & 10.0.0.1/24 \\
PC2.eth1 & 10.0.0.2/24 \\
PC3.eth1 & 10.0.0.3/24 \\
PC4.eth1 & 10.0.0.4/24 \\
\hline
\end{tabular}
\caption{IP-адреса интерфейсов}
\label{tab:3nf3}
\end{table}
\subsubsection*{Выбор представления} \subsubsection*{Выбор представления}
В качестве основного пользовательского представления была выбрана первая нормальная форма. Она удобнее в сравнении с 3НФ для ручного заполнения, проще воспринимается при описании лабораторных стендов и не требует постоянного перехода между большим количеством связанных таблиц. В качестве основного пользовательского представления была выбрана единая таблица. Она удобнее для ручного заполнения, проще воспринимается при описании лТабличное представление в 1НФ используется как форма ввода,абораторных стендов и не требует постоянного перехода между несколькими связанными таблицами.
Табличное представление в 1НФ используется как форма ввода, а при дальнейшей обработке данные могут преобразовываться во внутреннюю модель, где отдельно выделяются узлы, интерфейсы и связи. Такой подход сохраняет простоту заполнения таблицы и одновременно позволяет использовать данные для экспорта во входные форматы средства развертывания сетевых конфигураций или средства построения диаграмм топологии. Единая таблица используется как форма ввода, а при дальнейшей обработке данные могут преобразовываться во внутреннюю модель, где отдельно выделяются узлы, интерфейсы и связи. Такой подход сохраняет простоту заполнения таблицы и одновременно позволяет использовать данные для экспорта во входные форматы средства развертывания сетевых конфигураций или средства построения диаграмм топологии.
+1 -2
View File
@@ -21,8 +21,7 @@
Также необходима разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт во входные языки средства развертывания сетевых конфигураций и средства построения диаграмм. YAML-файл в этом случае используется как структурированное описание, пригодное для дальнейшей обработки программами, вроде Netloom \cite{netloom} для поднятия сети из виртуальных машин, а D2 может применяться для генерации визуального представления сети на основе уже построенной модели. Также необходима разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт во входные языки средства развертывания сетевых конфигураций \cite{netloom} и средства построения диаграмм (D2).
Программная реализация выполнена на языке Python. Объём написанного кода: 710 строк, 48 килобайт. Код выложен на веб-сервисе Github \cite{github}. На рисунке \ref{fig:schema} представлен основной процесс работы с утилитой. Построение диаграмм происходит с помощью модуля py-d2 (пример на рис \ref{fig:diagram}). Программная реализация выполнена на языке Python. Объём написанного кода: 710 строк, 48 килобайт. Код выложен на веб-сервисе Github \cite{github}. На рисунке \ref{fig:schema} представлен основной процесс работы с утилитой. Построение диаграмм происходит с помощью модуля py-d2 (пример на рис \ref{fig:diagram}).