Gratulation zu diesem sehr spannenden Projekt.
Meine nullte Frage oder auch Anmerkung: Wo ist der "alles Einfügen"-Button. Sowohl beim Definieren von Forms/Listen, also auch von APIs fehlt mir das. Aber es kann auch sein, daß ich blind bin und die Click-Arbeit, die anfällt, wenn es so etwas tatsächlich nicht gibt, ist nicht wirklich Thema. Aber sie erklärt meine Frage 1 ein bischen.
Meine erste Frage ist die: Was passiert, wenn ich auf die Datenbank direkt zugreife? Selbstverständlich nur lesend und schreibend, ohne irgendwelche Definitionen zu ändern.
Insbesondere stellt sich die Frage, ob dieser globale Index auch in diesem Fall korrekt erzeugt wird (durch einen Trigger, nehme ich an). Natürlich würde id nicht erwähnt in meinem INSERT Statement. Wenn diese Funktionalität nicht in der Datenbank implementiert ist, sondern in der REI-Software (API bzw. User Interface), dann kann man die Fragen nach den INSERT-Statements natürlich vergessen.
Konkret geht um die folgenden Anwendungsfälle in einer Inhouse-Anwendung für Rechnungserstellung und Lagerverwaltung:
Ziemlich statische Stammdaten wie Ländernamen. Natürlich kann ich ein Listenlayout definieren mit CSV-Feature und die Daten in eine passende Tabelle bringen. Aber ich könnte das auch mit psql erledigen. Weil es eine Inhouse-Anwendung ist, würde das nur einmal stattfinden. Bei extern verteilter Software würde man es natürlich einfacher haben wollen.
Einspeisen von Daten durch andere Prozesse. Natürlich kann ich da auch ein API definieren. Aber in der externen Software ist der SQL-Aufruf und der POST-Aufruf gleich viel Arbeit und nicht über das REI-API zu gehen kann nur performanter sein. Eventuell hat man mehr Klarheit in der Software-Wartung durch die API-Definition, aber ich habe das noch nicht erforscht, welche Übersichten REI einem liefert, wenn ein Projekt wirklich groß wird. D.h. ich rechne damit, selbst den Überblick behalten zu müssen.
Halbbeantwortete Zusatzfrage: Habe ich das richtig verstanden, daß die angezeigten Daten nicht automatisch aktualisiert werden? D.h. wenn jetzt jemand die Liste der Datensätze von X am Bildschirm hat und es kommt eine neuer Datensatz von X dazu, gibt es da eine Chance, daß der überall sofort erscheint, ohne daß die Leute auf Verdacht die Seite neu laden? Das wäre natürlich eine Motivation, den Weg über das API zu nehmen, aber ich habe aus den Forumsposts das Gegenteil herausgelesen.
- Lesen von beliebigen Daten durch andere Prozesse. Ich habe ein Meer an Auswertungen und Aufstellungen zu erstellen, bei denen ich eher nicht verlangen kann, daß REI das kann, weil allerlei Domain Knowledge vulgo Application Logic vulgo Extrawürste und Sonderwünsche dahinter stecken. Wir haben da allerlei Teillösungen, die basierend auf SQL-Abfragen diese Aufstellungen generieren. Die müßte man in jedem Fall anpassen, die Frage ist nur, woran man das anpaßt.
Natürlich kann ich je ein API dafür erstellen, oder darüber nachdenken, wie ein modulares API-Konzept aussehen würde, das mir mit wenigen Zusatzkomplikationen das gibt, was mir eine SQL-Query gibt.
Zusatzfrage zu Punkt 2: Ich habe das noch nicht ganz verstanden, wieviel Locking stattfindet. Meine Vermutung ist, daß ein Benutzer, wenn er interaktiv einen Datensatz bearbeitet, diesen Datensatz gegen alle Veränderungen sperrt, auch gegen Schreiben über das API. Das wäre ein Argument für die API-Definition, in den Fällen, in denen das passieren kann. Ich habe aber viele Anwendungsfälle vor Augen, in denen externe Prozesse nur neue Datensätze hinzufügen.
Vielen Dank für diese ersten Informationen.