2017-10-26 3 views
0

Ich möchte eine Anwendung erstellen, die Daten von mehreren Endpunkten verwendet.Bewährte Methode zur Verwendung mehrerer APIs oder Datenquellen für eine Anwendung

Können sagen, ich habe:

  • JSON API für etwa für Abrufen von Daten Kino Daten
  • XML Export bekommen ???
  • Eine weitere JSON API für etwas anderes
  • eine CSV-Datei für etwas mehr Scheiße ...

In meiner Anwendung möchte ich diese Daten alle zusammen bringen und Ansichten für ihn bauen und so weiter ..

Meine Idee war, eine Datenbank durch Erstellen von Schemas für alle diese Datenquellen einzurichten, so dass ich eine Art "Import-Skripte" machen kann, die ich aufrufen kann, wann immer ich die neuesten Daten bekommen möchte.

Ich dachte an Schemata, weil ich in der Lage sein würde, eine neue API mit jeder Art von Schema leicht zu erlernen.

Bitte erleuchte mich über die Möglichkeiten und Best Practices gibt (Theorie und Praxis, wenn möglich: P)

Antwort

0

Sie sind völlig Recht auf eine Datenbank zu machen. Aber das eigentliche Problem wird wahrscheinlich nicht sein, wie Sie Ihre Daten speichern. Es wird sein, wie es zusammen logisch und semantisch zusammenpassen.

Ich schlage vor, dass Sie zuerst einen guten Blick darauf werfen, was Ihre Enpoints bieten können. Holen Sie sich mehrere Proben aus jeder Quelle und analysieren Sie sie, wenn Sie können. Woher wissen Sie, welche Daten neu sind? Wie können Sie es mit vorhandenen Daten und Daten aus anderen Quellen abgleichen? Wenn sich vorhandene Daten ändern oder gelöscht werden, wie werden Sie das erkennen und behandeln? Was ist, wenn Quellen in etwas nicht übereinstimmen? Wie und wann sollten Sie die Synchronisation durchführen? Was wirst du tun, wenn eine deiner Quellen ausfällt? Usw.

Es ist extrem schwierig, Daten konsistent zu machen, wenn Ihre Datenquellen dies nicht tun. Wenn die Quellen unterschiedlich sind, sind sie in der Regel nicht konsistent. Also das Sprichwort "Müll rein, Müll raus". Wir, Menschen, haben kein Problem mit kleinen Inkonsistenzen, aber Algorithmen können nicht korrekt funktionieren, wenn Diskrepanzen auftreten. Auch wenn alles auf Papier zusammenpasst, vergisst man normalerweise, dass sich Daten im Laufe der Zeit ändern können ...

Zumindest ist das meine Erfahrung in solchen Fällen.

+0

Wenn ich immer die neuesten Daten möchte, kann ich nicht einfach die Tabellen leeren und die neuen Daten aus der Datenquelle lesen? – SVARTBERG

+0

Sie haben nicht viel über Ihr Projekt berichtet, aber wenn Sie es sich leisten können, die Daten jedes Mal zu löschen und neu zu importieren, ist dies tatsächlich der einfachste Ansatz. Wenn Ihre Tabellen nicht verbunden sind, haben Sie auch keine Diskrepanzen, aber in diesem Fall werde ich besorgt sein, wie nützlich Ihre Anwendung tatsächlich sein wird :-) – jurez

+0

Und was ist mit der Abfrage aller aktuellen Daten, erhalten Sie alle neuen Daten und ein Diff daraus erstellen und es dann patchen? (Ich habe einmal jsondiffpatch verwendet) – SVARTBERG

0

Ich bin mir nicht sicher, ob Sie in der Anwendung alle Daten in derselben Ansicht anzeigen möchten oder ob Sie für jede der Quellen unterschiedliche Ansichten erstellen. Wenn Sie die Daten in der gleichen Ansicht wie ein Raster anzeigen möchten, empfehle ich die Verwendung von Vererbung oder einer Schnittstelle abhängig von Ihren Daten und Anforderungen. Ich würde empfehlen, diese Struktur auch in der Datenbank einzurichten, indem Sie verschiedene Tabellen für die verschiedenen Quellen verwenden und eine Elterntabelle für alle mit einem zugeordneten Typ haben.

Hier ist ein guter Thread mit Diskussion über die Auswahl einer Schnittstelle oder Vererbung. Inheritance vs. interface in C#

Und hier sind einige Beispiele für die Darstellung der Vererbung in einer Datenbank. How can you represent inheritance in a database?

+0

Danke. Nur um eines klarzustellen: Ich denke, es wäre vollkommen in Ordnung, wenn jede Datenquelle ihre eigene Datenbanktabelle hätte. Ich glaube nicht, dass ich sie mischen muss. Nehmen wir an, ich habe eine Datenbanktabelle für Kinovorführungen und eine Datenbanktabelle für Wetterdaten (nur ein Beispiel, ich denke, im Falle von Wetter würde ich es nicht in einer Datenbank speichern müssen). Dann kann ich in meiner Anwendung die Kinovorführdaten abfragen und anzeigen, und wenn jemand eine bestimmte Vorführung sieht, habe ich ein Datum, mit dem ich die Wetterkarte abfragen würde, um zu sehen, wie das Wetter an diesem Datum sein wird. Rly schlechtes Beispiel, aber Sie bekommen den Punkt. – SVARTBERG

Verwandte Themen