2017-06-09 6 views
0

Sagen wir, wir deklarieren die Klasse "Video" und eine der Spalten in dieser Klasse ist "Kommentare". Jeder Kommentar ist eine Zeichenfolge und die Kommentarspalte ist ein Array mit vielen Zeichenfolgen.Ist die Parse Array-Implementierung eine Optimierung für große Datenmengen?

Sicher ist es eine Architektur, die funktioniert, aber ich bin mir nicht sicher, wenn es um eine Menge Kommentare pro Video geht.

Angenommen, es gibt einen Client, der jedes Mal 10 Kommentare annimmt: video.comments[:10]. Führt die Tatsache, dass ich das Kommentar-Array abgerufen habe, auch dazu, dass die restlichen Tonnen von Kommentaren abgerufen wurden? Oder Parse hat die Optimierung für uns vorgenommen, um nur die abgerufenen Kommentare zu holen?

Was ist die Lösung für diese Art von Problemen?

Eine Lösung, an die ich denke, ist, einen Dienst auf der Serverseite zu schreiben, der ein Array nur der erforderlichen Kommentare beantwortet, aber es ist nicht nützlich, wenn Parse uns bereits eine solche Lösung in der Definition anbietet ihr Array in der DB.

Antwort

1

Ich würde vermeiden, diese in Arrays zu haften. Ich habe mit dem Speichern von Datenfeldern wie dem Parsen gearbeitet und es kann schnell und ineffizient werden.

Ich würde empfehlen, dass Sie eine separate Tabelle haben, die die Objekt-ID des Videos, den Kommentar, den Benutzer usw. enthält. Dann erhalten Sie die Kommentare, die Sie in der VideoComment-Klasse equalTo("videoId", videoId); abfragen und den Standard verwenden können Paginierung abfragen (Überspringen + Limit), um die benötigten Kommentare zu erhalten.

+0

Aber dann tritt immer noch das Problem auf, viele Kommentare abzurufen. Aber, vielleicht können wir 'query.limit' das und dann fragen Sie den Server für weitere Kommentare, die nicht in den Vorschauen Ergebnisse mit' query.notContainedIn' enthalten sind. Damit ich denke, dass Ihre Lösung mein Problem lösen wird. Vielen Dank, Ich werde für Schlussfolgerungen aktualisieren :) – Etgar

+1

Sie würden query.skip und query.limit verwenden, um Seitenumbruch zu behandeln. Ich würde vermeiden, das Array von Zeigern zu machen. Das wird hässlich. Verwenden Sie einfach die Abfrage, um die ersten x-Kommentare für die Vorschau abzurufen, wenn Sie sie benötigen. Sie können eine Funktion erstellen, die Ihnen sowohl das Videoobjekt, das Sie benötigen, als auch das Array der ersten x Kommentare zurückgibt, ohne das Array auf den Videoobjekten zu speichern. –

+0

Würden Sie die Verwendung von Relationen anstelle Ihres Vorschlags empfehlen? Wie ich es sehe, ist Ihr Vorschlag viel einfacher zu implementieren, aber vielleicht sollte Relation die richtige Wahl sein? – Etgar

Verwandte Themen