Gegeben eine Entität (sagen Sie eine Datei oder eine Bibliothek/ein Paket), die ihre Versionen und Zweige im Laufe der Zeit entwickeln kann, auf der Suche nach einer optimierten Datenstruktur, die ich durch die Versionen navigieren kann zu einer bestimmten Instanz der Entität.Q: Optimierte Datenstruktur für Branched und Versioned Entities
Zum Beispiel (ein bisschen konstruiertes Beispiel) gegeben Einträge wie:
MySIMDIntristicsLib.v1~archMIPS.v1~fbsd.v1
MySIMDIntristicsLib.v1~archMIPS.v2~fbsd.v1
MySIMDIntristicsLib.v1~archX86.v1~win.v1
MySIMDIntristicsLib.v1~archX86.v2~win.v1
MySIMDIntristicsLib.v1~archX86.v2~win.v2
MySIMDIntristicsLib.v2~archX86.v1~win.v1
// get latest across all branches
get(Entity="MySIMDIntristicsLib", branch[(latest) "~"])
returns: "MySIMDIntristicsLib.v2~archX86.v1~win.v1"
// get latest across archMips/fbsd branch
get(Entity="MySIMDIntristicsLib", branch[(latest) "archMIPS~fbsd"])
returns: "MySIMDIntristicsLib.v1~archMIPS.v2~fbsd.v1"
// get earliest for archX86 v2 branch
get(Entity="MySIMDIntristicsLib", branch[(earliest) "archX86.v2~"])
returns "MySIMDIntristicsLib.v1~archX86.v2~win.v1"
Ich vermute, so etwas gibt es bereits (seit Paketverwaltung oder Quellcodeverwaltung zu der oben genannten Zugriffssemantik ähnlich nutzt).
Ich suchte nach In-Memory-Datenstrukturen für die oben genannten mit guter spätester/frühester Zugriffszeit, sondern auch Sinkflug einfügen/entfernen Geschwindigkeit.
In einer brutalen Kraft Ansatz, denke ich, dass das oben mit Min Max heap für jeden Zweig implementiert werden kann, die Versionen haben kann.
Allerdings kann es da draußen schon etwas Besseres geben. ich meine übliche Quelle für diese Art von Dingen auch geprüft, Redisson - aber nicht sehen, wenn es eine explizite Implementierung der Datenstruktur ist oben für die oben
Der DSL meiner eigenen Konstruktion ist, hat wahrscheinlich einige Löcher Auch wenn es bessere DSLs/APIs für diese Art des Datenzugriffs gibt - würde ich gerne auch lernen.
Thx für deine Antwort. Ich suche jedoch nach einer explizit entworfenen Datenstruktur für das obige Problem, die von meinen Navigationsroutinen im Speicher verwendet werden kann. –
Korrekte und eine relationale Datenbanktabelle mit den entsprechenden Indizes ist eine explizit entworfene Datenstruktur für das obige Problem. Viel Glück. – mfulton26