PDA

View Full Version : Replica DB


DigitalKiller
27-12-2004, 15:56
Salve a tutti gli utenti. Spero di non aver sbagliato sezione..
Per lavoro ho la necessità di creare su pc la replica di alcuni database ISeries DB2/400. Leggendo i redbooks della IBM ho visto che è necessario, oltre al DB2 UDB Enterprise Server Edition Version 8 (già in mio possesso), il programma DB2 Connect Personal Edition..
Vorrei sapere se esiste qualche programma, magari open source, in grado di sostituirlo o se esiste qualche altra alternativa per creare repliche su pc...
Grazie a tutti!

mailand
27-12-2004, 16:46
non potresti provare a fare un backup e poi un ripristino dei dati nel pc? mi pare sia possibile fargli leggere un savf...

DigitalKiller
27-12-2004, 17:23
La replica di questi database mi serve per un'applicazione web dinamica che sto scrivendo..non posso utilizzare il comando savf ogni volta che i dati originali vengono modificati..

mailand
27-12-2004, 17:49
in effetti per quello che chiedi a parte il connect non è che mi venga in mente nulla...
oltretutto db2 è estremamente proprietario, per di più su as400...

DigitalKiller
27-12-2004, 18:13
Per questioni di sicurezza, vorrei evitare di lavorare direttamente sull'as/400. Da qui, la scelta della replica. Inoltre i database interessati sono molto grandi e facendo la replica, se non sbaglio, potrei escludere i record che non mi interessano velocizzando l'interrogazione

mailand
28-12-2004, 09:40
guarda io ho avuto un problema simile di repliche da as400 ad oracle, ed è stato risolto installando l'oracle transparent gateway (che non è altro che il connect per oracle... e costa uno sproposito...)

DigitalKiller
28-12-2004, 10:59
..nessun'altra idea?..ke faccio, lancio giornalmente delle richieste di trasferimento dall'as400 al pc?

DigitalKiller
29-12-2004, 09:13
Dai ragazzi, nessun altro è in grado di aiutarmi??

dataman
11-01-2005, 16:49
Siete male informati, tutti quanti. :D

Adesso vi spiego tutto.

DB2 UDB Enterprise Server Edition è un oggetto estremamente costoso e sofisticato, che serve per mettere in piedi database aziendali e datawarehouse di produzione spinta, di grosse dimensioni e dall'utenza estesa. Inutile quindi dotarsene per avere una copia in locale dei dati AS/400.

DB2 Connect è un cosiddetto DRDA Application Requester, ovvero un software di connessione e conversazione applicativa necessario perchè dei DB2 su LAN possano comunicare e scambiare dati con DB2 su mainframe (OS/400, Z/OS, VM e VSE, per la precisione).
DB2 Connect si esprime localmente come uno stack di driver applicativi (ODBC, OLE DB - ADO, JDBC, embedded SQL e CLI) in modo che qualunque applicazione, scritta in qualunque modo, possa agganciarlo, e tramite esso arrivare a DB2 su mainframe.

Quindi, se la tua esigenza è quella di scaricare dati in modo grezzo da DB2/400 e portarli su un PC e manipolarli localmente, è sufficiente che tu ti attrezzi con DB2 UDB Personale Edition, e DB2 Connect Personal Edition, ovvero le versioni singolo utente di DB2 e DB2 Connect. Con DB2 UDB ti crei un db locale e ci metti dentro quello che vuoi, con DB2 Connect Personale, ti connetti al DB2/400 e puoi invocare le utility di data replication e data movement necessarie alla replica.

Occhio però che se la tua esigenza è quella di generare un flusso di replica costante con frequenti aggiornamenti e controaggiornamenti sulle due basi dati, il discorso cambia e di parecchio.

Dai un'occhiata qui:
http://www-306.ibm.com/software/data/db2/udb/edition-pe.html

e qui:
http://www-306.ibm.com/software/data/db2/db2connect/db2connect-pe.html

Ciao.

