Toon posts:

[delphi] mysql database monitoren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

heb hier een mysql_database op een webserver draaien. Via een odbc koppeling en wat bde-componenten (TTable en TDatabase) ben ik hier in delphi een backend voor aant bouwen. Nu ben ik op zoek naar een manier om te achterhalen wanneer er een record gepost, gedelete of gewijzigd wordt in die db vanaf internet zodat ik hier het aan dat record refererende object ook kan updaten. Ik heb 1 tabel gereserveerd in de db die opslaat in welke tabel welke key het laatst gewijzigd is. Deze tabel wil ik gaan monitoren. Weet iemand of hier een componentje voor is dat mij zo'n event genereerd?

Andere alternatieven waar ik zelf al aan zat te denken:

1. zelf een thread voor moeten bouwen die die tabel om de zoveel secs refreshed? en kijkt of er wijzigingen zijn.

2. serverside op een of andere manier een signaal doorsturen naar de applicatie zodra er vanaf de site wijzigingen in de db worden aangebracht. (leek me niet de eenvoudigste)

en maar alvast weer bedankt voor reactie! :)

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Dat wordt denk ik heel moeilijk. MySQL ondersteunt nu nog geen 'stored procedures' zodat je niet in de database iets kan aanroepen op het moment dat er iets wijzigd. Stored procedures staan op de planning voor v5. Wat je eventueel wel zou kunnen doen is niet direct MySQL aan te spreken maar een middle-tier component maken dat tussen jouw (misschien wel meerdere) instanties van je applicatie en de MySQL gaat zitten. Dit component kan dan de uit te voeren actie uitvoeren.

Een andere manier (die afhankelijk van je talen kennis en besturingssysteem) is om mysqld met de log optie te starten zodat alle SQL's in een bestand geschreven worden. Maak van het bestand een pipe en haal de invoer zo naar je programma wat aan de SQL dan kan zien wat er gebeurt is. Deze optie lijkt me lastig (maar dat is dan weer de uitdaging) en iet wat omslachtig. Maar de mogelijkheid is er (al weet ik niet op je op Windows een pipe kunt maken van een bestand).

www.fendt.com | Nikon D7100 | PS5


Verwijderd

Topicstarter
mysql draait op freebsd dus dat zou op zich moeten kunnen.
ik ga iig eens op zoek naar wat info over hoe ik zo'n pipe ga bouwen.
levert dit verder nog problemen op als de applicatie op meerdere locaties tegelijk draait?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

FendtVario schreef op 08 september 2004 @ 22:41:
Dat wordt denk ik heel moeilijk. MySQL ondersteunt nu nog geen 'stored procedures' zodat je niet in de database iets kan aanroepen op het moment dat er iets wijzigd. Stored procedures staan op de planning voor v5.
Automatisch code uitvoeren op het moment van update heet een 'trigger', geen SP. En triggers staan afaik niet op de planning voor MySQL.

Professionele website nodig?


Verwijderd

Topicstarter
Hmmm, ik bedenk me ook net dat als ik die logs moet gaan doorpipen dat dat nogal veel bandwith gaat vreten omdat daar meerdere databases opdraaien. En ik eigenlijk maar van een relatief klein aantal tabellen hoef te weten wanneer er wijzigingen in gemaakt worden. Dan ben ik vele mbs voor nix door aant sturen.

zou overstappen naar postgreSQL geen optie zijn? of ondersteund deze ook geen triggers?

[ Voor 18% gewijzigd door Verwijderd op 09-09-2004 10:41 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Wat jij nodig hebt is niet een hack voor MySQL maar een echt RDBMS. Je probeert nu zogezegd geruisloos 250km/u te rijden in een tractor :)

Produkten als Oracle en SQL Server hebben voor dit soort taken dus inderdaad triggers, maar ook nog veel geschiktere mechanismes zoals replication, federated servers en distributed transactions :Y)

Professionele website nodig?


Verwijderd

Topicstarter
ik ga es wat stoeien met postgreSQL die heb ik wel hier nl, kijke of ik daar wat verder mee kom.

k laat hier wel ff horen alst gelukt is.. :7

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

De gratis opensource RDBMS firebird heeft wel triggers.

We adore chaos because we like to restore order - M.C. Escher


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

curry684 schreef op 09 september 2004 @ 10:40:
Wat jij nodig hebt is niet een hack voor MySQL maar een echt RDBMS. Je probeert nu zogezegd geruisloos 250km/u te rijden in een tractor :)
Pas op he, je noemt nu 2 dingen die niet kunnen. Sowieso kun je niet geruisloos in een tractor rijden (ook al rij je 10) en de meesten gaan niet harder dan 42km/u. Sommigen gaan 50 en er is een ( JCB FastTrack) die gaat 80 (maar dan moet je 'm vrachtwagen laten keuren en dan is het geen tractor meer). ZwartePiet wil maar een ding wat niet kan :P

www.fendt.com | Nikon D7100 | PS5


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

_o_ @ FendtVario :D

* curry684 zal volgende keer andere analogie kiezen ;)

Professionele website nodig?


Verwijderd

Topicstarter
haha, had al een reactie verw8 van fendtvario op jou tractor-statement jah! :)

een echte vent, rijdt een fendt! ;)

ben nu iig een postgresql-db aant configureren. heb voor delphi PostgreSQLDAC componenten gevonden. Hierbij zit ook een PSQLNotify component en ik hoop dat dat is waar ik naar op zoek ben.

verdere info volgt..

[ Voor 7% gewijzigd door Verwijderd op 09-09-2004 13:12 ]


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 19:25

Delphi32

Heading for the gates of Eden

Wat je ook kan doen is FireBird/Interbase. Die ondersteunen server-generated events, die je in je applicatie kan opvangen. Hoef je niet iedere keer een tabel te queryen om te kijken of het laatste id al gewijzigd is, gewoon wachten tot je event voorbij komt :)

Verwijderd

Topicstarter
heb het al aan de praat met postgresql! :)

deze ondersteund rules. ik doe dan een rule toevoegen bij de tabel die ik wil monitoren.

vb:
code:
1
create rule insertDetect as on INSERT to tabelnaam do notify nieuwRecord


vervolgens kan ik met dat PSQLNotify component 'nieuwRecord' aan de listen list toevoegen en dit werkt perfect!
nu alleen nog ff de hele database ombouwen en importeren naar / in postresql en ik kan aan de slag!

iig bedankt voor reacties en voor mij mag er een slotje op.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 09 september 2004 @ 14:07:
iig bedankt voor reacties en voor mij mag er een slotje op.
Zoals ik de vorige keer al zei:
curry684 schreef op 07 september 2004 @ 15:32:
[...]

Topics gaan alleen op slot hier als ze policies overtreden of anderszins ontsporen. Stel dat er nu over een half uur iemand nog een geniale opmerking over heeft en ik heb 'm op slot gezet: zou doodzonde zijn :) Tevens is het voor de search handig dat mensen 'weten' dat open topics kwalitatief goed zijn, en gesloten topics meestal genegeerd kunnen worden in de resultaten: je kunt ze dan ook wegfilteren uit de resultaten :Y)
:)

Professionele website nodig?


Verwijderd

Topicstarter
goed dan, kzal niet meer om slotjes vragen! :)
Pagina: 1