Freigeben über


Konzepte für die automatische Konfiguration

Mit der automatischen Konfiguration können Sie Muster definieren, die Datenbankobjekte automatisch in Ihrer Konfiguration suchen und verfügbar machen. Die automatische Konfiguration kann eine Konfigurationsdatei erheblich verkleinern, insbesondere, wenn Objekte und Berechtigungen vorhersagbar sind. Darüber hinaus autoentities werden die Muster bei jedem Start von DAB neu ausgewertet und angewendet, sodass neue Tabellen, die mit dem Muster übereinstimmen, automatisch als Entitäten ohne manuelle Konfigurationsänderungen hinzugefügt werden.

Wenn autoentities in der Konfiguration vorhanden ist, ist der entities Abschnitt nicht mehr erforderlich. Das Schema erfordert entweder autoentities oder entities (oder beides).

Tipp

Verwenden Sie den dab auto-config Befehl zum Erstellen von autoentities Definitionen aus der CLI und dab auto-config-simulate zum Anzeigen der Vorschau übereinstimmender Objekte vor dem Commit von Änderungen. Informationen zur JSON-Konfigurationsreferenz finden Sie unter Autoentities "Konfiguration".

Definitionen

Jede autoentities Definition ist ein benannter Konfigurationsblock, der eine Reihe von Mustern mit einer Vorlage und Berechtigungen kombiniert. Der Definitionsname ist groß-/kleinbuchstabensensitiv und fungiert als logischer Bezeichner. Sie können über mehrere Definitionen verfügen, die jeweils auf unterschiedliche Gruppen von Datenbankobjekten und Berechtigungen abzielen.

{
  "autoentities": {
    "my-def-name": {
      "patterns": { 
        "include": [ "dbo.table1", "dbo.table2" ], 
        "exclude": [ ], 
        "name": "{schema}{object}" 
      },
      "template": { 
        "rest": { "enabled": true },
        "graphql": { "enabled": true },
        "mcp": { "dml-tools": true },
        "health": { "enabled": false },
        "cache": { "enabled": false }
       },
      "permissions": [ 
        { 
          "role": "anonymous", 
          "actions": [ "*" ] }
       ]
    }
  }
}

Hinweis

Autoentities unterstützt derzeit nur MSSQL-Datenquellen .

Muster

Muster steuern, welche Datenbankobjekte ermittelt werden und wie sie als Entitäten benannt werden. DAB wertet Muster mithilfe der T-SQL-Syntax LIKE anhand des schema.object Formats der einzelnen Datenbankobjekte aus.

Einschließen und Ausschließen

Das include Array gibt an, welche Objekte übereinstimmen sollen. Verwenden Sie % als Wildcard. Entspricht beispielsweise dbo.% allen Objekten im dbo Schema. Der Standardwert ist %.% (alle Objekte in allen Schemas).

Da include es sich um ein Zeichenfolgenarray handelt, können Sie mehrere Muster kombinieren, um verschiedene Schemas, Präfixe oder sogar bestimmte Tabellen anhand des Namens anzuzeigen. Wenn Sie einzelne Tabellen auflisten, schließen Sie immer den Schemanamen ein (z. B dbo.Products . nicht nur Products).

Beispiele einschließen

Schema Treffer Beschreibung
%.% Alle Objekte in allen Schemas Standard. Gleicht alles ab.
dbo.% Alle Objekte im dbo Schema Ein-Schema-Wildcard.
dbo.Product% dbo.Products, dbo.ProductDetails usw. Objektnamenpräfix in einem Schema.
%.Product% dbo.Products, sales.ProductOrders usw. Objektnamenpräfix für alle Schemas.
dbo.Products Nur dbo.Products Exakte Übereinstimmung, keine Wildcard.
dbo.% sales.% Alle Objekte in dbo und sales Mehrere Wildcardmuster kombiniert.
dbo.Products dbo.Orders dbo.Customers Nur diese drei Tabellen Explizite Tabellenliste. Schema-Name erforderlich.
dbo.% sales.Invoices Alle dbo Objekte plus sales.Invoices Kombination aus Wildcard und expliziter Tabelle.

Das exclude Array entfernt Objekte aus dem übereinstimmenen Satz. Ausschlussmuster werden nach einschließen von Mustern ausgewertet. Das Ausschlussmuster ist nützlich, um interne oder Stagingtabellen aus Ihrer API herauszuhalten. Like include, exclude ist ein String-Array und unterstützt mehrere Muster.

Beispiele ausschließen

