Visualizzazione dei risultati da 1 a 10 su 17

Hybrid View

  1. #1
    Prima di postare avevo letto un po’ qui e un po’ là ma avevo capito una cosa diversa. Se io ho un software per il desktop che scrive, edita, cancella o legge dati su un database in locale il problema non sussiste. Nell’istante in cui io imposto nelle righe di codice un nuovo url del database (perdonate ma ora non ricordo più la sintassi) che non risiede più sul pc in cui si trova il programma ma è online (server Netsons, Aruba, ecc…) il programma continua a funzionare correttamente. Il software diventa solo un pochetto più lento. Se poi decido di copiare lo stesso programma su un altro computer il software continua a funzionare ma a patto di non usare i due programmi contemporaneamente. Se decido di usare i 2 programmi contemporaneamente lo posso fare ma a patto che uno invii solo query di lettura. In pratica un programma fa quello che vuole e le altre 100 copie su altri 100 pc possono solo leggere, 2 che fanno tutto e 99 solo leggere no. Sempre in questo articolo che in realtà credo fosse un post in un forum (ora non lo trovo più) si diceva che esisteva anche la possibilità di far funzionare in lettura e scrittura un numero illimitato di programmi ma a patto di riscrivere completamente il programma iniziale fatto per il desktop. Inoltre si diceva che un lavoro di questo tipo sarebbe stato un bagno di sangue e che conveniva usare tomcat o apache (dipende da quello che uno preferisce usare). Da qui è nata la domanda che vi ho presentato. Quindi vi vorrei chiedere se siete sicuri di quello che dite o se avete frainteso/dimenticato qualcosa?
    Ultima modifica di giannino1995; 23-05-2015 a 14:14
    Più pratica in futuro...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Se poi decido di copiare lo stesso programma su un altro computer il software continua a funzionare ma a patto di non usare i due programmi contemporaneamente. Se decido di usare i 2 programmi contemporaneamente lo posso fare ma a patto che uno invii solo query di lettura.
    E chi l'ha detto? Se la base dati (proprio le tabelle, le relazioni ecc..) e l'accesso al DB vengono fatti in modo appropriato, cioè sfruttando anche le "transazioni" e quant'altro è in grado di offrire il DBMS .... non ci sono problemi.
    I DBMS client-server servono proprio a questo ... avere 1 server DBMS (qui non c'entra Tomcat o altro, parlo proprio del server DBMS, es. MySQL, che è in ascolto su una certa porta) e N client, anche in contemporanea.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    E chi l'ha detto? Se la base dati (proprio le tabelle, le relazioni ecc..) e l'accesso al DB vengono fatti in modo appropriato, cioè sfruttando anche le "transazioni" e quant'altro è in grado di offrire il DBMS .... non ci sono problemi.
    I DBMS client-server servono proprio a questo ... avere 1 server DBMS (qui non c'entra Tomcat o altro, parlo proprio del server DBMS, es. MySQL, che è in ascolto su una certa porta) e N client, anche in contemporanea.
    Ciao andbin, piacere di risentirti! Quindi quello che ho scritto è corretto, si può fare sfruttando le transazioni ovvero riscrivendo parte del codice MySQL presente nel programma. A questo punto però mi chiedo, se devo cambiare il codice MySQL mentre il codice Java può restare identico, allora perché in quel post che non riesco più a trovare si diceva che è un "bagno di sangue". Cioè, in soldoni, per modificare questo software desktop per funzionare anche online e con database condiviso basta che mi legga un articoletto di 10 pagine oppure un manuale MySQL di 1200 pagine. Nell'articolo che avevo letto si diceva chiaramente che il costo in ore per riaggiornare tutto sarebbe stato tutt'altro che trascurabile. Potresti definire meglio cosa intendi per "transazione"? Non voglio che tu scriva codice ma solo che tu mi faccia capire la complessità della cosa perché mi ricordo di te molto bene, quello che per te era banale io lo appreso stando ore davanti al pc e leggendo il testo che vedi in firma, per la cronaca era un malloppone di 1248 pagine.
    Più pratica in futuro...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Potresti definire meglio cosa intendi per "transazione"?
    http://it.wikipedia.org/wiki/Transaz...asi_di_dati%29

    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Comincio a capire ma questo si traduce nel modificare cosa nel mio programma?... e soprattutto quanto codice? A me interessa capire se c'è vantaggio nell'usare questa tecnica oppure no rispetto all'altra classica con tomcat ecc... ecc... Capire anche se c'è vantaggio o svantaggio prestazionale.

    Una cosa che ho trascurato che con questa tecnica forse non si può fare agevolmente è salvare su un server i contenuti diversi da quelli testuali (foto, video, ecc...) sempreché non sia agevole la connessione ad una specie di cloud riservato all'applicazione, non saprei...
    Più pratica in futuro...

  6. #6
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Prima di postare avevo letto un po’ qui e un po’ là ma avevo capito una cosa diversa. Se io ho un software per il desktop che scrive, edita, cancella o legge dati su un database in locale il problema non sussiste. Nell’istante in cui io imposto nelle righe di codice un nuovo url del database (perdonate ma ora non ricordo più la sintassi) che non risiede più sul pc in cui si trova il programma ma è online (server Netsons, Aruba, ecc…) il programma continua a funzionare correttamente. Il software diventa solo un pochetto più lento. Se poi decido di copiare lo stesso programma su un altro computer il software continua a funzionare ma a patto di non usare i due programmi contemporaneamente. Se decido di usare i 2 programmi contemporaneamente lo posso fare ma a patto che uno invii solo query di lettura. In pratica un programma fa quello che vuole e le altre 100 copie su altri 100 pc possono solo leggere, 2 che fanno tutto e 99 solo leggere no. Sempre in questo articolo che in realtà credo fosse un post in un forum (ora non lo trovo più) si diceva che esisteva anche la possibilità di far funzionare in lettura e scrittura un numero illimitato di programmi ma a patto di riscrivere completamente il programma iniziale fatto per il desktop. Inoltre si diceva che un lavoro di questo tipo sarebbe stato un bagno di sangue e che conveniva usare tomcat o apache (dipende da quello che uno preferisce usare). Da qui è nata la domanda che vi ho presentato. Quindi vi vorrei chiedere se siete sicuri di quello che dite o se avete frainteso/dimenticato qualcosa?
    Per quanto mi riguarda... sono abbastanza sicuro
    Forse, dico forse, tirando a indovinare, quell'articolo (?) parlava di un programma Access ad esempio che usando un formato JET per memorizzare i dati non è facilmente trasformabile in qualcosa di condivisibile tra vari client.

    Se invece parliamo di MySQL, puoi avere anche 1000 utenti che leggono e scrivono contemporaneamente, senza bisogna di riscrivere nulla, alla peggio impostando il livello di serializzazione sugli inserimenti (riduzione massima della concorrenza in scrittura, massimo livello di sicurezza da questo punto di vista).

    Il problema non si pone per un mix di letture e scritture, bensì sulla possibilità di fare due scritture diverse sugli stessi dati.
    Se il client1 scrive "pippo" in un certo campo, e il client2 vuole scriverci sopra "pluto", che succede?
    La risposta è "dipende" da quello che è importante che accada, o non accada, ovvero che il client2 possa scrivere i dati indipendentemente dal client1, oppure solo dopo che questo ha terminato.

    Qui partono un 20.000 pagine per l'argomento transazioni SQL, ma si possono compendiare rapidamente in: MySQL è pensato per lavorare in due modalità principali.
    Con pipe o con porte TCP.
    Con pipe solo i processi locali sono in grado di comunicare col server, si usa normalmente per ragioni di sicurezza.
    Con le porte TCP invece (99% dei casi) chiunque arriva può collegarsi, se la porta è raggiungibile.

  7. #7
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Per quanto mi riguarda... sono abbastanza sicuro
    (1) Forse, dico forse, tirando a indovinare, quell'articolo (?) parlava di un programma Access ad esempio che usando un formato JET per memorizzare i dati non è facilmente trasformabile in qualcosa di condivisibile tra vari client.

    (2) Se invece parliamo di MySQL, puoi avere anche 1000 utenti che leggono e scrivono contemporaneamente, senza bisogna di riscrivere nulla, alla peggio impostando il livello di serializzazione sugli inserimenti (riduzione massima della concorrenza in scrittura, massimo livello di sicurezza da questo punto di vista).

    (3) Il problema non si pone per un mix di letture e scritture, bensì sulla possibilità di fare due scritture diverse sugli stessi dati.
    Se il client1 scrive "pippo" in un certo campo, e il client2 vuole scriverci sopra "pluto", che succede?
    (4) La risposta è "dipende" da quello che è importante che accada, o non accada, ovvero che il client2 possa scrivere i dati indipendentemente dal client1, oppure solo dopo che questo ha terminato.

    (5) Qui partono un 20.000 pagine per l'argomento transazioni SQL, ma si possono compendiare rapidamente in: MySQL è pensato per lavorare in due modalità principali.
    Con pipe o con porte TCP.
    Con pipe solo i processi locali sono in grado di comunicare col server, si usa normalmente per ragioni di sicurezza.
    Con le porte TCP invece (99% dei casi) chiunque arriva può collegarsi, se la porta è raggiungibile.
    (1) no
    (2) non riesco a capire
    (3) io desidero fare le spesse cose che farei con php + mysql + css + javascript + jquery + ajax + html usando però solo java + mysql ovviamente quando il sito web non trova ragione di esistere
    (4) ovvio ma se due utenti hanno accesso allo stesso dato e possono cambiarlo mi è sufficiente che vengano rispettate le regole temporali, se client1 modifica prima di client2 il dato finale sarà quello di client2. E' chiaro che convertendo un software desktop in un software online nascono altri problemi come quello di definire i ruoli dei vari account proprio come su un forum come questo. Il problema però è un altro. Se io devo gestire i ruoli con java lato web (tomcat, JSF, ecc..) devo prendermi dei libri dedicati ed è tutt'altro che semplice la questione. Se posso gestire i ruoli e tutto il resto con semplice codice java è tutto molto più semplice. Pensate a swing e poi pensate a css+html+javascript+ajax+jquery, ecc... qui è dinuovo un vantaggio (in alcune casistiche questo è ovvio!).
    (5) non conosco pipe o tcp. Java lato web o php cosa usano, pipe o tcp? a me interessa "ricreare" quello.
    Più pratica in futuro...

  8. #8
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    (1) no
    Vabbè non l'ho letto non posso dir nulla
    (2) non riesco a capire
    La concorrenza in scrittura può essere alta (con rischi di incoerenza dei dati) o via via più bassa (con pochi o nessun rischio) fino ad arrivare alla serializzazione, che è la scrittura dei dati uno alla volta.
    (3) io desidero fare le spesse cose che farei con php + mysql + css + javascript + jquery + ajax + html usando però solo java + mysql ovviamente quando il sito web non trova ragione di esistere
    E cosa te lo vieta? Puoi
    (4) ovvio ma se due utenti hanno accesso allo stesso dato e possono cambiarlo mi è sufficiente che vengano rispettate le regole temporali, se client1 modifica prima di client2 il dato finale sarà quello di client2.
    Ehhhh... magari sia così semplice...
    Qui ci vogliono 20.000 pagine almeno di spiegazioni, non so se è consentito su questo forum mettere link diretti a un po' di documentazione.

    Immagina comunque un caso di studio semplice e tipico: la prenotazione di una camera di albergo.
    Mentre Tizio sta iniziando a prenotare l'ultima camera (supponiamo) libera, anche Caio lo sta facendo.
    Chi dei due riuscirà a prendere la camera?
    Quando Tizio inizia è libera, quindi entrerà nella modalità di registrazione.
    Ma è libera anche per Caio, e pure lui inizierà la sua prenotazione.
    Ad un certo punto uno dei due farà "conferma", e cosa succede? Che l'altro farebbe pure lui "conferma", ritenendo che la camera sia ancora libera.
    Per affrontare questo (ed altri) problemi si usano le c.d. transazioni (nota: si usano con Java, con PHP o quello che vuoi, non cambia il programma d'interfaccia con MySQL), le quali per andar sinteticamente hanno 4 livelli di "durezza": Atomicity,Consistency,Isolation,Durability (ACID).

    Ora puoi dare dei comandi che in MySQL si chiamano
    codice:
    set transaction isolation level
    a REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED, SERIALIZABLE

    In sostanza ci sono due problemi diversi:
    - gestione della concorrenza (soprattutto in scrittura), che NON dipende dal linguaggio che usi
    - capacità di MySQL di fare o non fare qualcosa, che di nuovo NON dipende dal linguaggio


    E' chiaro che convertendo un software desktop in un software online nascono altri problemi come quello di definire i ruoli dei vari account proprio come su un forum come questo.
    Non nasce nessun problema, anche perchè MySQL se ne frega dei "ruoli" (?)
    Il problema però è un altro. Se io devo gestire i ruoli con java lato web (tomcat, JSF, ecc..) devo prendermi dei libri dedicati ed è tutt'altro che semplice la questione. Se posso gestire i ruoli e tutto il resto con semplice codice java è tutto molto più semplice. Pensate a swing e poi pensate a css+html+javascript+ajax+jquery, ecc... qui è dinuovo un vantaggio (in alcune casistiche questo è ovvio!).
    Non so cosa siano i "ruoli" nel senso che intendi, non posso aiutarti
    (5) non conosco pipe o tcp. Java lato web o php cosa usano, pipe o tcp? a me interessa "ricreare" quello.
    PHP può usare entrambi, normalmente usa TCP.


    Riassumo così, visto che mi sembra che le idee siano un po' confuse.
    MySQL se ne frega se viene pilotato da un programma Java, PHP, C, o addirittura da comandi "a riga di comando".
    Non c'è quindi differenza tra un programma Java o PHP su quello che può fare o non fare con MySQL.
    La vera differenza (se parliamo di Java e PHP) è che il primo è eseguito dal client (dalla macchina virtuale del client), mentre il secondo è eseguito dall'interprete PHP (che è sul server).

    Ma alla fine non cambia nulla riguardo alla "potenza" dei programmi che puoi fare (... OK vado via...)

  9. #9
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Vabbè non l'ho letto non posso dir nulla
    La concorrenza in scrittura può essere alta (con rischi di incoerenza dei dati) o via via più bassa (con pochi o nessun rischio) fino ad arrivare alla serializzazione, che è la scrittura dei dati uno alla volta.
    E cosa te lo vieta? Puoi
    Ehhhh... magari sia così semplice...
    Qui ci vogliono 20.000 pagine almeno di spiegazioni, non so se è consentito su questo forum mettere link diretti a un po' di documentazione.

    Immagina comunque un caso di studio semplice e tipico: la prenotazione di una camera di albergo.
    Mentre Tizio sta iniziando a prenotare l'ultima camera (supponiamo) libera, anche Caio lo sta facendo.
    Chi dei due riuscirà a prendere la camera?
    Quando Tizio inizia è libera, quindi entrerà nella modalità di registrazione.
    Ma è libera anche per Caio, e pure lui inizierà la sua prenotazione.
    Ad un certo punto uno dei due farà "conferma", e cosa succede? Che l'altro farebbe pure lui "conferma", ritenendo che la camera sia ancora libera.
    Per affrontare questo (ed altri) problemi si usano le c.d. transazioni (nota: si usano con Java, con PHP o quello che vuoi, non cambia il programma d'interfaccia con MySQL), le quali per andar sinteticamente hanno 4 livelli di "durezza": Atomicity,Consistency,Isolation,Durability (ACID).

    Ora puoi dare dei comandi che in MySQL si chiamano
    codice:
    set transaction isolation level
    a REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED, SERIALIZABLE

    In sostanza ci sono due problemi diversi:
    - gestione della concorrenza (soprattutto in scrittura), che NON dipende dal linguaggio che usi
    - capacità di MySQL di fare o non fare qualcosa, che di nuovo NON dipende dal linguaggio


    Non nasce nessun problema, anche perchè MySQL se ne frega dei "ruoli" (?)
    Non so cosa siano i "ruoli" nel senso che intendi, non posso aiutarti
    PHP può usare entrambi, normalmente usa TCP.


    Riassumo così, visto che mi sembra che le idee siano un po' confuse.
    MySQL se ne frega se viene pilotato da un programma Java, PHP, C, o addirittura da comandi "a riga di comando".
    Non c'è quindi differenza tra un programma Java o PHP su quello che può fare o non fare con MySQL.
    La vera differenza (se parliamo di Java e PHP) è che il primo è eseguito dal client (dalla macchina virtuale del client), mentre il secondo è eseguito dall'interprete PHP (che è sul server).

    Ma alla fine non cambia nulla riguardo alla "potenza" dei programmi che puoi fare (... OK vado via...)
    (1) ok
    (2) capito
    (3) quello schifo di post che ho letto…
    (4) ma allora è un problema esclusivamente di MySQL! non centra nulla né con java e né con php! quindi il codice java scritto per il programma lato desktop sostituisce comodamente e al 100% php, apache, tomcat, c#, css, html, ecc… ecc… e quello che ho letto nell’altra discussione è una vera vaccata!
    (5) per ruoli intendo questo:
    creo una tabella con gli amministratori poi creo una tabella con utenti normali e scrivo (ma non con mysql! occhio!) che gli amministratori possono modificare tutti i contenuti mentre gli utenti normali sono quelli di cui ne sono proprietari, ecc… ecc…
    (6) mysql non ti offendi se scrivo che sei stato stupendo?
    (7) condividi che l’altra discussione che ho letto è una vaccata?
    (8) ultima domanda poi vai via veramente, altrimenti devo pagarti la consulenza, usando java + mysql (e quindi no server) posso realizzare web application (se così si possono chiamare) spendendo meno rispetto alla soluzione classica (utilizzo di un linguaggio lato server)? facebook per esempio se non fosse costretta ad avere il sito risparmierebbe 8000 server circa, giusto?
    http://www.hostingtalk.it/facebook-c...ql_-c000001C7/
    io, nel mio piccolo, probabilmente, se avessi molti utenti da gestire, potrei fare tutto con un hosting da 20 €/anno invece di dotarmi subito di un server dedicato, giusto?
    Più pratica in futuro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.