Spostamento dei dati tra database con XML

2

Ho appena letto questo preventivo online:

XML is a very useful technology for moving data between different databases or between databases and other programs. However, it is not itself a database.

Che è citato dal libro "XML efficace: 50 modi specifici per migliorare il tuo XML".

Non capisco cosa ti preoccuperesti di spostare i dati tra i database in un formato XML. I database di solito contengono molti dati, quindi non sarebbe prolisso trasformarlo in un formato XML?

Non c'è modo di serializzare semplicemente i dati del database in qualcosa di meno dettagliato, in qualche modo, invece di preoccuparsi delle conversioni?

    
posta user1413969 18.03.2014 - 18:12
fonte

2 risposte

7

XML ha due attributi molto importanti che lo rendono attraente per il trasferimento di dati tra sistemi eterogenei:

  1. Puoi passarlo attraverso i firewall e
  2. Di solito puoi trovare librerie di lettori / scrittori già scritte per crearlo e analizzarlo.

Se stai cercando qualcosa di meno dettagliato che abbia ancora entrambi questi attributi, puoi provare a usare JSON.

Se stai semplicemente trasferendo dati tra due database omogenei sulla stessa rete, ci sono probabilmente modi più semplici. Ad esempio, Microsoft SQL Server ha almeno tre modi diversi per trasferire i dati tra i database: Inserimento di massa, SSIS e Replica.

    
risposta data 18.03.2014 - 18:16
fonte
4

Sì, è un metodo dettagliato per il trasferimento dei dati. Probabilmente non tanto quanto potresti pensare.

Esploriamo un po 'di storia che potrebbe aiutare a spiegare perché XML è stata una buona scelta e potrebbe ancora essere la scelta . Quando è nato XML, non c'erano molte buone scelte per il trasferimento di dati tra database diversi dalla stessa società di software, per non parlare di diverse società. I due metodi più semplici al momento erano quelli di creare CSV (csv ha i suoi problemi durante il trasferimento tra sistemi) e SQL mirato (se l'altro db lo supportava).

L'XML ha portato a una tecnica in cui è possibile definire relazioni parent parent quelle all'interno del supporto di archiviazione / trasferimento dati senza dover disporre di un'altra tabella specializzata solo per mostrare le relazioni. Per alcuni database, questo ha reso l'aggiunta di nuovi record molto semplice (cercare database multivalore o qualcosa di moderno, MongoDB). Per altri, si trattava semplicemente di costruire cursori per scorrere i dati del bambino.

Come ha detto Robert Harvey nella sua risposta, c'erano anche problemi di rete da affrontare (ottenere i dati oltre il firewall, nessuno degli intermediari che cambiava i dati perché erano su un sistema UTF7 invece che ASCII o UTF8), comprimendo dati mentre si muovono attraverso il filo. Questi erano tutti parte del processo di pensiero dietro la costruzione di XML come un trasporto basato su testo.

Infine, l'analisi delle stringhe è integrata in quasi tutte le lingue e tutti i sistemi di database esistenti. Quindi creare librerie per eseguire un metodo predefinito di analisi dell'XML è diventato qualcosa che tutti i provider di lingua e database hanno incorporato nel loro software.

Posso capire perché preferiresti usare qualcosa che non aggiunge un sovraccarico tanto quanto XML (JSON per esempio). Realisticamente però, ci sono luoghi in cui XML batte ancora molte delle nuove tecnologie .

Uno dei posti più grandi che puoi salvare quando usi XML come tecnologia di trasporto consiste nell'usare attributi al posto degli elementi.

<user id="1" firstname="Adam" lastname="Zuckerman" />

Mentre il JSON equivalente è:

{ user: { id: 1, firstname: "Adam", lastname: "Zuckerman"} }

MichaelT ha sollevato un buon punto nei commenti: l'XML può essere validato usando diversi metodi. Ciò garantisce che non solo l'XML sia ben formato (tag di chiusura, caratteri legali, ecc.), Ma che tutti i tag siano corretti e consentiti nella struttura.

Un altro pensiero mi viene in mente sul motivo per cui usare XML su un'altra tecnologia di trasporto è un'abilità per lo più dimenticata di trasformare l'XML direttamente in un altro output (ad es., da XML a HTML usando XSLT).

Mi scuso se una qualsiasi delle sintassi sopra riportata non è corretta. Questo era solo in cima alla mia testa.

    
risposta data 18.03.2014 - 20:39
fonte

Leggi altre domande sui tag