8. April 2025
Einrichten der Verbindung mit Apache Ignite in FastReport .NET
Apache Ignite ist eine verteilte In-Memory-Computing-Plattform, die die Verarbeitung und Speicherung großer Datenmengen im Speicher ermöglicht, um eine hohe Leistung und Skalierbarkeit zu erreichen.
In diesem Artikel betrachten wir, wie man eine Verbindung mit Apache Ignite in FastReport .NET einrichtet. Sie werden erfahren, welche Schritte Sie befolgen müssen, um das Plugin über den Code und den Berichtsdesigner zu verbinden. Wenn Sie unseren Empfehlungen folgen, können Sie Apache Ignite effektiv als Datenquelle für Ihre Berichte in FastReport .NET nutzen.
Das für die Verbindung mit Apache Ignite implementierte Plugin ist eine leichtgewichtige Lösung, die auf Ignite.NET Thin Client basiert.
Funktionen des Apache Ignite-Plugins
Verbindung mit Apache Ignite-Clustern. Das Plugin ermöglicht es Ihnen, eine Verbindung mit einem oder mehreren Knoten in einem Cluster herzustellen. Knotenadressen werden im Format Host:Port angegeben und durch Kommas getrennt;
Arbeiten mit Caches: die Interaktion mit Caches wird sowohl im Schlüssel-Wert-Modus als auch in Form von SQL-Tabellen unterstützt;
Authentifizierung: das Plugin unterstützt die Authentifizierung, wenn die Option „authentificationEnabled“ in der Clusterkonfiguration aktiviert ist;
Verarbeitung verschiedener Datentypen: das Plugin gewährleistet die korrekte Verarbeitung verschiedener Datentypen, einschließlich benutzerdefinierter Objekte.
Merkmale der Implementierung von Apache Ignite
Ignite bietet zwei Möglichkeiten zur logischen Darstellung von Daten: Schlüssel-Wert-Caches und SQL-Tabellen (Schemas). Trotz der Unterschiede sind diese Darstellungen gleichwertig und können die gleichen Daten anzeigen.
In Ignite sind eine SQL-Tabelle und ein Schlüssel-Wert-Cache zwei gleichwertige Möglichkeiten, um eine interne Datenstruktur darzustellen. Der Zugriff auf Daten kann über die Schlüssel-Wert-API, SQL-Anweisungen oder beide Methoden erfolgen.
Ein Cache ist ein Satz von Schlüssel-Wert-Paaren, auf die über die Schlüssel-Wert-API zugegriffen wird. Eine SQL-Tabelle von Ignite ist vergleichbar mit Tabellen in herkömmlichen Datenbankverwaltungssystemen, weist jedoch einige zusätzliche Einschränkungen auf. Beispielsweise muss jede SQL-Tabelle einen Primärschlüssel haben.
Eine Tabelle mit einem Primärschlüssel kann als Schlüssel-Wert-Cache betrachtet werden, bei dem die Primärschlüsselspalte als Schlüssel fungiert und die anderen Tabellenspalten die Objektfelder (Werte) sind.
Der Hauptunterschied zwischen diesen beiden Datendarstellungen besteht in der Methode des Zugriffs auf sie. Mit einem Schlüssel-Wert-Cache können Sie mit Objekten in unterstützten Programmiersprachen arbeiten. SQL-Tabellen hingegen unterstützen die Standard-SQL-Syntax, was z. B. bei der Migration von Daten aus einer bestehenden Datenbank nützlich sein kann.
Einfügen von Plugins in ein Projekt
Um das Plugin zu verwenden, müssen Sie zuerst das Projekt unter folgendem Pfad erstellen: ..\Extras\Core\FastReport.Data\FastReport.Data.Ignite. Als nächstes müssen Sie das Plugin registrieren. Dies kann auf zwei Arten erfolgen.
Methode 1. Mit einem Code.
Kopieren Sie den folgenden Code und fügen Sie ihn in Ihr Projekt ein. Dies muss nur einmal beim Starten der Anwendung durchgeführt werden.
FastReport.Utils.RegisteredObjects.AddConnection(typeof(IgniteDataConnection));
Methode 2. Mit dem Berichtsdesigner. Um den Connector im Designer zu verbinden, gehen Sie in der Ribbon-Oberfläche zum Menü „Datei|Einstellungen…“ (in der Standardoberfläche zum Menü „Ansicht|Einstellungen…“). Wählen Sie in dem sich öffnenden Fenster die Registerkarte „Plugins“ und fügen Sie die erstellte .dll des Plugins wie unten gezeigt hinzu.
Nachdem Sie das Plugin hinzugefügt haben, müssen Sie den FastReport .NET Designer neu starten.
Datenquelle im Designer verbinden
Um eine Verbindung mit Apache Ignite herzustellen, gehen Sie zum Menü „Daten“ und wählen Sie „Neue Datenquelle“ aus.
Klicken Sie in dem daraufhin angezeigten Fenster auf die Schaltfläche „Neue Verbindung“ und anschließend in der Dropdown-Liste der Verbindungsarten auf die Option „Verbindung zu Apache Ignite“. Geben Sie in dem daraufhin angezeigten Fenster die Knotenadresse(n), den Benutzernamen und das Passwort (falls vorhanden) an.
Wenn die Verbindung erfolgreich ist, werden im nächsten Schritt die Tabellen (Caches) aufgelistet, die in den im vorherigen Schritt angegebenen Knoten enthalten sind:
Unterschiede beim Arbeiten mit Caches im Plugin
Das Plugin unterstützt die Arbeit mit Caches, die sowohl als Schlüssel-Wert als auch als SQL-Tabellen erstellt werden.
Die Art und Weise, wie der Cache in Apache Ignite erstellt und konfiguriert wird, wirkt sich direkt auf die Zusammensetzung der Felder und die Anzeige der Datentypen aus. Je nach gewählter Methode (z. B. Verwendung von Klassen mit [QuerySqlField]-Attributen, programmgesteuertes Definieren über QueryEntity oder Arbeiten mit dynamischen Daten) kann das Ergebnis variieren. Dies gilt sowohl für die Liste der verfügbaren Felder als auch für ihre Datentypen.
Die folgenden Codebeispiele verwenden Ausschnitte aus den offiziellen Apache Ignite-Funktionsbeispielen. Diese Beispiele können unter diesem Link im Abschnitt BINARY RELEASES heruntergeladen werden: https://ignite.apache.org/download.cgi.
Öffnen Sie das empfangene Archiv und wechseln Sie zum nächsten Ordner:
..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Thin
In diesen Beispielen verwenden wir die benutzerdefinierte Klasse Organization, die das Datenmodell der Organisation darstellt. Diese Klasse verfügt über folgende Eigenschaften:
Name: Name der Organisation. Es ist mit dem Attribut [QuerySqlField(IsIndexed = true)] gekennzeichnet, wodurch es in SQL-Abfragen verwendet werden kann und ein Index erstellt wird, um die Suche zu beschleunigen.
Address: Adresse einer Organisation, die durch ein verschachteltes Objekt vom Typ Adresse dargestellt wird. Dank des Attributs [QuerySqlField] ist sie ebenso für SQL-Abfragen verfügbar.
Type: Organisationsform (z. B. kommerziell oder nicht-kommerziell), die durch die OrganizationType Aufzählung dargestellt wird.
LastUpdated: Zeitstempel, der angibt, wann die Daten der Organisation zuletzt aktualisiert wurden.
Der vollständige Code der Klasse befindet sich im Ordner:
..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Shared\Models
Erstellen eines Cache mit QueryEntity
QueryEntity ist eine Apache Ignite-Komponente, mit der Sie die Datenstruktur (Schema) für den Cache programmgesteuert beschreiben und Felder mit ihren Typen manuell angeben können.
Für Caches mit Metadaten (QueryEntity) werden Operationen zum Abrufen einer Liste von Feldern und ihren Datentypen unterstützt. Benutzerdefinierte Datentypen werden wie folgt behandelt:
Nur Felder, die mit dem [QuerySqlField] Attribut gekennzeichnet sind, werden in der Liste der Felder angezeigt.
Felder werden im Format data_type.field_name dargestellt.
Wenn der Cache zum Beispiel in der Konfigurationsphase wie folgt angelegt wird
var organizationCache = ignite.GetOrCreateCache<int, Organization>( new CacheClientConfiguration("dotnet_cache_query_organization", new QueryEntity(typeof(int), typeof(Organization))));
Werden in der Liste der Felder beim Herstellen einer Verbindung mit einer vorgefertigten Apache Ignite-Instanz in FastReport nur die Felder aus der Klasse „Organisation“ aktiviert, die mit dem [QuerySqlField] Attribut gekennzeichnet sind.
Bei der Anzeige der Daten werden jedoch alle Felder aus dem Cache angezeigt:
Erstellen eines Cache ohne QueryEntity
Wenn der Cache in der Konfigurationsphase ohne QueryEntity erstellt wird, werden die Datentypen aller Felder als String definiert. Beispielcode:
ICacheClient<int, Organization> cache = ignite.GetCache<int, Organization>("dotnet_cache_put_get");
In der Liste der Felder werden alle verfügbaren Felder angezeigt, unabhängig davon, ob das [QuerySqlField] Attribut vorhanden ist oder nicht. Dies ist die zweite Möglichkeit, einen Cache zu erstellen.
Arbeiten mit als SQL-Tabellen erstellten Caches
Betrachten wir nun die dritte Möglichkeit, mit Caches zu arbeiten. Hier ist ein Beispiel für das Erstellen und Füllen eines Cache als SQL-Tabelle:
cache.Query(new SqlFieldsQuery(
"CREATE TABLE IF NOT EXISTS city (id LONG PRIMARY KEY, name VARCHAR) WITH \"template=replicated\"")).GetAll();
const string addCity = "INSERT INTO city (id, name) VALUES (?, ?)";
cache.Query(new SqlFieldsQuery(addCity, 1L, "Forest Hill"));
cache.Query(new SqlFieldsQuery(addCity, 2L, "Denver"));
cache.Query(new SqlFieldsQuery(addCity, 3L, "St. Petersburg"));
Bei solchen Caches enthalten die Metadaten (QueryEntity) Informationen über die Datentypen jedes Feldes.
Der Apache Ignite-Cache kann Daten speichern, die keine explizit definierten Feldnamen haben. Zum Beispiel:
var cache = ignite.GetOrCreateCache<int, object>("put-get-example");
int key = 1;
var val = new Address("1545 Jackson Street", 94612);
cache.Put(key, val);
int key1 = 2;
var val1 = 942.28956;
cache.Put(key1, val1);
int key2 = 3;
var val2 = "test String";
cache.Put(key2, val2);
Wenn Sie in FastReport eine Verbindung mit einer Apache Ignite-Instanz herstellen (mit dem Code aus dem obigen Beispiel), sehen Sie folgendes.
In diesem Beispiel:
enthalten die Felder „Street“ und „Zip“ der benutzerdefinierten Klasse „Address“ Namen, da sie in der Klassenstruktur definiert sind.
haben die Werte wie die Zahl 942.28956 oder die Zeichenkette "test String" keine Namen, da sie als einfache Schlüssel-Wert-Objekte zum Cache hinzugefügt werden.
Für Felder ohne Namen werden eindeutige IDs generiert.
Schlussbemerkung
Wir haben uns angesehen, wie man in FastReport .NET eine Verbindung mit Apache Ignite einrichtet. Wenn Sie die oben beschriebenen Schritte befolgen, können Sie diese Systeme integrieren und die vollständigen Funktionen von Apache Ignite als Datenquelle in Ihren Berichten nutzen.
Apache Ignite ermöglicht einen schnellen Datenzugriff und eine schnelle Datenverarbeitung, und FastReport .NET ermöglicht eine leistungsstarke Berichterstellung. Ihre Integration eröffnet neue Horizonte für die Datenanalyse und -visualisierung.
Wir hoffen, dass dieser Artikel hilfreich war und Ihnen helfen wird, Apache Ignite effektiv in Ihren Projekten mit FastReport .NET zu nutzen.