DigitalKiller
12-01-2005, 10:20
..nel primo post credo di essere stato poco chiaro..
sto scrivendo un'applicazione web che si interfaccia con la nostra contabilità. Dal web si ha solo la possibilità di consultare i dati (non si apporta nessuna modifica), quindi gli aggiornamenti devono essere fatti solo dall'Iseries al pc e purtroppo devono essere frequenti. I dati presenti sul pc si dovrebbero aggiornare ad ogni aggiornamento di quelli presenti sull'Iseries, al max ad intervalli di tempo predefiniti o su richiesta.


Ps. Il DB2 UDB Enterprise Server Edition ci è stato fornito, con altro sotware, insieme all'Iseries:D

dataman
12-01-2005, 11:16
Originariamente inviato da DigitalKiller
..nel primo post credo di essere stato poco chiaro..
sto scrivendo un'applicazione web che si interfaccia con la nostra contabilità. Dal web si ha solo la possibilità di consultare i dati (non si apporta nessuna modifica), quindi gli aggiornamenti devono essere fatti solo dall'Iseries al pc e purtroppo devono essere frequenti. I dati presenti sul pc si dovrebbero aggiornare ad ogni aggiornamento di quelli presenti sull'Iseries, al max ad intervalli di tempo predefiniti o su richiesta.


Ps. Il DB2 UDB Enterprise Server Edition ci è stato fornito, con altro sotware, insieme all'Iseries:D

Continuo a fare fatica a capire il flusso dei dati.

1) L'applicazione Web può solo leggere i dati dove ? Sull'Iseries o sul PC ?
2) Chi aggiorna i dati sull'Iseries ? (applicazioni COBOL/RPG tradizionali, applicazioni distribuite interattive, etc..)
3) La replica su PC che scopi ha ? Backup, rendere disponibili ad applicazioni NON Iseries un subset dei dati dell'host, etc...)
4) Qual'è frequenza di aggiornamento desiderata e con che volumi ?

DigitalKiller
12-01-2005, 12:45
Cerco di spiegarti brevemente il progetto..
Con l'applicazione che sto realizzando, vorrei dare ai fornitori la possibilità di consultare, tramite web, l'estratto conto delle fatture già saldate e/o quello delle fatture ancora da saldare. L'applicazione legge i dati da tre database: quello contenente le anagrafiche dei fornitori, quello contenente le fatture già pagate e quello delle fatture da pagare. Quando i dati della contabilità vengono modificati (aggiornando i database dell'Iseries) anche i dati presenti sul pc dovrebbero essere aggiornati.


Originariamente inviato da dataman
Continuo a fare fatica a capire il flusso dei dati.

1) L'applicazione Web può solo leggere i dati dove ? Sull'Iseries o sul PC ?
2) Chi aggiorna i dati sull'Iseries ? (applicazioni COBOL/RPG tradizionali, applicazioni distribuite interattive, etc..)
3) La replica su PC che scopi ha ? Backup, rendere disponibili ad applicazioni NON Iseries un subset dei dati dell'host, etc...)
4) Qual'è frequenza di aggiornamento desiderata e con che volumi ?


1) L'applicazione web legge i dati presenti sul pc
2) I dati dell'Iseries vengono aggiornati da un'applicazione RPG
3) La replica sul pc serve per questa applicazione che non risiede sul server web Iseries
4) Se possibile, vorrei che i dati sul pc si aggiornassero ad ogni modifica sull'Iseries

dataman
13-01-2005, 11:08
Originariamente inviato da DigitalKiller
Cerco di spiegarti brevemente il progetto..
Con l'applicazione che sto realizzando, vorrei dare ai fornitori la possibilità di consultare, tramite web, l'estratto conto delle fatture già saldate e/o quello delle fatture ancora da saldare. L'applicazione legge i dati da tre database: quello contenente le anagrafiche dei fornitori, quello contenente le fatture già pagate e quello delle fatture da pagare. Quando i dati della contabilità vengono modificati (aggiornando i database dell'Iseries) anche i dati presenti sul pc dovrebbero essere aggiornati.





1) L'applicazione web legge i dati presenti sul pc
2) I dati dell'Iseries vengono aggiornati da un'applicazione RPG
3) La replica sul pc serve per questa applicazione che non risiede sul server web Iseries
4) Se possibile, vorrei che i dati sul pc si aggiornassero ad ogni modifica sull'Iseries


