Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19
Glossar

ORDA    


 

Ein Attribut ist die kleinste Speicherzelle einer relationalen Datenbank. Verwechseln Sie dabei nicht Dataclass-Attribute und Entity-Attribute:

  • In einem Dataclass-Objekt ist jede Eigenschaft ein Attribut, das ein entsprechendes Feld in der entsprechenden Tabelle (gleicher Name und Typ) abbildet. Siehe auch Verknüpfungsattribute.
  • In einem Entity-Objekt sind Attribute Eigenschaften, die Werte für diese Attribute im Datastore enthalten.

Hinweis: Attribute und Eigenschaften sind ähnliche Konzepte. "Attribut" wird eher für Dataclass-Eigenschaften verwendet, die Daten speichern, während "Eigenschaft" allgemeiner ist und einen Datenteil definiert, der in einem Objekt gespeichert ist.

Ein AttributePath ist der Pfad eines Attributs innerhalb einer bestimmten Dataclass oder Entity (siehe auch PropertyPath).

Eine Dataclass ist ein Objektmodell, das Daten beschreibt. Tabellen in der vom Datastore bereitgestellten Datenbank werden über Dataclasses behandelt. Jede Tabelle hat eine entsprechende Dataclass mit dem gleichen Namen. Jedes Feld der Tabelle ist ein Attribut der Dataclass.

Eine Dataclass bezieht sich auf einen einzelnen Datastore. Weitere Informationen finden Sie unter Dataclasses.

Ein Datastore ist das Schnittstellenobjekt, das ORDA zur Verfügung stellt, um auf eine Datenbank zu verweisen und auf deren Daten zuzugreifen. Die Hauptdatenbank, die vom Befehl ds zurückgegeben wird, ist als Datastore (Haupt-Datastore) verfügbar.

Ein Datastore enthält:

  • eine Verbindung zur 4D Datenbank
  • einen Satz Dataclasses zum Arbeiten mit der Datenbank

Die Datenbank kann eine lokale 4D Datenbank (Main datastore) sein oder eine 4D Server Datenbank, die als REST Ressource abgebildet wird (Remote Datastore).

Wenn der Datastore über den Code verwaltet wird, ist er ein Objekt, dessen Eigenschaften alle definierten Dataclasses sind. Ein Datastore verweist nur auf eine einzige Datenbank. Sie können jedoch mehrere Datastores öffnen, um auf mehrere Datenbanken zuzugreifen.

Hinweise:

  • Ein Datastore verweist nur auf Tabellen mit einem einzigen Primärschlüssel, dagegen nicht auf Tabellen ohne Primärschlüssel oder mit zusammengesetzten Primärschlüsseln.
  • Attribute vom Typ BLOB werden nicht im Datastore verwaltet.

Weitere Informationen finden Sie unter Datastores.

Eine tiefe Kopie dupliziert ein Objekt und alle darin enthaltenen Referenzen. Nach einer tiefen Kopie enthält die kopierte Collection doppelte Elemente und damit neue Verweise auf alle Originalelemente. Siehe auch unteren Abschnitt Flache Kopie (shallow copy).

ds  

ds ist der 4D Befehl, der eine Referenz auf ein Datastore-Objekt zurückgibt. Das ist die Referenz zum Datastore, der auf die 4D Hauptdatenbank zugreifen kann.

Entity  

Eine Entity ist ein Objekt, das einem Dataclass-Modell entspricht. Eine Entity enthält die gleichen Attribute wie die Dataclass.

Eine Entity kann als Instanz der Dataclass angesehen werden - ähnlich wie der Datensatz in der Tabelle -  die der Dataclass im dazugehörigen Datastore entspricht. Eine Entity enthält jedoch auch verknüpfte Daten. Sie dient zum Verwalten von Daten (Anlegen, Aktualisieren, Löschen).

Weitere Informationen finden Sie unter Entities.

Eine Entity-Selection ist ein Objekt. Bei der Abfrage des Datastore wird eine Entity-Selection zurückgegeben. Dies ist ein Satz Referenzen auf Entities, die sich auf dieselbe Dataclass beziehen.

Eine Entity-Selection enthält:

  • einen Satz von 0 bis X Entity-Referenzen
  • immer eine Eigenschaft length
  • Die Eigenschaften queryPlan und queryPath (wenn beim Abfragen angefordert).

Eine Entity-Selection kann auch leer sein. Weitere Informationen finden Sie im Kapitel Entity-Selections.

Da Entities als Referenzen verwaltet werden, werden Daten nur bei Bedarf geladen, d.h. beim Zugriff im Code oder über Interface-Widgets. Dieses Optimierungsprinzip wird Lazy Loading genannt.

Das Objekt Datastore, das zur geöffneten 4D Datenbank passt (Einzelplatz oder Client/Server). Der Befehl ds gibt den Haupt-Datastore zurück.

Methode  

ORDA-Objekte wie Datastores, Dataclasses, Entity-Selections und Entities definieren Klassen von Objekten. Sie bieten spezifische Methoden, um direkt mit ihnen zu interagieren. Sie werden auf einer Instanz des Objekts aufgerufen. Solche Methoden werden auch Member-Funktionen genannt.

