|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Database MySql su applicazione distribuita, applicazione multithread o libreria?
Salve a tutti abbiamo un problemino per un Progetto, la nostra "Applicazione" è in realtà un'applicazione distribuita cioè formata da più applicazioni (che girano su Linux X86 e ARM[1]) per esempio:
tutti i membri de "l'Applicazione" comunicano tra loro via rete e/o via code realtime, l'Applicazione può essere distribuita da 1 a N macchine, l'IPC è proprietario (nostra proprietà, quindi nessun problema c'ho i sorgenti!). Non vi posso dire che cosa sarà, ma diciamo che se un giorno andrete in Polonia lo scoprirete Il problema è lo Storage che sta divenendo un collo di bottiglia: infatti noi lo usiamo per la diagnostica, per far conoscere ai Manager(s) quanti Driver(s) controllano (no, non è schiantato... è quasi Plug & Play ) e, ovviamente, per salvare i dati propri de "l'Applicazione" (denaro, denaro, denaro... per la maggior parte ) quindi circa 1 volta al secondo accade:
Tutto questo avveniva in origine su rete e sulla "carta" funzionava pure, ma appena ci siamo messi a parlare con una Periferica Real Time, essa ci ha dichiarato scollegati (sì avete capito bene LEI ha detto che il Controllore era scollegato, "l'Applicazione" per la gioia ha reagito andando in core!) Abbiamo quindi provato ad usare ANCHE le code Real Time di Linux, la velocità è cambiata di un fattore 1000 ; la periferica RealTime ora funziona regolarmente, ma il "traffico" rimane alto e, comunque, da un punto di vista dell'efficienza non può essere corretto.Posto che sqlite si leva dalle p@lle e si passa a mysql, ci troviamo, ora, ad un bivio o, più probabilmente, ad un trivio:
I Polacchi, ovviamente, se lo tengono così, ma per i prossimi progetti le cose DEVONO cambiare, notate che per la natura stessa de "l'Applicazione" se riusciamo a mantenere l'interfaccia identica con l'applicazione (e la 2 è la via IMHO) io posso sostituirla e il resto de "l'Applicazione" non si deve accorgere della differenza... o andrà in core e allora anch'io sono morto, ma questa è un'altra Storia [1]Porting fatto da un collega bestemmiando in Sanscrito perché ho usato troppe estensioni di GCC 4.4 e la Moxa fornisce un toolchain basato su GCC 3.9 se ricordo bene
Ultima modifica di fano : 02-11-2013 alle 21:04. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Cioè avete usato sqlite come db per un progetto multi-processo?
Avete cannato in pieno il suo utilizzo. Usa un dbms server come storage e sei a posto. Parli di applicazione distribuita ma non specifichi se deve funzionare in rete privata o anche su internet. Nel secondo caso generalmente si evita di esporre il dbms direttamente su internet quindi devi pensare a qualcosa tipo webservice (magari RESTfull). Poi è praticamente obbligatorio se devi applicare delle logiche centralizzate evitando di replicarle su ogni client. Io però avrei fatto caching invece che andare ad interrogare sempre lo storage: un manager parte e carica tutte le sue periferiche magari aggiornando l'elenco periodicamente o ogni volta che non trova una periferica nella cache locale (questo indipendentemente che si tratti di sqlite o mysql) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:24.










) e, ovviamente, per salvare i dati propri de "l'Applicazione" (denaro, denaro, denaro... per la maggior parte
) quindi circa 1 volta al secondo accade:
; la periferica RealTime ora funziona regolarmente, ma il "traffico" rimane alto e, comunque, da un punto di vista dell'efficienza non può essere corretto.