Ok, così è più chiaro.

Quando c'è di mezzo un discorso di replica è sempre comunque meglio muoversi con i piedi di piombo, sia perchè le tecniche e le opzioni sono diverse e quindi scegliere quella adatta può risultare difficile. Devo informarmi un po', poi ti facccio sapere.

Inoltre, mi spieghi come mai preferisci evitare l'acesso via Web direttamente all'AS/400 ? Ti risolverebbe un sacco di problemi e lo puoi circoscrivere facilmente in un contesto di sicurezza.

DigitalKiller
13-01-2005, 11:30
Lo so, lavorando sul server web dell'As/400 risolverei tutti i problemi....
il mio capo, però, non vuole che si acceda direttamente ai dati originari. Da qui la scelta di una replica su pc.
Inoltre nei database sull'As/400 è presente la contabilità di oltre 10 anni..per l'applicazione servono solo quelli degli ultimi 2/3 anni e con la replica, se non sto dicendo una stupidata, potrei portarmi su pc solo la porzione di dati che a me interessa.


..non so...se hai altre soluzioni..


Ps. grazie per l'aiuto!!

dataman
13-01-2005, 11:34
Originariamente inviato da DigitalKiller
Lo so, lavorando sul server web dell'As/400 risolverei tutti i problemi....
il mio capo, però, non vuole che si acceda direttamente ai dati originari. Da qui la scelta di una replica su pc.
Inoltre nei database sull'As/400 è presente la contabilità di oltre 10 anni..per l'applicazione servono solo quelli degli ultimi 2/3 anni e con la replica, se non sto dicendo una stupidata, potrei portarmi su pc solo la porzione di dati che a me interessa.


..non so...se hai altre soluzioni..


Ps. grazie per l'aiuto!!

La tua azienda è già Business Partner IBM ? Oppure avete rapporti di collaborazione ad altro titolo con IBM ?

Ho in mente un paio di soluzioni, ma è troppo lungo discuterne per iscritto. Se vuoi ti mando il mio numero di telefono dell'ufficio in PVT. ;)

DigitalKiller
13-01-2005, 12:02
..non ne sono sicuro, ma credo che non ci sia nessuna Business Partner con IBM o altra collaborazione..posso risponderti con certezza più tardi, ora il mio capo è impegnato..
Comunque, potresti accennarmi questa tua idea? Grazie

DigitalKiller
13-01-2005, 13:07
mi sono informato..con IBM non abbiamo nessuna Business Partner o altro tipo di collaborazione.
Ora?:D

dataman
13-01-2005, 13:14
Originariamente inviato da DigitalKiller
mi sono informato..con IBM non abbiamo nessuna Business Partner o altro tipo di collaborazione.
Ora?:D

'So cazzi :eek: :D

A parte le battute, se non conoscete i prodotti IBM distribuiti, potrebbe diventare oneroso sviluppare una soluzione; diventa anche un fatto di costi nascosti di formazione e skill che potrebbero costituire un problema, risolvibile solo con un investimento (non esorbitante, ma significativo) in education.

Sicuramente, visto che avete un ISeries c'è un commerciale IBM che vi ha venduto il ferro ed il SW OS/400 che usate, quindi iniziate a coinvolgerlo e vedete cosa vi dice.

Poi fammi sapere.

DigitalKiller
13-01-2005, 13:29
Originariamente inviato da dataman
'So cazzi :eek: :D


Non so perchè, ma lo immaginavo!!:cry:
Proverò a contattare il commerciale IBM..
Grazie per l'aiuto, ti farò sapere

DigitalKiller
13-01-2005, 14:02
Volendo utilizzare il web server dell'Iseries?..potrei creare dei database "di appoggio" con i soli dati che a me interessano e poi aggiornarli con dei trigger (:confused: ) sui database principali..
è fattibile?

dataman
13-01-2005, 14:17
Originariamente inviato da DigitalKiller
Volendo utilizzare il web server dell'Iseries?..potrei creare dei database "di appoggio" con i soli dati che a me interessano e poi aggiornarli con dei trigger (:confused: ) sui database principali..
è fattibile?

