Sto cercando una soluzione simile al metodo inotify di guardare i file per le modifiche. Sono consapevole che potrei guardare il file binlog del database mysql ed eseguire query per individuare i nuovi risultati, ma ciò sembra molto inefficiente e poco elegante; come fa semplicemente facendo masse di query in un ciclo in attesa di nuovi risultati.C'è un modo per guardare un database mysql per le modifiche usando perl?
risposta
Se si aggiunge un TRIGGER alla/e tabella/i a cui si è interessati, è possibile utilizzarlo per avvisare l'applicazione di sorveglianza. È possibile farlo in diversi modi:
- Creare una tabella di controllo nel database e fare in modo che il trigger scriva le informazioni rilevanti lì; e fare in modo che l'applicazione di sorveglianza esegua il polling della tabella di controllo per le nuove voci. Stai ancora sondando, ma in modo controllato che non colpirà troppo il server.
- Avere il trigger call an external app attraverso un UDF.
Ecco cosa [ho commentato già 6 giorni fa] (http://stackoverflow.com/q/4418598#comment-4820725) come risposta già esistente. Goditi la tua generosità. – daxim
FWIW, ho aggiunto questa risposta prima di aver notato il tuo commento (che ho fatto upvote); e la prima delle mie soluzioni suggerite è diversa dalla tua. Io sinceramente non stavo plagiando. –
@daxim: Se volessi la taglia - avresti dovuto pubblicare il tuo commento come risposta! ;-) – Brad
Per quanto riguarda i tavoli MyISAM, è possibile guardare information_schema.TABLES.UPDATE_TIME
. Questo ti farebbe risparmiare il polling di tutte le tabelle che ti interessano. Per InnoDB, guardare binlog è il meglio che riesco a pensare.
+1 per information_schema. TABLES.UPDATE_TIME – DVK
Un altro approccio è eseguire un push/segnale anziché un polling DB. Qualunque processo aggiorni il database, notifica al tuo codice Perl che è stato fatto un aggiornamento tramite qualsiasi IPC selezionato (diamine, un file di registro che viene aggiunto con il nome della tabella che viene modificato potrebbe fare abbastanza bene il trucco).
Questo è particolarmente efficace se gli aggiornamenti di un volume abbastanza raro/basso, ma il tempo di reazione a loro deve essere veloce.
Un ulteriore vantaggio è la portabilità: funziona per qualsiasi backend MySQL o per qualsiasi altro motore DB.
Questa non è purtroppo un'opzione in quanto il database viene aggiornato da qualche altro programma di terze parti che sto utilizzando e lo script perl che sto scrivendo non esegue l'aggiornamento del database. – Drake
- 1. Come guardare una directory per le modifiche?
- 2. Come posso guardare un file, non una directory per le modifiche usando Python?
- 3. Usa PHP + jQuery AJAX per controllare il database MySQL per le modifiche e caricare le modifiche?
- 4. C'è un modo per ascoltare le modifiche in una tabella di database MySQL usando Java e JDBC?
- 5. C'è un modo per guardare le query LINQ mentre accadono?
- 6. Come guardare un array per modifiche in AngularJS
- 7. C'è un modo per aggiornare il database SQLITE usando delta?
- 8. Il modo migliore per gestire le modifiche del database
- 9. Creare un nuovo database MySQL usando Workbench
- 10. Il modo migliore per memorizzare un array nel database MySQL?
- 11. perl beffa c'è un modo per deridere $?
- 12. Posso usare ALTER DATABASE per rinominare un database mysql?
- 13. Come creare un database localhost usando mysql?
- 14. Un algoritmo per trovare le modifiche comuni
- 15. Utilizzare AJAX per visualizzare il database SQL per le modifiche
- 16. Modo generalizzato per estrarre JSON da un database relazionale?
- 17. Ricevere notifiche sulle modifiche del database: è possibile guardare le voci in riak?
- 18. Git: il modo migliore per rimuovere tutte le modifiche da un determinato file per un ramo
- 19. Java, MySQL: esiste un modo per incorporare un server MySQL con un programma Java?
- 20. Come guardare le modifiche al modulo in AngularJS?
- 21. Come rimuovere un database MySQL?
- 22. Qual è il modo migliore per "ripristinare" le modifiche?
- 23. Un modo efficace per salvare una matrice e le relative chiavi su un database
- 24. Un modo per "comprimere" le migrazioni Flyway?
- 25. Usando query MySQL per attraversare le righe per fare un albero ricorsivo
- 26. altera più database mysql contemporaneamente (modifiche al database SAAS)
- 27. orologio modello di modulo per le modifiche
- 28. Qual è il modo migliore per memorizzare un database MySQL nel controllo del codice sorgente?
- 29. Come monitorare un repository git per le modifiche?
- 30. Quali sono le migliori pratiche per mantenere uno schema di database Mysql in modo multipiattaforma?
http://stackoverflow.com/questions/3501346/how-do-i-hook-into-an-event-triggered-once-a-mysql-query-is-true – daxim