2017-10-09 1 views
0

Ich mache einen Proof of Concept. Ich habe eine "ArticleRead" V-Klasse mit einer nicht eindeutigen Eigenschaft "JournalTitle" (viele Lesevorgänge aus jedem Journal), eine "Product" V-Klasse mit einer nicht eindeutigen Eigenschaft von "Subject" und eine Kante zwischen ihnen mit einer Eigenschaft namens "Art".Wählen Sie die Top 50 aus der V-Klasse basierend auf einem Wert aus einer anderen Klasse

ArticleRead hat für jeden Artikel, den ein Benutzer unseres Systems liest, einen Scheitelpunkt eingefügt.

Kann jemand eine ungefähre SQL geben, um die Top 50 Zeitschriftentitel aus einem bestimmten Thema zu finden? In unserem aktuellen RDBMS müssen wir die Produkte mit diesem Thema finden, dann alle Artikel nach journalTitle dieser Produkte hochzählen und dann die Top 50 holen. Es dauert mehrere Lebenszeiten.

Auch irgendwelche Vorschläge zu den Modifikationen an der Kante oder was auch immer sind willkommen (dies ist ein Beweis des Konzepts, mit dem wir spielen nach sehr wenig Selbsttraining).

Antwort

0

Sie können versuchen, die folgenden:

SELECT FROM ( 
    SELECT JournalTitle, count(*) as count FROM (
    SELECT expand(out()) FROM Product WHERE Subject = ? 
    ) GROUP BY JournalTitle 
) ORDER BY count LIMIT 50 

oder

SELECT FROM (
    SELECT JournalTitle, count(*) as count 
    FROM ArticleRead 
    WHERE in()[0].Subject = ? 
) ORDER BY count LIMIT 50 

Nur für das Protokoll, wie dies für den Betrieb (eine einzelne Ebene Traversal und eine Aggregation) die Vorteile einer Graph-Datenbank verglichen zu einer relationalen db sind typischerweise nicht wesentlich

+0

Danke. die "echten" Daten hätten ein Kind des Produkts für das Subjekt, mehr Klassen mit Kanten zu den Artikeln, die gelesen werden, und Terabytes an Textrelevanten. Die schiere Größe der Artikel liest uns jedes Jahr ältere Daten in Oracle weg. Ich hoffe, dass Dokument/Graph-Datenbanken eine bessere Lösung darstellen. Ich habe ein paar Probleme damit, aber ich denke, ich habe meine Kante zurück (out würde die Produkt-ID in meinem Rand sein) und ich glaube, ich verdorben es versuchen, das "in" und "out" umzubenennen. –

+0

Leichte Optimierung - GROUP BY JournalTitle ORDER BY COUNT LIMIT 50 –

Verwandte Themen