Zum Beispiel ist die query()-Methode eine Dataclass Member-Funktion. Wenn Sie ein Dataclass-Objekt in der Variablen $myClass gespeichert haben, können Sie schreiben:

 $myClass.query("name = smith")

In dieser Dokumentation wird der Datentyp "Gemischt" verwendet, um die verschiedenen Datentypen zu bezeichnen, die in Dataclass-Attributen gespeichert werden können. Das sind:

  • Zahl
  • Text
  • Null
  • Boolean
  • Datum
  • Objekt
  • Collection
  • Bild (*)

(*) Der Typ Bild wird nicht von statistischen Methoden wie entitySelection.max( ) unterstützt.

Im Modus "optimistic Lock" werden Entities nicht explizit gesperrt, bevor sie aktualisiert werden. Eine Entity hat einen internen Stempel, der bei jedem Speichern der Entity auf der Festplatte automatisch hochgezählt wird. Die Methoden entity.save( ) oder entity.drop() geben einen Fehler zurück, wenn der Stempel der geladenen Entity nicht mit dem Stempel der Entity auf der Festplatte übereinstimmt oder die Entity gelöscht wurde. Optimistische Sperrverfahren sind nur in der ORDA-Implementierung verfügbar. Das Gegenteil davon ist "pessimistic Lock".

Der Modus "pessimistic Lock" bedeutet, dass eine Entity vor ihrem Zugriff über die Methode entity.lock() gesperrt wird. Andere Prozesse können die Entity weder aktualisieren noch löschen, bis sie entsperrt ist. Die klassische 4D Sprache erlaubt nur pessimistische Sperrverfahren. Das Gegenteil davon ist "optimistic Lock".

Siehe Attribute.

Hinweis: Attribute und Eigenschaften sind ähnliche Konzepte. "Attribut" wird eher verwendet, um Dataclass-Eigenschaften zu bezeichnen, die Daten speichern, während "Eigenschaft" allgemeiner ist und einen Teil von Daten definiert, der in einem Objekt gespeichert ist.

Ein PropertyPath ist der Pfad zu einer Eigenschaft in einem bestimmten Objekt. Wenn die Eigenschaft in mehrere Ebenen verschachtelt ist, wird jede Ebene durch einen Punkt getrennt.

Dies sind Dataclasses, die durch Verknüpfungsattribute verbunden sind.

Verknüpfungsattribute dienen zum Definieren von Verknüpfungen zwischen Tabellen (Viele-zu-Eine und Eine-zu-Viele).

  • Viele-zu-Eine Verknüpfung (dataclassA bezieht sich auf ein Vorkommen von dataclassB): ein Verknüpfungsattribut ist in dataclassA verfügbar und verweist auf eine Instanz von dataclassB.
  • Eine-zu-Viele Verknüpfung (ein Vorkommen von dataclassB verweist auf mehrere Vorkommen von dataclassA): ein Verknüpfungsattribut ist in dataclassB verfügbar und verweist auf mehrere Instanzen von dataclassA.

Eine Dataclass kann rekursive Verknüpfungsattribute haben.

In einer Entity kann der Wert eines Verknüpfungsattributs eine Entity oder eine Entity-Selection sein.

Eine verknüpfte Entity kann als Instanz eines Verknüpfungsattributs in einer Dataclass angesehen werden.

Entity-Selections können sich auf verknüpfte Entities beziehen, gemäß den Verknüpfungsattributen der dazugehörigen Dataclasses.

Eine 4D Datenbank, die mit 4D oder 4D Server geöffnet wird (verfügbar durch HTTP) und als REST Ressource abgebildet wird. Die Referenz auf diese Datenbank ist lokal als Datastore von anderen Workstations aus möglich, wo sie als locaID.zugewiesen wird. Der remote Datastore ist über ORDA Konzepte (Datastore, Dataclass, Entity-Selection...) verwendbar. Für die Verwendung ist eine Lizenz erforderlich.

Session  

Meldet sich eine 4D Applikation an einen Remote Datastore an, wird eine Session auf dem 4D Server (HTTP) angelegt. Ein Session Cookie wird generiert und der lokalen ID des Datastore zugewiesen. 

Beim jedem Öffnen einer neuen Session wird eine Lizenz verwendet, die beim Schließen einer Session wieder freigegeben wird.

Inaktive Sessions werden nach einem Timeout automatisch wieder geschlossen. Das Standard Timeout ist 48 Stunden, es kann vom Entwickler gesetzt werden (es muss >= 60 Minuten sein).  

Eine flache Kopie dupliziert nur die Struktur der Elemente und behält die gleichen internen Referenzen. Nach einer flachen Kopie teilen sich zwei Collections die einzelnen Elemente. Siehe auch oberen Abschnitt Tiefe Kopie (deep copy).

Stempel  

Stempel kommen bei optimistischen Sperrverfahren zum Einsatz. Alle Entities haben einen internen Zähler, den Stempel, der bei jedem Speichern der Entity hochgezählt wird. Durch automatisches Vergleichen der Stempel einer zu speichernden Entity und ihrer Version auf der Festplatte kann 4D gleichzeitiges Ändern derselben Entity verhindern.

 
 

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: ORDA

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v17

 
ARTIKELVERWENDUNG

4D Designmodus ( 4D v19)