Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Das .dba-Schemaformat und die mitgelieferten Schemadateien

Was das engine-neutrale Format .dba ist, welche Schema- und Datendateien mit Exponential ausgeliefert werden (share/db_schema.dba, share/db_data.dba, kernel/sql je Engine), wie in dbschema.ini registrierte…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/database-administrators/the-dba-schema-format.md

On this page

This page is a translation. Read the English original

Das .dba-Schemaformat und die mitgelieferten Schemadateien

Diese Seite richtet sich an Datenbankadministratoren, die wissen möchten, woher die Definition einer Exponential-Datenbank kommt, bevor sie eine vergleichen, dumpen oder umziehen. Sie beantwortet: was eine .dba-Datei ist, welche Schemadateien mit dem Kernel ausgeliefert werden und welches Werkzeug jede liest, wie Erweiterungen Tabellen hinzufügen und was Namen auf jeder Engine gültig hält.

Inhalt

  1. Das Format .dba
  2. Die mitgelieferten Dateien
  3. Schema-Handler
  4. Erweiterungen und ihr Schema
  5. Der Lint-Checker
  6. Was Sie mit diesen Dateien tun
  7. Checkliste

Das Format .dba

Eine .dba-Datei ist eine PHP-Datei, die ein Array enthält: für das Schema einen Eintrag je Tabelle mit ihren Feldern (Typ, Länge, not_null, Standard) und Indizes; für Daten die Zeilen. Sie beschreibt die Datenbank ohne den Dialekt einer Engine, eine Datei dient also jeder Engine. Der Anfang von share/db_schema.dba sieht so aus:

<?php
// This array contains the database schema
$schema = array (
  'expaudit_cursor' =>
  array (
    'name' => 'expaudit_cursor',
    'fields' =>
    array (
      'byte_offset' =>
      array (
        'length' => 20,
        'type' => 'bigint',
        ...

ezsqldumpschema.php --format=generic --output-array schreibt dieses Format aus einer laufenden Datenbank (Schemawerkzeuge: Dump, Insert und Diff). --format=local schreibt einen Dump, der nur zu der Engine passt, aus der er stammt.

Die mitgelieferten Dateien

DateiWas sie istGelesen von
share/db_schema.dbadas Schema des Kernels, engine-neutral (etwa 130 Tabellen)den Installern, der Upgrade-Prüfung, ezsqldiff.php
share/db_data.dbadie Anfangsdaten des Kernelsden Installern
kernel/sql/mysql/kernel_schema.sqldas Schema als MySQL-DDL (129 CREATE TABLE)Referenz, Installationen von Hand
kernel/sql/mysql/cluster_dfs_schema.sqldie Tabellen des DFS-Clusters ezdfsfile, ezdfsfile_cacheCluster-Einrichtung
kernel/sql/mysql/cluster_db_schema.sql, cluster_schema.sqlTabellen des entfernten Datenbank-Datei-Handlers (ezdbfile, ezdbfile_data)historisch
kernel/sql/postgresql/kernel_schema.sqldas Schema als PostgreSQL-DDL (129 CREATE TABLE)Referenz
kernel/sql/postgresql/setval.sqlsetval() für jede Sequenz des Kernels (85 Anweisungen)nach dem Laden von Daten mit expliziten IDs
kernel/sql/postgresql/sequence.sql.templatedie Vorlage für SequenzenSchemaerzeugung
kernel/sql/sqlite/schema.sql, cleandata.sqldas SQLite-Schema und saubere Datendie SQLite-Tests vergleichen den Treiber damit
kernel/sql/common/cleandata.sqlsaubere AnfangsdatenReferenz
share/legacy_schema.sqlein MySQL-Dump in share/; kein Code in kernel/, lib/ oder bin/ liest ihnnichts; wenden Sie ihn nicht an

Schema-Handler

settings/dbschema.ini [SchemaSettings] ordnet einem Typ eine Handler-Klasse zu:

TypKlasseDatei
mysql, mysqlieZMysqlSchemalib/ezdbschema/classes/ezmysqlschema.php
postgresqleZPgsqlSchemalib/ezdbschema/classes/ezpgsqlschema.php
sqlite, sqlite3eZSQLiteSchemalib/ezdbschema/classes/ezsqliteschema.php
mongoexpMongoSchemalib/ezdbschema/classes/expmongoschema.php
oracleeZOracleSchemavon der Erweiterung ezoracle hinzugefügt

Ein Handler schreibt DDL aus einem .dba-Schema und liest eine laufende Datenbank in eines zurück. Indexnamen gelten auf SQLite und PostgreSQL datenbankweit; die Handler legen einen kollidierenden Namen als <table>__<name> an. Auf PostgreSQL legt der Handler jede Sequenz vor ihrer Tabelle an, und nach dem Laden von Daten korrigiert der Schema-Installer die Sequenzen (PostgreSQL betreiben).

Erweiterungen und ihr Schema

Eine Erweiterung mit Tabellen liefert ihre eigene share/db_schema.dba (und oft sql/<engine>/*.sql). Die Upgrade-Prüfung liest die share/db_schema.dba jeder aktiven Erweiterung, und die Schemas installierter, aber inaktiver Erweiterungen nur, um Ihnen zu sagen, zu welcher Erweiterung eine Tabelle gehört (Das Schema nach einem Upgrade prüfen). Einige Datentypen liefern eigene Daten: bin/php/ezimportdbafile.php --datatype=<name> importiert sie (Beispiel aus seiner Hilfe: --datatype=ezisbn).

Der Lint-Checker

dbschema.ini [LintChecker] begrenzt die Länge von Namen, damit das Schema auf Engines mit kurzen Bezeichnern gültig bleibt: TableLimit=26, FieldLimit=30, IndexLimit=30, mit Listen historischer Ausnahmen (IgnoredTables[], IgnoredFields[], IgnoredIndexes[]). ezsqldiff.php --lint-check prüft eine Datenbank gegen diese Regeln, statt zwei Schemas zu vergleichen. Entwickler von Erweiterungen sollten ihre Namen innerhalb der Grenzen halten.

Was Sie mit diesen Dateien tun

  • Bearbeiten Sie nie share/db_schema.dba oder die Dateien in kernel/sql/: Ein Upgrade ersetzt sie.
  • Vergleichen Sie Ihre Datenbank nach einem Upgrade mit share/db_schema.dba.
  • Ziehen Sie eine Website zwischen SQL-Engines um, indem Sie nach .dba dumpen und mit einem anderen --type einfügen (Eine Website auf eine andere Engine umziehen).
  • Bewahren Sie einen .dba-Dump Ihrer eigenen Datenbank als portables zweites Sicherungsformat neben dem nativen Dump der Engine auf.

Checkliste

  • To do: Sie wissen, welche Schemadatei jedes Werkzeug liest.
  • To do: Ihre eigenen Erweiterungen liefern eine share/db_schema.dba für ihre Tabellen.
  • To do: Die Namen in Ihren Erweiterungen bestehen ezsqldiff.php --lint-check.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x