2016-08-08 29 views
1

Mit Apache Ignite haben Sie die Möglichkeit, mit einem Cache http://apacheignite.gridgain.org/docs/persistent-store zu lesen und auch einen Cache über SQL http://apacheignite.gridgain.org/docs/sql-queries abzufragen.Werden Read-Through und SQL-Indizierung gleichzeitig unterstützt?

Werden diese beiden Funktionen gleichzeitig unterstützt? Weil ich jetzt gerade gelesen habe. Es macht Sinn für mich, es hat einen Schlüssel, wenn es nach einem Schlüssel gefragt wird, den kein Knoten kennt, dann geht es nach db.

Die Ladeart ist jedoch nur für den Primärschlüssel definiert, nicht für andere Felder. Bedeutet dies, dass es mit dem Durchlesen nicht kompatibel ist oder dass andere Methoden implementiert werden müssen, um die volle Funktionalität zu erhalten?

+0

Was meinst du mit voller Funktionalität? – alpert

+0

Ich meine nur einen Cache, der durchlesen und mit SQL abfragen kann. Die Methode load basiert auf dem Primärschlüssel und nicht auf den anderen Feldern. Wie also wäre es in der Lage, ein anderes Feld abzufragen, um in die Datenbank einzulesen? –

Antwort

2

SQL und Read-Through können gleichzeitig verwendet werden, aber Abfragen werden immer nur über die Daten im Speicher ausgeführt. Zum Durchlesen müssen Sie den Schlüsselsatz kennen, so dass er nur für den schlüsselbasierten Zugriff funktioniert (get(), getAll(), usw.). Bei Abfragen müssen Sie die Daten manuell vorab laden (z. B. mit der Methode loadCache()).

Sie können hier zur Diskussion vorgelegt: Sql query over Ignite CacheStore or over database

+0

Das habe ich vermutet. Wenn die JCache-Schnittstelle keine Möglichkeit zum Erstellen beliebiger Ladeverfahren bietet, habe ich nicht gesehen, wie das funktioniert. Wenn Sie aufgrund von Knotenausfällen Daten verloren haben, wissen Sie, ob Ignite wissen möchte, dass Schlüssel, die sich auf einem verlorenen Knoten befanden, nach der SQL-Abfrage neu geladen werden müssen. –

+0

Wenn Sie die Daten verlieren, müssen Sie die Daten immer noch manuell laden, bevor Sie die Abfragen ausführen. Ich würde empfehlen, Backups zu verwenden, um Datenverlust zu vermeiden. –

0

Ja, Sie beide gleichzeitig verwenden können, aber zuerst sollten Sie die Anwendungen zuerst verstehen.

read-through: Immer wenn die Daten aus dem Cache angefordert werden und nicht vorhanden sind, kann Ignite sie automatisch aus der zugrunde liegenden Datenbank laden und das Ergebnis wird an den Benutzer zurückgegeben. Zum Abrufen von Daten können Sie Methoden wie cache.get(key), verwenden. Für weitere Verwendung dieser Verbindung Data Loading

SQL-Abfragen: Erste Daten sollten im Cache sein, um SQL-Abfragen zu verwenden, und SQL-Indizierung hilft Ihnen, schneller abzufragen, indem Sie Index für diese Spalte erstellen. Für weitere Informationen können Sie sich beziehen Query configuration by annotations