Non conosco nel dettaglio il DB2 dell'ISeries, e teoricamente la cosa è fattibile. L'unico problema è che se gli aggiornamenti sono frequenti potresti creare una congestione di SQL sparato dai trigger che potrebbe farti sedere la macchina.

Bisogna fare uno studiolo di capacity, per capire bene (numero utenti, numero transazioni al minuto, complessità SQL, presenza di Stored Procedures e UDF, dimensioni delle tabelle, utilizzo o meno degli indici, etc...)

DigitalKiller
13-01-2005, 14:32
Utilizzando il web server dell'Iseries ma lavorando direttamente sui database originari? ci potrebbero essere degli inconvenienti? e per la sicurezza che dovrei fare?

dataman
13-01-2005, 14:49
Originariamente inviato da DigitalKiller
Utilizzando il web server dell'Iseries ma lavorando direttamente sui database originari? ci potrebbero essere degli inconvenienti? e per la sicurezza che dovrei fare?

Se sei in sola lettura, non dovresti creare particolari contese (tipo lock esclusivi o deadlock). Vero è che si dovrebbe dare un'aggiustatina al modello entità-relazioni (design fisico dei dati degli indici, etc..) e poi procedere ad un tuning di sistema per garantire lo smaltimento del nuovo carico.

Dal punto di vista della sicurezza, è il caso di parlarne con un sistemista ISeries esperto, ma penso che le normali procedure dell'OS/400 in aggiunta al normale sistema di GRANT SQL incrociato dovrebbero garantire l'integrità degli accessi.

Potrebbe essere necessario aggiornare la macchina, ma questo è un caso limite e probabile solo se il vostro ISeries è già vecchiotto ora.

DigitalKiller
28-01-2005, 21:01
Eccomi di nuovo qui!
purtroppo non ho ancora avuto modo di contattare il commerciale IBM in quanto in questi giorni ho altre priorità, però vorrei porti un'altra domanda. Da As/400 è possibile salvare un file su un pc? Cioè è possibile esportare su pc un file direttamente su pc senza ricorrere al data transfer?
grazie

dataman
28-01-2005, 21:40
Originariamente inviato da DigitalKiller
Eccomi di nuovo qui!
purtroppo non ho ancora avuto modo di contattare il commerciale IBM in quanto in questi giorni ho altre priorità, però vorrei porti un'altra domanda. Da As/400 è possibile salvare un file su un pc? Cioè è possibile esportare su pc un file direttamente su pc senza ricorrere al data transfer?
grazie

Mah, io sono più esperto database che non ISeries puro, ma se non sbaglio c'è una maniera di mappare una libreria dell'AS/400 ed esportarla come network drive, in modo che tu possa mapparla direttamente da windows con il comando "net use" classico.

A quel punto, basta un copia e incolla.

Non saprei aiutarti però.

Quanto alla replica DB, mi è venuta una luminosa idea. Perchè non crei una LPAR sull'ISeries, ci installi un bel Suse linux Power PC e lì sopra installi DB2 UDB ?. Avresti il vantaggio di tenere comunque la gestione sistemistica consolidata nella box ISeries, e di velocizzare enormemente i task di replica dati.

Se ti interessa ne possiamo parlare.

Resta il fatto che dovresti farti un minimo di skill DB2 UDB e forse anche Linux, se già non ne sai.

A presto.

Ciauz.

DigitalKiller
29-01-2005, 10:06
In questi giorni sto facendo delle prove proprio su un server linux con installato MySQL. Quest'ultimo offre la possibilità di importare i dati da un file di testo. Questa procedura potrei automatizzarla, però il problema resta il trasferimento dall'AS400 al pc. Mi servirebbe un programma che mi permettesse di trasferire i file verso il pc. Non ho ancora provato il client access per linux, ma da quello che ho letto non integra una funzione di trasferimento file

