Webseite mit externer Datenbank verbinden

Matayus

Aktiver Benutzer
Beiträge
25
Moin moin,

ich hab da mal ein Anliegen und habe in der SuFu leider nicht die gewünschten Ergebnisse gefunden.
Ich habe Zuhause auf einem privaten Server ein Script, was jede minute von bestimmten Webseiten Preisdaten sammelt und in einer MySQL Datenbank speichert. Am Tag sammele ich in etwa knapp 100.000 Datensätze.

Nun möchte ich bestimmte Ergebnisse aus dieser Datenbank auf meiner Webseite anzeigen lassen. Die Webseite ist natürlich komplett woanders und läuft nicht auf dem selben Server. Allein aus Performance gründen kann ich das Script auch nur auf meinem privaten Server laufen lassen.

1. Wie kann ich meine Webseite am besten mit meiner externen Datenbank verbinden ?
Ich möchte so gut es geht, die Daten aus meiner Datenbank ersehen.
Zu 80 % benötige ich nur die letzten Datenätze. Es gibt jedoch Fälle wo ich historische Daten benötige. Also die letzten 7 Tage zu Beispiel.

2. Würdet ihr die Webseite so einrichten, dass diese per Button die Daten aus der Datenbank ausliest oder könnte man auch einrichten, dass es live die Daten anzeigt (wie zB auf einer Börse). Was würde Performance-Technisch mehr sinn machen ?

Die Datenbank ist eine MySql-Datenbank und läuft auf einem Ubuntu System.

Beste Grüße, Mata
 
Werbung:

Kampfgummibaerlie

Datenbank-Guru
Beiträge
579
einfach die verbindung (zur datenbank) auf der homepage mit einer externen id angeben, denke ich.
ich weiß aber nicht, in wieweit du den router, wo die datenbank liegt, konfigurieren kannst.

es geht auf einer homepage, dass die Seite "ständig" aktuell ist.
Die Funktion, dass die Seite aktuell ist und bleibt ist in einer Client-Seitigen Sprache geschrieben (gelöst über JQuery)

welche datensätze möchtest du anzeigen lassen?
habe nie mit PHP und MySQL gearbeitet, aber PHP und PgSQL, und bin hochzufrieden damit.
 

akretschmer

Datenbank-Guru
Beiträge
9.731
PHP kann externe Datenbanken ansprechen, kein Problem. Du mußt nur dafür Sorge tragen, daß Dein MySQL (ich mag mal es nicht als Datenbank bezeichnen) nach außen offen ist.
 

akretschmer

Datenbank-Guru
Beiträge
9.731
was die Performance betrifft: du mußt halt die Laufzeiten zwischen deinem Webserver und Deiner, *hüstel*, Datenbank mit in Betracht ziehen. Auch *kann* es sein, daß Dein Provider keine DB-Zugriffe nach außerhalb erlaubt. Du solltest dazu auch z.B. einen SSH-Tunnel oder SSL in Betracht ziehen, damit es sicher durch das pöse Internet geht.
 

Matayus

Aktiver Benutzer
Beiträge
25
Ahhh ok. Also quasi über eine Statische ID die ich in meinem Router hinterlege.

Dann habe ich wohl die falschen Entwickler angehauen. Die haben mir "unbedingt" zur einer Cloud Lösung als DB geraten. Daher war ich nun unsicher ob eine Verbindung von außerhalb überhaupt möglich ist.

welche datensätze möchtest du anzeigen lassen?
habe nie mit PHP und MySQL gearbeitet, aber PHP und PgSQL, und bin hochzufrieden damit.
Ich möchte die aktuellsten Datensätze anzeigen. Im Prinzip möchte ich auf meiner Website entsprechende Märkte filtern damit ich die aktuellen Preise sehen kann. Ferner möchte ich halt auch bestimmte Preisentwicklungen sehen.
Meine Website ist quasi so eine Art Dashboard mit Linien Diagramm und Balkendiagramm.


PHP kann externe Datenbanken ansprechen, kein Problem. Du mußt nur dafür Sorge tragen, daß Dein MySQL (ich mag mal es nicht als Datenbank bezeichnen) nach außen offen ist.
Moin Andreas, lang ist es her :)
Wieso was spricht den gegen MySql ? Ich hab halt etwas kostenloses genommen und kenne ich mich an sich auch nur mit dieser DB aus. PgSQL wie Kampfgummibaerlie empfiehlt so viel besser ?
 

Matayus