Schema Ausschließen Beschreibung
dbo.internal% dbo.internalLogs, dbo.internalAudit usw. Entfernen sie Objekte mit einem Namenspräfix.
%.%_staging dbo.Orders_staging, sales.Items_staging usw. Entfernen Sie Stagingtabellen in allen Schemas.
dbo.__migration% dbo.__migrationHistory, usw. Entfernen Sie Migrationsnachverfolgungstabellen.
dbo.sysdiagrams Nur dbo.sysdiagrams Entfernen sie ein einzelnes bestimmtes Objekt.
%.vw_% dbo.vw_Summary, reports.vw_Daily usw. Entfernen Sie Ansichten nach Benennungskonvention.
dbo.Logs dbo.AuditTrail Nur diese beiden Tabellen Schließen Sie bestimmte Tabellen anhand des Namens aus.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --patterns.exclude "dbo.internal%"

Mehrere Muster sind in der CLI durch Leerzeichen getrennt:

dab auto-config my-def \
  --patterns.include "dbo.Products" "dbo.Orders" "dbo.Customers" \
  --permissions "anonymous:read"
Resultierende Konfiguration
{
  "autoentities": {
    "my-def": {
      "patterns": {
        "include": [ "dbo.%" ],
        "exclude": [ "dbo.internal%" ]
      }
    }
  }
}

In diesem Beispiel sind alle Objekte im dbo Schema enthalten, mit Ausnahme derjenigen, deren Namen mit internal beginnen.

Entitätsbenennung

Die name Eigenschaft ist ein Interpolationsmuster, das steuert, wie übereinstimmene Datenbankobjekte als Entitäten benannt werden. Sie unterstützt {schema} und {object} Platzhalter. Sie können auch Literalzeichenfolgen zusammen mit Platzhaltern einschließen. Standardmäßig wird {object}der Datenbankobjektname direkt verwendet.

Beispiele

In den folgenden Beispielen wird angenommen, dass ein Datenbankobjekt dbo.Products:

Schema Resultierender Entitätsname Beschreibung
{object} Products Standard. Nur Objektname.
{schema}_{object} dbo_Products Schema und Objekt getrennt durch Unterstrich.
{schema}-{object} dbo-Products Schema und Objekt getrennt durch Bindestrich.
{schema}.{object} dbo.Products Schema und Objekt getrennt durch Punkt.
api_{object} api_Products Literalpräfix mit Objektnamen.
{object}_entity Products_entity Objektname mit Literalsuffix.
tbl_{schema}_{object} tbl_dbo_Products Literalpräfix mit beiden Platzhaltern.
{schema}_{object}_v1 dbo_Products_v1 Beide Platzhalter mit literalen Versionssuffix.
{object}Resource ProductsResource Objektname mit Literalsuffix, kein Trennzeichen.

Die Verwendung {schema} im Muster ist besonders hilfreich, wenn Sie mehrere Schemas einschließen und Namenskonflikte vermeiden müssen.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --patterns.name "{schema}_{object}"
Resultierende Konfiguration
{
  "autoentities": {
    "my-def": {
      "patterns": {
        "include": [ "dbo.%" ],
        "name": "{schema}_{object}"
      }
    }
  }
}

Vorlage

Die Vorlage definiert die Standardkonfiguration, die auf jede Entität angewendet wird, die mit der Definition übereinstimmt. Vorlageneinstellungen decken ab, welche API-Protokolle aktiviert sind und wie sich die Zwischenspeicherung verhält. Jede Einstellung, die Sie weglassen, verwendet den Standardwert.

API-Protokolle

Sie können REST, GraphQL und Model Context Protocol (MCP) unabhängig für übereinstimmene Entitäten aktivieren oder deaktivieren.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --template.rest.enabled true \
  --template.graphql.enabled true \
  --template.mcp.dml-tools true
Resultierende Konfiguration
{
  "autoentities": {
    "my-def": {
      "template": {
        "rest": { "enabled": true },
        "graphql": { "enabled": true },
        "mcp": { "dml-tools": true }
      }
    }
  }
}
Eigentum Vorgabe Beschreibung
rest.enabled true Machen Sie REST-Endpunkte für übereinstimmene Entitäten verfügbar.
graphql.enabled true Machen Sie GraphQL-Vorgänge für übereinstimmene Entitäten verfügbar.
mcp.dml-tools true Machen Sie MCP-Tools für die Datenmanipulationssprache (DML) für übereinstimmende Entitäten verfügbar.

Gesundheitschecks

