Я создаю персональный проект с Django, чтобы тренироваться (потому что я люблю Django, но я пропускаю навыки). У меня есть основные требования, я знаю Python, я внимательно читал книгу Django дважды, если не трижды.
Моя цель - создать простую службу мониторинга с помощью веб-интерфейса на основе Django, позволяющего проверить статус моих "узлов" (серверов). Каждый node имеет несколько "сервисов". Приложение проверяет доступность каждой службы для каждого node.
Моя проблема в том, что я понятия не имею, как представлять различные типы сервисов в моей базе данных. Я подумал о двух "решениях":
- единственная модель сервиса с полем "serviceType" и большой беспорядок с полями. (У меня нет большого опыта в области моделирования баз данных, но это выглядит... "плохо" для меня).
- несколько моделей обслуживания. Мне нравится это решение, но потом я понятия не имею, как я могу ссылаться на эти службы РАЗНЫЕ в том же поле.
Это короткий отрывок из моего файла models.py: (я удалил все, что не связано с этой проблемой)
from django.db import models
# Create your models here.
class service(models.Model):
port = models.PositiveIntegerField()
class Meta:
abstract = True
class sshService(service):
username = models.CharField(max_length=64)
pkey = models.TextField()
class telnetService(service):
username = models.CharField(max_length=64)
password = models.CharField(max_length=64)
class genericTcpService(service):
pass
class genericUdpService(service):
pass
class node(models.Model):
name = models.CharField(max_length=64)
# various fields
services = models.ManyToManyField(service)
Конечно, линия с ManyToManyField является фиктивной. Я понятия не имею, что поставить вместо "Сервис". Я честно искал решения об этом, я слышал о "родовых отношениях", таблицах с тройным соединением, но я действительно этого не понимал.
Кроме того, английский не является моим родным языком, поэтому, приходя в структуру и семантику базы данных, мои знания и понимание того, что я читаю, ограничены (но это моя проблема)