NextTypes ist ein standardbasiertes Informationsspeicher-, Verarbeitungs- und Übertragungssystem , das die Eigenschaften anderer Systeme wie Datenbanken, Programmiersprachen, Kommunikationsprotokolle, Dateisysteme, Dokumentmanager, Betriebssysteme, Frameworks, Dateiformate und Hardware in einem einzigen eng integrierten System in einem einzigen eng integrierten System integriert.
Die Referenzimplementierung ist in Java 17 programmiert und verwendet den PostgreSQL 15 -Datenbankmanager. Es wird unter der Apache 2.0 -Lizenz in einer leicht installierbaren Kriegsdatei verteilt. Um die Software-Schnittstelle (im schreibgeschützten Modus) zu testen, ohne sie installieren zu müssen, können Sie die Projektwebsite untersuchen, die mit dieser Software entwickelt wird. Im Menü links, im Abschnitt "Bedienfeld" und in den Schaltflächen oben/rechts auf der Seite finden Sie die verfügbaren Aktionen.
NEXTTYPES integriert die primitiven PostgreSQL -Datentypen wie Zahlen, Text, Binärdatum, Datteln, JSON oder XML, obwohl ihnen unterschiedliche Namen zur Vereinfachung der Nomenklatur und zur Erleichterung der Integration in andere Systeme geben. Anstatt "Smallint", "Integer" und "Bigint" der Root "int", gefolgt von der Anzahl der Bits (int16, int32 und int64) zu verwenden, wird beispielsweise verwendet, oder anstelle von "Zeichen variieren" oder "varchar" wird es "String" verwendet, wie in einigen Programmiersprachen.
Außerdem werden andere Datenarten wie HTML oder URL hinzugefügt. Die Verwendung von PostgreSQL, um zusammengesetzte Datentypen für Spalten zu erstellen, enthält Datentypen für Dateien, Dokumente, Bilder, Audios und Videos. Der binäre Inhalt dieser Felder kann mit dem Clamav -Antivirus gescannt werden. Komplexe Datentypen wie HTML oder Bilder bestehen aus Elementen, auf die einzeln zugegriffen werden kann und Einschränkungen für sie angewendet werden können, wie z. B. Tags oder Formate zulässig.
Das Speichersystem ist in erster Linie SQL -basiert, ist jedoch ein relationaler/Netzwerk/Objekte/Dateien -Hybrid. Jede Tabelle ist ein Datentyp und jede Zeile in einer Tabelle ist ein Objekt. Jede Zeile verfügt über eine Spalte mit einer Kennung (ID), die die Primärschlüssel und mehrere Spalten mit Metadaten ähnelt, die denen der Dateien ähneln: Erstellungsdatum (CDate), Update -Datum (UDate) und Backup (Backup). Der Rest der Spalten sind die Datenfelder des Objekts. Das Datum der Erstellung (CDate) und der Änderung (Verehrung) der Datentypen wird ebenfalls gespeichert. Datteln verwenden den UTC -Standard und umfassen Stunden, Minuten, Sekunden und Mikrosekunden. Der ISO 8601 -Standard wird für seine Darstellung im Text verwendet.
Die Felder der Objekte können einen primitiven Typ sein oder auf andere Objekte verweisen, die die Kennung als Fremdschlüssel verwenden und so eine Netzwerkdatenbank bilden. Die Kennung ist eine Textzeichenfolge mit einem eindeutigen Index und erhält standardmäßig eine UUID. Diese Vereinfachung und Einheitlichkeit der primären und fremden Schlüssel erleichtert die Automatisierung und Integration in andere Systeme.
Die Korrespondenz mit dem Entitätsbeziehungsmodell ähnelt dem des relationalen Modells. Jedes Entität ist ein Objekt, Attribute sind Felder, und Beziehungen und mehrere Attribute werden mit Feldern hergestellt, die sich auf andere Objekte beziehen.
Objektkennung und Felder können Teil von nicht eindeutigen, eindeutigen und Volltext-Suchindizes sein. Die Definition von Datentypen und Objekten kann exportiert und nach/von JSON importiert werden, wodurch Sicherungskopien und die Übertragung von Informationen zwischen Systemen ermöglicht werden können.
{
"Name": "Artikel_Language",
"CDate": "2015-04-01T14: 30: 16Z",
"Adate": "2018-09-26T14: 59: 35,53z",
"Felder": {
"Titel": {
"Typ": "String",
"Länge": 254,
"Not_null": Richtig
},
"Sprache" : {
"Typ": "Sprache",
"Länge": 100,,
"Not_null": Richtig
},
"Text": {
"Typ": "html",
"Not_null": Richtig
},
"Artikel": {
"Typ": "Artikel",
"Länge": 100,,
"Not_null": Richtig
}
},
"Indizes": {{
"al_ft_search_index": {
"Modus": "FullText",
"Fields": ["Titel", "Text"]
}
},
"Aktionen": {}
}Die Änderungs- und Aktualisierungsdaten ermöglichen die Implementierung eines optimistischen Parallelitätskontrollsystems. Wenn bei der Änderung eines Typs oder der Aktualisierung eines Objekts das letzte bekannte Datum der Änderung oder Aktualisierung angegeben ist, prüft das System, dass dieses Datum dem aktuellen Datum des Typs oder des Objekts entspricht, um auszuschließen, dass es von einem anderen Benutzer zu einem späteren Zeitpunkt geändert wurde.
Die "Backup" -Metadaten werden verwendet, um ein inkrementelles Sicherungssystem aktualisierter Objekte mit vollständigen Kopien zu erstellen. Jeweils eine bestimmte Anzahl inkrementeller Kopien. Jedes Mal, wenn ein Objekt aktualisiert wird, wird die Metadaten "Backup" in "false" geändert, um anzuzeigen, dass es keine Kopie dieses Objekts gibt und es in der nächsten Sicherung kopiert werden sollte.
Durch die Verwendung von PostgreSQL -Funktionen wie Transaktions -DDL und aufstockenden Einschränkungen ermöglicht das System die Erstellung oder Änderung verschiedener Datentypen und Objekte in derselben Transaktion, während das System verwendet wird.
Um das Volltext-Suchsystem zu ergänzen, wird die Extraktion von Metadaten und Text aus PDF, Opendocument und Office Open XML-Dokumenten, Binärformaten von Microsoft Office und anderen Formaten mit TIKA hinzugefügt.
NextTypes ist ein hauptsächlich relationales System mit einigen objektorientierten Funktionen, die die Verwendung und Automatisierung von Programmiersprachen erleichtern. Im Gegensatz zu Objektrelationssystemen verwendet es keine Korrespondenz der Objektklasse, sondern verwendet stattdessen eine Reihe von generischen Klassen und Methoden für alle Typen und Objekte, mit denen die grundlegenden Aktionen (CRUD) der Erstellung, Lesen, Aktualisierung und Löschung ausgeführt werden können.
Für komplexe Aktionen wie Abfragen, die mehrere Tabellen verwenden, bietet es einem System ein höheres Abstraktionsniveau als JDBC, das die Verwendung von SQL erleichtert und in die Datentypen des Speichers integriert wird. Dieses System ermöglicht parametrisierte Abfragen mit der Ausführung einer einzelnen Methode und verwendet Tabellen- und Spaltennamen als Parameter, die Schutz vor SQL -Injektion bieten. Außerdem können Sie ein Array als Parameter verwenden.
Grundlegende Aktionen können ähnlich wie SQL -Trigger abgefangen werden, um Typen oder Objekte zu ändern oder zusätzliche Aktionen auszuführen. Darüber hinaus können neue Aktionen definiert und dem System zur Verfügung gestellt werden.
In der Java -Implementierung haben einige primitive Datentypen im Speicher, wie z. B. Zahlen, eine direkte Korrespondenz mit Klassen in der Java -Laufzeitumgebung. Für andere Typen wie HTML, Dokumente, Bilder oder Videos verfügt das System über Klassen, die sich in die Speichertypen integrieren und die Erstellung und Änderung von Daten ermöglichen.
Das verwendete Hauptprotokoll ist HTTP, obwohl für jedes andere Protokoll Adapter erstellt werden können. Das System enthält einen SMTP -Adapter, der den Empfang von E -Mails und deren Konvertierung in Objekte ermöglicht. Zusätzlich zu HTTP wird eine REST -Schnittstelle mit Authentifizierung über X.509 -Zertifikate und -kennwörter (mit BCrypt verschlüsselt), HTTP Basic Auth, Schutz vor DOS -Angriffen und Verwaltung der Roboter -Datei und Web -Sitemap erstellt. Diese Schnittstelle ermöglicht den Zugriff auf alle Arten von Daten, Objekten, Feldern und Elementen mit einer URL.
Die Speicher-, Verarbeitungs- und Übertragungssysteme bilden ein MVC -System, das den Zugriff auf die Daten über verschiedene Ansichten oder Formate ermöglicht: HTML, WebDAV, Caldav, JSON, XML, RSS, Icalendar oder andere Systeme. Jede dieser Ansichten kann für alle Arten von Daten oder Objekten oder einigen von ihnen geändert werden, um sie an die Bedürfnisse des Benutzers anzupassen. Die UTF-8-Codierung wird im gesamten System verwendet, um die Verwendung von Text in verschiedenen Sprachen zu ermöglichen.
Die HTML-Ansicht bietet eine reaktionsschnelle und mehrsprachige grafische Schnittstelle, mit der alle Aktionen des Speicher-/Verarbeitungssystems durchgeführt werden können. Es ist in HTML5/CSS3 mit SVG -resizbaren Icons, WCAG -Compliance, Textredakteuren mit Syntax -Hervorhebung (Codemirror) oder Wysiwyg (Tinymce) und dem Schutz vor CSRF und XS programmiert. Diese Ansicht integriert die HTML5 -Datentypen mit denen von NextTypes, wobei die erforderlichen Komponenten der Schnittstelle hinzugefügt werden, um die von HTML5 bereitgestellten Steuerelemente zu ergänzen. Im Datentyp "Beispiel" können Sie die Steuerelemente für alle primitiven Datentypen und Objektreferenzen sehen. Sie können die HTML -Ansicht anpassen, indem Sie das DOM ändern.
Jedes Objekt verfügt über einen identifizierenden QR -Code mit dem Namen des Servers, der Art der Daten und der Kennung des Objekts. Dieser Code kann verwendet werden, um echte Objekte zu kennzeichnen oder ihn aus einer mobilen Anwendung zu lesen. Es besteht auch die Möglichkeit, einige Daten im JSON-LD-Format zu exportieren.
Andere Ansichten ermöglichen Remote -Zugriff auf Daten von jedem System. Durch die Verwendung von JavaScript- und JSON- oder XML -Ansichten ist es möglich, auf alle Daten zuzugreifen und die Informationsverarbeitung im Browser durchzuführen. Mit der WebDAV -Ansicht können Sie Daten als Dateisystem zugreifen, in dem die Datentypen und Objekte Ordner und die Felder Dateien sind. Auf diese Weise können Sie jedes Feld eines Objekts mit einer externen Anwendung öffnen und ändern. Sie können beispielsweise ein Dokumentfeld mit einer Textverarbeitungsanwendung bearbeiten.
Die Caldav -Ansicht ist eine Änderung der WebDAV -Ansicht, mit der Sie einige Objekte als Kalenderereignisse freilegen können. Diese Ereignisse können auch mit der Icalendar -Ansicht zugegriffen werden. Die RSS -Ansicht ermöglicht den Zugriff auf Objektlisten mit jedem Client dieses Formats.