Wenn diese Option aktiviert ist, enthält DAB übereinstimmende Entitäten in seinem Integritätsprüfungsendpunkt, wobei die Datenbankkonnektivität für jede Entität überprüft wird.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --template.health.enabled true
Resultierende Konfiguration
{
  "autoentities": {
    "my-def": {
      "template": {
        "health": { "enabled": true }
      }
    }
  }
}

Zwischenspeicherung

Das Zwischenspeichern von Antworten kann für alle übereinstimmenden Entitäten mit einer konfigurierbaren TTL -Ebene (Time-to-Live) und Cacheebene aktiviert werden.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --template.cache.enabled true \
  --template.cache.ttl-seconds 30 \
  --template.cache.level L1L2
Resultierende Konfiguration
{
  "autoentities": {
    "my-def": {
      "template": {
        "cache": { "enabled": true, "ttl-seconds": 30, "level": "l1l2" }
      }
    }
  }
}
Eigentum Vorgabe Beschreibung
cache.enabled false Aktivieren sie das Zwischenspeichern von Antworten für übereinstimmene Entitäten.
cache.ttl-seconds null Zwischenspeichern von Zeit-zu-Live-Zeit in Sekunden.
cache.level L1L2 Cacheebene. Unterstützte Werte: L1, L1L2.

Erlaubnisse

Berechtigungen definieren rollenbasierte Zugriffssteuerung, die auf jede Entität angewendet wird, die mit der Definition übereinstimmt. Jeder Berechtigungseintrag gibt eine Rolle und die für diese Rolle zulässigen Aktionen an.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --permissions "anonymous:read"
Resultierende Konfiguration
{
  "autoentities": {
    "my-def": {
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

Zu den unterstützten Aktionen gehören create, read, update, delete und * (alle). Sie können mehrere Rollen mit unterschiedlichen Aktionssätzen zuweisen.

Vollständiges Konfigurationsbeispiel

Eine vollständige autoentities Definition, die Muster, Vorlagen und Berechtigungen kombiniert.

Befehlszeile

dab auto-config my-def \
  --patterns.include "dbo.%" \
  --patterns.exclude "dbo.internal%" \
  --patterns.name "{schema}_{object}" \
  --template.rest.enabled true \
  --template.graphql.enabled true \
  --template.cache.enabled true \
  --template.cache.ttl-seconds 30 \
  --template.cache.level L1L2 \
  --permissions "anonymous:read"

Resultierende Konfiguration

{
  "autoentities": {
    "my-def": {
      "patterns": {
        "include": [ "dbo.%" ],
        "exclude": [ "dbo.internal%" ],
        "name": "{schema}_{object}"
      },
      "template": {
        "rest": { "enabled": true },
        "graphql": { "enabled": true },
        "cache": { "enabled": true, "ttl-seconds": 30, "level": "l1l2" }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

Diese Definition enthält alle Objekte im dbo-Schema, mit Ausnahme von Objekten, die mit internal beginnen, benennt sie mit dem schema_object-Format, aktiviert REST und GraphQL, speichert Antworten für 30 Sekunden im Cache und gewährt anonymen Lesezugriff.

Simulation

Bevor Sie Muster autoentities für Ihre Konfiguration übernehmen, können Sie die Ergebnisse simulieren, um eine Vorschau zu erhalten, welche Datenbankobjekte übereinstimmen würden. Die Simulation verbindet sich mit der Datenbank, löst jedes Muster auf und meldet die übereinstimmenden Objekte, ohne Änderungen zu schreiben. Die Simulationsausgabe zeigt die Übereinstimmungen jeder Definition mit Entitätsnamen und den entsprechenden Datenbankobjekten an.

Tipp

Verwenden Sie dab auto-config-simulate, um Simulationen von der Befehlszeilenschnittstelle auszuführen. Alle Optionen finden Sie in der Befehlsreferenz .

Befehlszeile (Konsole)

dab auto-config-simulate \
  --config ./dab-config.json

Resultierende Konsolenausgabe

AutoEntities Simulation Results

Filter: my-def
Matches: 3
  dbo_Products  →  dbo.Products
  dbo_Inventory →  dbo.Inventory
  dbo_Pricing   →  dbo.Pricing

Sie können Auch Simulationsergebnisse zur weiteren Analyse in CSV exportieren.

Befehlszeile (Datei)

dab auto-config-simulate \
  --config ./dab-config.json \
  --output results.csv

Resultierende CSV-Ausgabe

filter_name,entity_name,database_object
my-def,dbo_Products,dbo.Products
my-def,dbo_Inventory,dbo.Inventory
my-def,dbo_Pricing,dbo.Pricing