Chiarimento compatibilità dei Database

di il
3 risposte

Chiarimento compatibilità dei Database

Salve a tutti del forum,
come da oggetto, vorrei avere un chiarimento sui gestori di Database (librerie mySQL, T-SQL, LiteSQL, HyperSQL e etc.).

Premetto che:
1) Sto iniziando ad utilizzare HyperSQL ma ci sono anche mySQL, T-SQL, LiteSQL e etc.
2) Ho esperienza solo sui Database su ACCESS e la teoria sui database relazionali.

In particolare vorrei capire quanto segue:
- Tutti i gestori (non so come altro chiamarli: LiteSQL/T-SQL/HyperSQL/etc) dicono di essere compatibili con SQL Vers.X (credo che si riferiscono a SQL Microsoft).

Domanda: Un software che utilizza HyperSQL (per operare su database prodotti con HyperSQL) può aprire un database generato da altri SW che utilizzano ad es. mySQL o LiteSQL o altro?

La compatibilità SQL ver.x dichiarata da HyperSQL si riferisce al solo linguaggio SQL oppure alle operazioni effettuabili su altri Database/Tabelle/etc di altri gestori a loro volta compatibili con SQL Vers.X?

Oppure, HyperSQL potrebbe aprire un Database generato da mySQL con delle limitazioni operative?

Grazie per aver letto, ancor di più se mi rispondete
Nick

3 Risposte

  • Re: Chiarimento compatibilità dei Database

    Chiariamo bene. Un conto è il DBMS, ovvero il software (in generale l'insieme di applicazioni/tools compresi nella installazione del DBMS) che gestisce e manipola la base dati.
    MySQL, MariaDB, PostgreSQL, SQLite, HSQLDB (HyperSQL), Apache Derby sono tutti DBMS (in modo specifico RDBMS, "R" per Relational).
    Un DBMS può essere usato in modalità "client-server" oppure "embedded". In certi casi un DBMS potrebbe offrire entrambe le modalità.

    Ciascun DBMS memorizza i dati usando formati di file assolutamente specifici e potenzialmente "non documentati" (specialmente se il DBMS è closed-source). Questo vuol dire che ad esempio il file proprio fisico del DB generato da SQLite sicuramente NON lo puoi di certo usare con HSQLDB, né da MySQL o PostgreSQL.
    L'espressione "aprire il database" è un po' vaga/impropria in questo scenario.

    Gli RDBMS offrono tipicamente il linguaggio SQL. SQL è un standard in varie versioni, es. SQL/92, SQL/99 ecc...
    Ciascun RDBMS può supportare una di queste versioni, magari anche solo un sotto-insieme di questi. E tipicamente offre anche una sua propria estensione al SQL "standard", in termini di nuove istruzioni, nuovi tipi di dati ecc...

    Un RDBMS può anche offrire concetti ed entità che NON ci sono in altri RDBMS. In PostgreSQL e Oracle DB esistono le "sequence". In MySQL NO.

    Tutto questo vuol dire una cosa abbastanza semplice: "portare" una base dati da un RDBMS all'altro NON è affatto banale.
  • Re: Chiarimento compatibilità dei Database

    Grazie per la risposta,
    quindi se ho capito bene:
    - Un DBMS (che erroneamente pensavo prodotto Database Microsoft per via del MS finale) è il software per la gestione dei dati.
    - Apache, mySQL, HyperSQL e etc. sono i produttori del DBMS.
    - La compatibilità offerta da questi produttori di DBMS sono riferiti al linguaggio SQL secondo gli standard SQL (SQL/92, etc.)


    Ritornando al mio discorso, io avevo preso spunto dal fatto che alcuni SW consentono di importare i dati da diversi DBMS.
    Questo significa che il software possiede 'n' classi per quanti sono le marche di DBMS (Apache, TSQL, mySQL, etc) per consentire l'acquisizione dei dati da un database in input.

    Caspita, fin'ora ho fatto diverse classi per gestire i file tipo: CSV - XML - XLS - TXT
    Con metodi per:
    - Aprire un file di tipo per importare dati.
    - Importare i dati provenienti da un tipo diverso attraverso istanze di altre classi.
    - Effettuare delle operazioni comuni a tutti i tipi (metodi comuni tra le classi).
    - Salvare i dati importati o memorizzati nell'istanza.
    - Esportare in un formato diverso da quello corrente.
    - etc.

    Praticamente ogni classe ha metodi in comune con tutte le classi e metodi specifici per il tipo per operazioni particolari del tipo.

    Speravo di fare una sola classe per la gestione dei DBMS e invece comprendo solo ora che dovrò fare una classe HyperSQL, una per mySQL, un'altra per altri marchi DBMS....

    Ovviamente non c'è nessuna alternativa?

    Saluti a tutti
    Nick
  • Re: Chiarimento compatibilità dei Database

    Non so se si applica al tuo caso, ma forse potresti usare un prodotto tipo jOOQ http://www.jooq.org o Hibernate http://hibernate.org
Devi accedere o registrarti per scrivere nel forum
3 risposte