Salve a tutti
Non se qualcuno di voi si è mai imbattuto in qualcosa del genere.
Ho un piccolo software fatto da me con pagine sviluppate in PHP e database in mysql già utilizzato in una rete locale.
L'intento è di utilizzare lo stesso software in Cloud, ovvero, l'applicazione dovrebbe risiedere su un hosting a pagamento come anche il database ma vorrei creare tante istanze del database per quanti sono i differenti "clienti".
Mi chiedo come posso mettere su una infrastruttura che funziona in questo modo. Inoltre se ad esempio creo una nuova tabella oppure aggiungo un nuovo campo in una tabella già esistente, come posso estendere la modifica a tutte le istanze di database presenti?
Oppure volendo utilizzare un server in hosting, quale software di gestione mi consente di manutenere tutti i database con le modifiche che vengono fatte, evitando di intervenire singolarmente su ciascuna istanza (ciascun database) già presente?
Grazie
Software in Cloud
Moderatori:
Paolino,
fairyvilje
29 messaggi
• Pagina 1 di 3 • 1, 2, 3
1
voti
Unico db con uno schema/utente per ogni cliente
Non ha senso adesso data la situazione. Quando questa attività comincerà a renderti parecchio
allora mi chiami che migriamo su Oracle 12c creando un container database con un pluggable per ogni cliente...
ti fai uno script usando le tabelle di sistema dei metadati
elemet ha scritto:Vorrei creare tante istanze del database per quanti sono i differenti "clienti".
Non ha senso adesso data la situazione. Quando questa attività comincerà a renderti parecchio
elemet ha scritto:Inoltre se ad esempio creo una nuova tabella oppure aggiungo un nuovo campo in una tabella già esistente, come posso estendere la modifica a tutte le istanze di database presenti?
ti fai uno script usando le tabelle di sistema dei metadati
0
voti
aldofad ha scritto:Oracle 12c creando un container database con un pluggable per ogni cliente...
Oracle 12c è una mattanza fra spazio su disco, RAM e licenze....
aldofad ha scritto:ti fai uno script usando le tabelle di sistema dei metadati
Ma allora il concetto di "Software come servizio" come viene applicato per i portali ove già utilizzano queste piattaforme? -->Fanno ogni volta degli script che lanciano su ogni istanza?? mi sembra piuttosto "artigianale" come soluzione...
1
voti
elemet ha scritto:Oracle 12c è una mattanza fra spazio su disco, RAM e licenze....
...e vite andate dei consulenti
elemet ha scritto:Fanno ogni volta degli script che lanciano su ogni istanza?? mi sembra piuttosto "artigianale" come soluzione...
proprio così, che ti aspetti? E inoltre devi anche preparare e testare in anticipo gli script di "no-go", ossia se poi qualcosa va storto e devi tornare al punto di prima. Poi dipende dalla finestra di disservizio che hai, dai service-level-agreements che hai stipulato con i clienti, se i backup sono a freddo o a caldo e di conseguenza un'eventuale restore in caso di gravi pastrocchi.
La manutenzione è proprio tutta artigianale, eccome
0
voti
Ad ogni modo ti ringrazio per il tuo intervento,
Al momento proverò con l'adottare con questa soluzione:
Ho già perso io delle "vite" per mettere su un'infrastruttura Oracle 12c di test.... è stato un bagno di sangue di tempo e bestemmie....
Al momento proverò con l'adottare con questa soluzione:
aldofad ha scritto:Unico db con uno schema/utente per ogni cliente
aldofad ha scritto:...e vite andate dei consulenti
Ho già perso io delle "vite" per mettere su un'infrastruttura Oracle 12c di test.... è stato un bagno di sangue di tempo e bestemmie....
0
voti
La soluzione di aldofad è buona, ma se il sw dovrà diffondersi molto valutadi riscriverlo sfruttando middleware cloud esistenti (AWS, GAE, ...) in questo modo sfrutti 'nativamente' tutti quei sistemi che ti consentono di avere elasticità e scalabilità. Altrimenti rischi di arrivare a un punto in cui devi 'migrare' alla nuova infrastruttura e, in quel caso, lo sforzo è titanico rispetto a partire da subito con la versione riscritta ad-hoc per il cloud.
Per 'inpratichirti' ti consiglio di provare con GAE, con cui puoi sfruttare il livello 'base' gratuito e pagheresti l'extra quota solo se usato effettivamente.
Per 'inpratichirti' ti consiglio di provare con GAE, con cui puoi sfruttare il livello 'base' gratuito e pagheresti l'extra quota solo se usato effettivamente.
-