Aktiver Benutzer
Beiträge
25
was die Performance betrifft: du mußt halt die Laufzeiten zwischen deinem Webserver und Deiner, *hüstel*, Datenbank mit in Betracht ziehen. Auch *kann* es sein, daß Dein Provider keine DB-Zugriffe nach außerhalb erlaubt. Du solltest dazu auch z.B. einen SSH-Tunnel oder SSL in Betracht ziehen, damit es sicher durch das pöse Internet geht.

Wäre es auch eine Lösung, jede minute eine entsprechende CSV-Datei zum Webserver zu schicken?
 

akretschmer

Datenbank-Guru
Beiträge
9.731
wenn Du am Tag 100.000 neue Datensätze hast (wir wissen nicht, wie lange Du die speichern willst) kommt da vermutlich recht flott was zusammen. PG hat halt einige Features wie deklarative Partitionierung und damit verbunden Optimierungen bei Abfragen, parallele Verarbeitung von Abfragen (auf mehreren Cores), diverse Indexe wie BRIN, partielle und funktionale Indexe, Window-Funktionen und einiges mehr, was MySQL halt nicht oder nur sehr beschränkt hat.

Und ja: PostgreSQL ist nicht nur kostenlos, es hat die freieste Lizenz die es gibt.
 

BerndB

Datenbank-Guru
Beiträge
325
.... oder einfach mal lesen was MySQL noch so kann. Du kannst z.B. die Daten auch von deiner lokalen DB ins WEB replizieren. Somit wären deine Daten direkt am Webserver und bei einem Ausfall deiner privaten Hardware oder Leitung würde es auch zu keinem Ausfall kommen das der Webserver die DB nicht erreichen kann. Weiterhin kann man die Daten auf 2.ten DB (im WEB) noch aufbereiten in DB Partitionen aufteilen z.B. tageweise. Auf die kann man dann sehr schnell zugreifen oder auch löschen, da es einen eigenen INDEX für jede Partition gibt.

Dies sind aber alles nur Möglichkeiten und man sollte prüfen was man im Web benötigt und was nur die lokae DB interessiert.

Gruß

Bernd

P.S. Mit dem Auslesen der Preisdaten solltest du aber mal schauen ob das alles so rechtens ist und wie schnell du reagieren muss z.B. bei Preis oder Lieferzeit Änderungen ohne das du eine Abmahnung kassierst.
 

akretschmer

Datenbank-Guru
Beiträge
9.731
Du kannst z.B. die Daten auch von deiner lokalen DB ins WEB replizieren. Somit wären deine Daten direkt am Webserver und bei einem Ausfall deiner privaten Hardware oder Leitung würde es auch zu keinem Ausfall kommen das der Webserver die DB nicht erreichen kann. Weiterhin kann man die Daten auf 2.ten DB (im WEB) noch aufbereiten in DB Partitionen aufteilen z.B. tageweise. Auf die kann man dann sehr schnell zugreifen oder auch löschen, da es einen eigenen INDEX für jede Partition gibt.
Punkt 1: ganz schnell Split-Brain ... und der Hoster müßte Incoming-DB - Zugriffe zulassen
Punkt 2: dazu brauche ich keinen zweiten Server
 

BerndB

Datenbank-Guru
Beiträge
325
Hallo akretschmer,

hab mich etwas schlecht ausgedrückt

zu 1: Bei der Replikation gibt es keinen Split-Brain und per Tunnel kannst du immer auf auf die DB im Web zugreifen. Ssh Zugriff sollte man nun immer haben.

Zu 2: Mit 2.ter DB meinte ich die im WEB. 1 = lokale , 2. = externe im WEB, also logisch keine weitere DB nötig
 

Matayus

Aktiver Benutzer
Beiträge
25
P.S. Mit dem Auslesen der Preisdaten solltest du aber mal schauen ob das alles so rechtens ist und wie schnell du reagieren muss z.B. bei Preis oder Lieferzeit Änderungen ohne das du eine Abmahnung kassierst.
Moin Bernd, das mit den Preisen ist ein kleines Privates Projekt von mir. Ich speichere API daten von div. Märkten die sowieso öffentlich sind.
Mit Web replizieren meinst Du sicherlich via myphpadmin oder ?


Habe mir auch mal die PG DB angeschaut. Ich werde das erstmal über die aktuelle mysql DB versuchen. Wenn ich merke das die Performance doch zu langsam ist kann ich ja immer noch um switchen.
 
Werbung:

BerndB

Datenbank-Guru
Beiträge
325
No no,

man kann die SLAVE DB (wäre die im WEB) so einrichten das die sich die Daten von deiner lokalen holt und nachzieht. dh. auch wenn die Verbindung mal weg ist und dann wieder kommt wird nachrepliziert.

Können aber gerne mal telefonieren 02163 / 9879851
 
Oben