2017-07-13 3 views
2

Bei einer beliebigen datomischen Abfrage q in Datenbank d ist es möglich, eine Abfrage x von q abzuleiten, die bei Ausführung von d alle relevanten Daten zurückgibt, die zum Erzeugen des Ergebnisses erforderlich sind q auf d? Die Ergebnisse von q auf d sollten den Ergebnissen von q auf r entsprechen.Datomic - Alle für eine beliebige Abfrage relevanten Daten abrufen

Ich versuche, Datomic mit einem Datascript-Client zu synchronisieren. Ich kenne alle Abfragen im Voraus und möchte eine Teilmenge meiner Datomic-Datenbank in einem Datascript erstellen, das auf Daten beschränkt ist, die für die clientseitigen Abfragen relevant sind. Der Einfachheit halber sollten keine parametrisierten Abfragen vorausgesetzt werden. Obwohl Id mit Platzhaltern erwarten, könnte man den gleichen Effekt für beliebige Abfrage-Eingabeparameter erzielen, und eine Lösung, die dies zulässt, wäre bevorzugt.

Ich weiß, dass ich alle von einer Abfrage zurückgegebenen Entity-IDs abrufen kann, indem ich sie ändere und sie für die Datenbank ausführe und dann alle diese Entitäten berühre, aber ich hoffe auf etwas Effizienteres, das nur die Teilmenge der Entität zurückgibt Bezugspunkte, die sich auf eine Abfrage beziehen und die aus der Abfrage q ALONE abgeleitet werden können, ohne q zuerst d ausführen zu müssen.

Danke.

Antwort

3

Ich glaube nicht - Abfragen arbeiten nicht direkt auf Daten. Sie beginnen mit Daten, wenn Sie die Datenbank abfragen, aber in Mengen konvertiert werden und alle nachfolgenden Operationen auf Mengen ausgeführt werden. Auf diese Weise können Abfragen auf beliebigen Auflistungen genauso ausgeführt werden wie auf Datomic-Indizes.

Ich glaube, https://github.com/mpdairy/posh versucht, Abfrage-Analyse zu tun, um herauszufinden, welche Daten berührt es. Vielleicht einen Blick darauf werfen?

+0

Danke Nikita, also zumindest sollte ich in der Lage sein, die Abfrage zu ändern, um alle Entity-IDs zu binden und dann Datomic für alle Transaktionen abzufragen, die hinzugefügt wurden? zu diesen Entitäten richtig? Es ist weniger effizient, sollte aber alle relevanten Daten ergeben? – Scott

+0

Wenn Ihre Abfrage keine Prädikate, Regeln und immer Abfragen der gleichen DB hat, denke ich, dass es getan werden kann, sicher –

Verwandte Themen