DavideDaSerra
213 1 7 - Expert

- Messaggi: 279
- Iscritto il: 21 gen 2018, 18:41
0
voti
Ti ringrazio per i preziosi spunti e suggerimenti
Al momento vorrei testare la prima soluzione, nel mentre proverò anche ad impratichirmi con GAE,
Questo significa che se il sistema (software) utilizza ad esempio 5 tabelle, chiamate per semplicità A,B,C,D,E ci deve essere un campo per ciascuna tabella che memorizza il nome "schema/cliente" , esempio C1 (cliente 1).
Pertanto tutti i dati confluiscono nelle stesse tabelle ma i record sono segmentati ed indicizzati per questo campo "nome schema/utente"; E così via per tutte le tabelle A,B,C,D,E .....
Quindi un eventuale manutenzione sulle tabelle si fa una sola volta poiché le tabelle sono uniche sotto un unico DB .
Ho inteso bene ?
Ma se così è, non ho una segmentazione degli ambienti ed un eventuale Export dei dati deve sempre avvenire per questo campo che individua i dati di quel "cliente".
Oppure, ho inteso male e la soluzione è diversa ?
Grazie
DavideDaSerra ha scritto:La soluzione di aldofad è buona, ma se il sw dovrà diffondersi molto valutadi riscriverlo sfruttando middleware cloud esistenti (AWS, GAE, ...) in questo modo sfrutti 'nativamente' tutti quei sistemi che ti consentono di avere elasticità e scalabilità. Altrimenti rischi di arrivare a un punto in cui devi 'migrare' alla nuova infrastruttura e, in quel caso, lo sforzo è titanico rispetto a partire da subito con la versione riscritta ad-hoc per il cloud.
Per 'inpratichirti' ti consiglio di provare con GAE, con cui puoi sfruttare il livello 'base' gratuito e pagheresti l'extra quota solo se usato effettivamente.
Al momento vorrei testare la prima soluzione, nel mentre proverò anche ad impratichirmi con GAE,
aldofad ha scritto:Unico db con uno schema/utente per ogni cliente
Questo significa che se il sistema (software) utilizza ad esempio 5 tabelle, chiamate per semplicità A,B,C,D,E ci deve essere un campo per ciascuna tabella che memorizza il nome "schema/cliente" , esempio C1 (cliente 1).
Pertanto tutti i dati confluiscono nelle stesse tabelle ma i record sono segmentati ed indicizzati per questo campo "nome schema/utente"; E così via per tutte le tabelle A,B,C,D,E .....
Quindi un eventuale manutenzione sulle tabelle si fa una sola volta poiché le tabelle sono uniche sotto un unico DB .
Ho inteso bene ?
Ma se così è, non ho una segmentazione degli ambienti ed un eventuale Export dei dati deve sempre avvenire per questo campo che individua i dati di quel "cliente".
Oppure, ho inteso male e la soluzione è diversa ?
Grazie
0
voti
dalla mia poca esperienza credo che non sia utile creare tabelle per ogni cliente, se devi ricercare qualche specifica comune a tutti sarà più impegnativo, certo che dipende anche da quanto spazio dovranno occupare le tabelle.
per il database ho sempre lavorato in locale, quindi non saprei dirti cosa è meglio in internet.
io ho usato in vecchio Microsoft Jet4, anche attraverso la rete e funziona, poi ho usato ADODB, che credo lavori anche in internet, poi ho usato SqlServerExpressCompact, (leggero e free), non so se lavora in rete ma va molto bene in locale.
Altri utenti sono certamente più esperti di me su questo, saluti.
per il database ho sempre lavorato in locale, quindi non saprei dirti cosa è meglio in internet.
io ho usato in vecchio Microsoft Jet4, anche attraverso la rete e funziona, poi ho usato ADODB, che credo lavori anche in internet, poi ho usato SqlServerExpressCompact, (leggero e free), non so se lavora in rete ma va molto bene in locale.
Altri utenti sono certamente più esperti di me su questo, saluti.
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
0
voti
lelerelele ha scritto:dalla mia poca esperienza credo che non sia utile creare tabelle per ogni cliente
No, le tabelle NON sono per cliente. Le tabelle sono uniche, sono i dati (record) che vengono segmentati per "cliente".
lelerelele ha scritto:certo che dipende anche da quanto spazio dovranno occupare le tabelle
Esatto perché se ipotizzo di avere tanti "clienti" i record nelle tabelle aumenterebbero a dismisura ed in tal caso opterei per una diversa soluzione.
. poiché DB+Applicativo risiedono sul server, il tutto avviene "lato server", solo le richieste vengono gestite in "remoto"; Ma in tal caso credo che non cambia nulla ed il tutto dipende dalla connessione/traffico disponibile in updload (se non è così correggetemi)lelerelele ha scritto:per il database ho sempre lavorato in locale, quindi non saprei dirti cosa è meglio in internet.
In definitiva, l'intento sarebbe quello di ottimizzare la manutenzione sull'unico DB. Ad ogni modo c'è qualcosa che mi sfugge forse nella gestione di schema-tabelle che magari non ho inteso bene/non conosco... se qualcuno ha avuto esperienze in tal genere di attività magari può illuminarmi
Grazie
0
voti
Secondo me la tecnica migliore è la singleton connection.
Non so quale sistema d persistenza delle informazioni tu usi, ma ad esempio, con hybernate, sotto Java, si instaura una sola singleton connecction tramite una classe driver al DB, e poi si fanno le varie istanze a questa classe, per evitare di aprire troppe connessioni al database, che è notoriamente lento.
A questo punto, hybernate si occupa di gestire la concorrenza per la persistenza delle informazioni, tu potrai aprire tante richieste con tutte le query SQL di cui hai bisogno, invocando non una diversa connessione al DB per ogni cliente, o per ogni esigenza, ma una diversa chiamata a quell'unica istanza singleton.
Ci penserà poi lei ad occuparsi di fare i vari update al database.
In questo modo, dopo che avrai preparato tutti i vari "statement" al DB, non dovrai più preoccuparti degli accessi concorrenti.
Saluti
Non so quale sistema d persistenza delle informazioni tu usi, ma ad esempio, con hybernate, sotto Java, si instaura una sola singleton connecction tramite una classe driver al DB, e poi si fanno le varie istanze a questa classe, per evitare di aprire troppe connessioni al database, che è notoriamente lento.
A questo punto, hybernate si occupa di gestire la concorrenza per la persistenza delle informazioni, tu potrai aprire tante richieste con tutte le query SQL di cui hai bisogno, invocando non una diversa connessione al DB per ogni cliente, o per ogni esigenza, ma una diversa chiamata a quell'unica istanza singleton.
Ci penserà poi lei ad occuparsi di fare i vari update al database.
In questo modo, dopo che avrai preparato tutti i vari "statement" al DB, non dovrai più preoccuparti degli accessi concorrenti.
Saluti
-

harpefalcata
326 1 3 6 - Stabilizzato

- Messaggi: 422
- Iscritto il: 28 lug 2015, 21:03
29 messaggi
• Pagina 1 di 3 • 1, 2, 3
Chi c’è in linea
Visitano il forum: Nessuno e 17 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