dataman
03-02-2005, 12:56
Originariamente inviato da DigitalKiller
In questi giorni sto facendo delle prove proprio su un server linux con installato MySQL. Quest'ultimo offre la possibilità di importare i dati da un file di testo. Questa procedura potrei automatizzarla, però il problema resta il trasferimento dall'AS400 al pc. Mi servirebbe un programma che mi permettesse di trasferire i file verso il pc. Non ho ancora provato il client access per linux, ma da quello che ho letto non integra una funzione di trasferimento file

In questi giorni sono a casa malato, rietrerò settimana prox.

Se ti va fammi uno squillo al numero che ti ho mandato in PVT; potrei darti ulteriori spunti di riflessione.

;)

cinno
04-02-2005, 16:40
Ho dato una veloce scorsa alla discussione e provo dire le mie sciocchezze:

Tenere quanto più possibile il dato e l'elaborazione SU i-Series; questo significa che
1) Vedo poco produttivo aggiornare i dati di fatturazione degli ultimi 2-3 anni dopo una select sul grezzo magari neanche fatta in pass-through.
2) Il dato che passerei alla tua applicazione serebbe il solo risultato della query fatta dal fornitore
3) Se si potesse consolidare anche il back-end su i-series sarebbe decisamente meglio (chiamatemi Lapalisse :D ). Fra le cosucce che avete in casa non c'è anche un bel WebSphere :sofico:?

Se non ricordo male, oltre all'impraticabile ODBC (del Client Access o del più performante prodotto della HIT ... se esiste ancora...), c'è l'opzione della copia dei file fisici su cartelle NFS/SMB.

Il DB2 UDB Enterprise Server Edition contempla anche il concetto di file DDM?
Prova adare un occhiata qui:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/index.htm?info/ddp/rbal1mst02.htm


Cinno

dataman
07-02-2005, 09:52
Originariamente inviato da cinno

Il DB2 UDB Enterprise Server Edition contempla anche il concetto di file DDM?
Prova adare un occhiata qui:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/index.htm?info/ddp/rbal1mst02.htm


Cinno


Assolutamente sì. Db2 ESE contiene la funzione di DRDA Application requester, necessaria per interfacciarsi con DDM.

Tale funzione viene anche fornita separatamente (qualora si richiedano pure funzioni di connessione DRDA senza bisogno di database locali) e va sotto il nome di DB2 Connect.
;)

DigitalKiller
10-02-2005, 11:45
Eccomi di nuovo qui:D
Ho trovato una possibile soluzione, anche se non si tratta di una vera e propria replica.

Ti elenco le fasi:
1) tramite ftp scarico sul pc i file necessari
2) con uno script in perl converto i file da EBCDIC in ASCII
3) carico i dati sul database

Naturalmente, tutte queste fasi sarebbero automatiche. In meno di 5 minuti ho i dati aggiornati..

Cosa ne pensi?

dataman
11-02-2005, 21:40
Originariamente inviato da DigitalKiller
Eccomi di nuovo qui:D
Ho trovato una possibile soluzione, anche se non si tratta di una vera e propria replica.

Ti elenco le fasi:
1) tramite ftp scarico sul pc i file necessari
2) con uno script in perl converto i file da EBCDIC in ASCII
3) carico i dati sul database

Naturalmente, tutte queste fasi sarebbero automatiche. In meno di 5 minuti ho i dati aggiornati..

Cosa ne pensi?

Come soluzione a costo (quasi) zero mi sembra buona. Il problema rimane la frequenza degli aggiornamenti e le contese sui dati originari. Se la frequenza è sporadica dovresti cavartela, se inizia a diventare sistematica, forse devi pensare a qualcos'altro, tipo un replica SQL o via messaggistica (stile MQ Series).

CIao.

;)

DigitalKiller
15-02-2005, 12:01
In effetti il problema rimane la frequenza degli aggiornamenti. Ho fatto delle prove sul server (un vecchio PIII 500) e la fase di conversione da EBCDIC ad ASCII impiega circa 30 minuti (le prove le avevo fatte sul mio pc, un Athlon Xp 2600..).:cry: In questo modo gli aggiornameti non possono essere frequenti..Ora sto scrivendo 1 programmino che legge i dati dall'As400 e li scrive in Mysql..vediamo come va con questa soluzione. Comunque, ho contattato il commerciale IBM ed ora aspetto una loro risposta