Ich versuche, ein einfaches System für den Datenaustausch zwischen mehreren Websites zu entwickeln. Die meisten von ihnen sind in PHP entwickelt, während einige in Wordpress / Drupal entwickelt wurden. Redundante Informationen werden auf mehrere Websites verteilt. Dies hat zu einem Problem geführt, bei dem die Informationen auf mehreren Websites separat aktualisiert werden müssen.
Ich versuche eine Lösung bereitzustellen, bei der sogar statische Seiten gemeinsame Daten erhalten können. Hier ist meine vorgeschlagene Architektur:
Ich mache das für eine akademische Einrichtung. Die Daten variieren von einfachen Gebührenstrukturen bis hin zu akademischen Richtlinien. Betrachten Sie zum Beispiel akademische Kosten.
Akademische Kosten -> ug, Absolvent, Pharmazie ... jede der Abteilungen wird eine Gebührenstruktur haben, die nach Off-Campus, Campus, Pendler kategorisiert ist.
"Undergraduate": {
"metaid": "0770",
"Offcampus": {
"FeesItems": {
"comprehensive": {
"label": "Comprehensive Fees",
"value": "2,141"
}
}
}
}
Für das Front-End mit Schnurrbart müssen sie nur das js einschließen und etwas wie das Folgende verwenden, um Werte zu erhalten.
<td>{{Undergraduate.Offcampus.FeesItems.comprehensive.label}} </td>
<td>{{Undergraduate.Offcampus.FeesItems.comprehensive.value}}</td>
Meine Fragen:
Ist dieses Design skalierbar?
Wie können die Dateneigentümer die Daten bearbeiten?
Wie speichere ich die Daten in SQL?
quelle
Antworten:
Anstatt zu versuchen, die gesamte Frage zu beantworten, möchte ich eine konkrete Möglichkeit zum Austausch von Daten anbieten: Verwenden Sie einfach einen beliebigen Mechanismus (jQuery, ajax), der in Ihrer Implementierungssprache verfügbar ist und mit dem Sie Ihren Webserver aufrufen können. Verwenden Sie einen GET-Aufruf, um konstante Daten mit automatischem Caching abzurufen. Verwenden Sie POST / PUT-Aufrufe, um variable Daten abzurufen / festzulegen. Sie können auch andere Anforderungsmethoden verwenden, z. B. LÖSCHEN, um den Datenspeicher zu löschen. Siehe Wikipedia: Anforderungsmethoden Weitere Datenaufrufe zum Erstellen Ihrer API für gemeinsam genutzte Daten. Die Seite, die Sie aufrufen, muss kein HTML enthalten. Es kann sich um eine Art Datenserver handeln, den Sie in jeder verfügbaren serverseitigen Sprache schreiben.
quelle
Alle Designs sind möglicherweise skalierbar. Eine alte (und veraltete) Regel ist das Hinzufügen weiterer Hardwareressourcen , und das war's.
Leider funktioniert diese Regel in der realen Welt nicht sehr gut (in der wir für die Ressourcen bezahlen, die wir zur Ausführung der Software zur Verfügung stellen, auch wenn sie sich in den Clouds befinden).
In diesem Fall ist das Design der Software absolut skalierbar, aber vielleicht lautet die Frage: Ist das nachhaltig?
Wie man Stress verhindert
Im Kontext eines Datenanbieters (öffentlich oder durch Authentifizierung) ist es möglicherweise vorsichtiger , ein Cache-System einzuschließen. Um eine hohe Belastung der Datenbank zu vermeiden, sollten Sie Ihrem Entwurf einen Herausgeber hinzufügen.
Ich gehe davon aus, dass Ihr "JSON Builder" eine Komponente ist, die die Anforderung des Kunden interpretiert, Daten aus der Datenbank liest und schließlich die Antwort sendet.
Wenn dies der Fall ist, ist es leicht zu verstehen, dass die Datenbank als erste nach Ressourcen fragt, wenn Sie das System skalieren müssen.
Verteilen
Durch Hinzufügen eines Cache-Systems werden die neuen Ressourcen wahrscheinlich den Herausgebern zugewiesen. Ein Herausgeber kann ein System getrennter Daten sein, das Informationen über den Status der darin enthaltenen Daten empfängt (oder abruft).
An diesem Punkt ist es leicht, einen Herausgeber als einen " kostengünstigen Host " zu betrachten, der vom System getrennt ist und (möglicherweise sogar über CDN) verteilt wird und einen Mechanismus zur kontinuierlichen Aktualisierung seiner Daten verwendet (jedoch zu geringen Kosten für die Datenbank). um dem Kunden frische Daten zur Verfügung zu stellen .
Mechanismus: Vielleicht ein einfaches Hash-System oder ein noch einfacheres " Datum der letzten Änderung "
Die Frage scheint eine einfache Antwort zu haben. Sie benötigen eine Schnittstelle.
Die Kommentare sind richtig, vielleicht ist es offtopisch
quelle
Frage: Wie können Daten mehreren Websites zur Verfügung gestellt werden? A. Ein Webdienst Ihrer Wahl. Sie können entweder mit reaktionsschnellen oder nicht reaktionsschnellen Website-Techniken damit kommunizieren. Nicht reagierend bedeutet, dass Sie normalerweise ein nicht auf Ajax (Javascript Asynchronious Post) basierendes System verwenden, bei dem die gesamte Webseite bei jedem Aufruf Ihres Webdienstes über einen Formularpost aktualisiert wird, oder Sie können AJAX (clientseitiges Javascript, JQuery oder ein Framework) verwenden Kommunizieren Sie asynchron mit dem Webservice, um Daten abzurufen oder zu aktualisieren.
Frage: Wie können Daten bearbeitet werden? A. Erstellen Sie Ihre eigenen Webseiten mit Formularen, um die Daten zu bearbeiten.
Frage: Wie werden die Daten in SQL gespeichert? A. Sicher (oder nicht sicher, wenn Daten nicht vertraulich sind oder den Datenschutzgesetzen unterliegen) bilden Beiträge an Ihren Webdienst, die in SQL Insert umgewandelt werden. Aktualisieren Sie die Anweisungen innerhalb der Funktionsweise Ihres Webdienstes.
Sie bekommen immer etwas "von der Stange" für den Web-Service, es gibt verschiedene Frameworks usw., wenn Sie kein großer Programmierer sind.
quelle
Ist dieses Design skalierbar?
Nein, es sei denn, Sie hosten in einer Cloud-MySQL-Datenbank. JSON Builder kann sein, hängt davon ab, wie Sie es und die Weboberfläche codieren.
Wie können die Dateneigentümer die Daten bearbeiten?
Erstellen Sie einfach eine PHP CRUD-App mit einem Framework, z. B. CakePHP usw.
Wie speichere ich die Daten in SQL?
Verwenden Sie die CRUD-App, um einen JSON-zu / von-SQL-Konverter zu haben. Viele Online-PHP-Beispiele. JSON zu PHP Array / MySQL und umgekehrt.
quelle