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.
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.
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.
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:
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:
Der vollständige Code der Klasse befindet sich im Ordner:
..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Shared\Models
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:
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:
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.
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:
Für Felder ohne Namen werden eindeutige IDs generiert.
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.