ITMI951510A1 - Emulatore per un database relazionale in linguaggio sql - Google Patents

Emulatore per un database relazionale in linguaggio sql Download PDF

Info

Publication number
ITMI951510A1
ITMI951510A1 IT95MI001510A ITMI951510A ITMI951510A1 IT MI951510 A1 ITMI951510 A1 IT MI951510A1 IT 95MI001510 A IT95MI001510 A IT 95MI001510A IT MI951510 A ITMI951510 A IT MI951510A IT MI951510 A1 ITMI951510 A1 IT MI951510A1
Authority
IT
Italy
Prior art keywords
sql
functions
data
application
file
Prior art date
Application number
IT95MI001510A
Other languages
English (en)
Inventor
Rodolfo Bonzi
Original Assignee
Alcatel Italia
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alcatel Italia filed Critical Alcatel Italia
Publication of ITMI951510A0 publication Critical patent/ITMI951510A0/it
Priority to ITMI951510A priority Critical patent/IT1275529B/it
Priority to ES96926342T priority patent/ES2140116T3/es
Priority to CN96195530A priority patent/CN1098501C/zh
Priority to AT96926342T priority patent/ATE187565T1/de
Priority to JP9506270A priority patent/JPH11509349A/ja
Priority to EP96926342A priority patent/EP0839358B1/en
Priority to DE69605553T priority patent/DE69605553T4/de
Priority to CA002223490A priority patent/CA2223490A1/en
Priority to PCT/EP1996/003080 priority patent/WO1997004407A1/en
Priority to DE69605553A priority patent/DE69605553D1/de
Priority to US08/983,200 priority patent/US6003026A/en
Publication of ITMI951510A1 publication Critical patent/ITMI951510A1/it
Application granted granted Critical
Publication of IT1275529B publication Critical patent/IT1275529B/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Metodo e mezzi per il porting di una applicazione esistente (An) che usa un database relazionale con interfaccia SQL verso una piattaforma hardware (HW2) con configurazione software ridotta che non include un database relazionale SQL. L'invenzione emula un database SQL consentendo un risparmio di risorse hardware e fornendo un sottoinsieme di funzioni per - creare tabelle SQL e definire i campi;- memorizzare, modificare e cancellare dati sulle tabelle create, con controllo di tipo;- recuperare tali dati usando filtri SQL.Le funzioni sono suddivisibili in livelli (M1, M2, M3) allo scopo di:- convertire una istruzione SQL, proveniente da una esistente applicazione (An) di utente, in una sequenza di funzioni (IF1 ...IFn) di interfaccia elementari,- usare dette funzioni di interfaccia per leggere/scrivere file (F1 ... Fn) di dati,- processare dati in uscita da fornire alla applicazione (An) di utente richiedente.

Description

DESCRIZIONE
La presente invenzione si riferisce ad un metodo per fornire un sottoinsieme di funzioni di database relazionale con interfaccia in linguaggio SQL (Structured Query Language) ad applicazioni già' esistenti.
Esistono già' svariati database disponibili in commercio con interfaccia SQL i quali forniscono un insieme esaustivo di funzioni, ma essi richiedono un forte dispendio di risorse "hardware".
Di conseguenza, programmi di elaboratori scritti per un elaboratore con una piattaforma software comprendente un database relazionale in linguaggio SQL di tipo commerciale sono spesso inadeguati per l'uso con elaboratori aventi una ridotta configurazione hardware.
In passato molte applicazioni esistenti hanno dovuto essere riscritte per renderle adatte ad interfacciarsi con un database proprietario esistente in quella apparecchiatura.
Inoltre, i database proprietari sono di solito dipendenti dalla apparecchiatura e non possono essere usati per la stessa o per altre applicazioni su altre apparecchiature.
Uno dei maggiori problemi che gli sviluppatori di applicazioni incontrano allorché' si tratta di effettuare il c.d. "porting" cioè' di portare applicazioni esistenti, sviluppate su una diversa piattaforma hardware e software che usano un database relazionale in linguaggio SQL, verso apparecchiature con limitata configurazione hardware, per esempio "server" di comunicazione, altre apparecchiature di rete, ecc., e' la necessita' di riscrivere parte delle applicazioni allo scopo di renderle atte ad interfacciarsi con un database proprietario esistente su quella apparecchiatura, altrimenti le applicazioni non potrebbero essere usate o dovrebbero essere riscritte completamente.
Talvolta l’apparecchiatura di destinazione possiede una ridotta disponibilità' di risorse hardware a causa della installazione di altre applicazioni dispendiose in risorse (per esempio, software per comunicazioni quali i protocolli Stack ISO/OSI, TCP/IP e altri) e poiché' i database relazionali in linguaggio SQL di tipo commerciale sono fortemente dispendiosi in risorse hardware, potrebbe essere desiderabile evitare di installarla, per esempio nel caso di "porting" di una applicazione verso uno o piu' server di comunicazione.
Bisognerà* riconoscere che un database SQL che gira su una apparecchiatura con qualsiasi configurazione e' essenziale allo scopo di consentire ad una applicazione esistente che usa un database SQL di essere "portato" verso una apparecchiatura e di funzionare correttamente allorché' non sia stato installato un database commerciale.
Uno scopo della presente invenzione e' quello di provvedere un metodo e mezzi di porting fornenti un insieme di funzioni di database SQL ad una applicazione esistente su qualsiasi apparecchiatura, senza un sensibile dispendio di risorse "hardware" . Lo scopo viene raggiunto da un metodo avente le caratteristiche esposte nella rivendicazione 1 e da mezzi di porting esposti nella rivendicazione 4. L’invenzione cosi come rivendicata permette di effettuare il porting di applicazioni di software di utente già' esistenti usando un database SQL verso qualsiasi configurazione di hardware ridotta sulla quale un database relazionale in linguaggio SQL di tipo commerciale dispendioso in risorse non può essere installato, solo copiando, ricompilando ed eseguendo i file dell’applicazione senza alcuna modifica del codice sorgente.
Usando l'invenzione, lo spreco di tempo per modificare il codice sorgente già' esistente viene eliminato, laddove talvolta tale codice sorgente non e' facilmente modificabile e richiederebbe un grosso sforzo.
Inoltre, talvolta e' preferibile risparmiare sulle risorse hardware per altre applicazioni di run-time: in questi casi l'emulatore oggetto della presente invenzione permette il risparmio in una fase di configurazione.
Ancora, l'emulatore può' essere "customizzato" per essere usato con differenti piattaforme su qualsiasi apparecchiatura differente.
Ulteriori vantaggiose caratteristiche della invenzione sono esposte nelle rivendicazioni dipendenti.
Vantaggiosamente, la sicurezza dei dati di utente può' essere garantita, quando e' necessario, usando un modulo di cifratura/decifratura per accedere ai file dati.
L'invenzione verrà' ora descritta in dettaglio, per mezzo di un esempio, con riferimento ai disegni allegati in cui:
- Fig. 1 mostra l'uso dell'emulatore durante una fase di porting secondo la presente invenzione;
- Fig. 2 enumera tutte le parti che costituiscono 1'architettura software dell'emulatore secondo l'invenzione;
- Fig. 3 mostra come una istruzione (statement) SQL viene convertita in una funzione d'interfaccia la quale viene quindi tradotta in una sequenza di funzioni libreria di emulazione che accedono ai file ASCII, secondo l'invenzione;
- Fig. 4 mostra l implementazione di come una istruzione SQL viene convertita in una funzione d' interfaccia la quale viene quindi tradotta in una sequenza di funzioni libreria di emulazione che accedono ai file ASCII, secondo l'invenzione;
- Fig. 4-B mostra un esempio particolare di Fig. 4; - Fig. 5 mostra un sistema per gestire una rete telefonica, implementato usando una rete per area locale (LAN) comprendente dei server di comunicazione di ridotta configurazione hardware che può' attuare l’invenzione ; e
- Fig. 6 mostra un esempio di una topologia di rete crescente comprendente server di comunicazione aventi una configurazione hardware ridotta, che può' attuare l'invenzione .
La presente invenzione si rivolge a un approccio di emulazione di un database come illustrato in Fig. 1. In ciò’ che segue, si fara' particolare attenzione al servizio fornito alla applicazione che necessita il database sebbene si dovrebbe intendere ‘che l'emulatore pot rebbe'implementa re un set di funzioni differente che sara' il minimo richiesto dalla applicazione per poter funzionare.
Con la presente invenzione si offre un metodo originale per fornire le prestazioni di un database SQL. commerciale in un modo differente, usando un emulatore 1.
Questo emulatore e‘ un database modulare: solo le funzioni necessarie per soddisfare i requisiti di un'applicazione An di utente già' esistente sono configurate ed installate cosi da permettere la minima flessibilità', onde ridurre il consumo di risorse hardware, in particolare tempo di memoria e di CPU.
L'emulatore gestisce i file ASCII di configurazione e di dati utente F1...Fn facendo uso di una libreria modulare di funzioni e strutture di dati predefiniti. Questa semplice struttura modulare permette un facile miglioramento e manutenzione della configurazione allo scopo di ridurre le dimensioni dell'emulatore tenendo conto dei requisiti dell'applicazione e della configurazione hardware di un'apparecchiatura.
La succitata applicazione An e' stata, per esempio, sviluppata su una prima piattaforma hardware HW1 che interfaccia l'applicazione An verso il database relazionale SQL con una configurazione software SW1, e si suppone essere usata su una seconda piattaforma hardware HW2 quando il database SQL non e' disponibile e quindi non si può' usare SW1. L'architettura software dell'emulatore 1 e' mostrata in Fig.2.
L'emulatore 1 e' composto dalle seguenti parti:
- un modulo interfaccia MI che fornisce alle applicazioni un'interfaccia SQL (essa sostituisce la piattaforma SW1). Questo modulo e' dipendente dalla applicazione e dovrebbe essere "customizzato'' a seconda del tipo di istruzione SQL usata, con particolare riguardo alla istruzione di interrogazione (query statement) avente una sintassi complessa. Esso include un insieme di funzioni, una per ogni specifica istruzione SQL usata dall'applicazione An;
- una libreria M2 di emulazione modulare espandibile e indipendente dalla applicazione, includente un insieme di funzioni che eseguono le funzioni di base sui file ASCII, richieste da M1 allo scopo di implementare le istruzioni SQL usate dall'applicazione An;
- un modulo di gestione di errori (non mostrato in figura);
- un modulo di cifratura M3 (non obbligatorio);
- file ASCII F1, Fm-1 di configurazione, comprendente il database e definizione di tabelle; - file ASCII Fm....Fn di dati di utente (i quali possono essere cifrati) comprendenti i dati di utente inseriti in accordo alla definizione delle tabelle .
L'emulatore gestisce un certo numero di file ASCII contenenti la definizione di tabelle e i dati delle applicazioni di utente.
Per ragioni di sicurezza, i dati possono essere opzionalmente cifrati.
Usando l'emulatore, il tempo di CPU dedicato e la quantità’ di memoria RAM e il numero di megabyte del hard disk richiesto vengono fortemente ridotti rispetto ai database SQL esistenti.
L’emulatore di database relazionale in linguaggio SQL fornisce alle applicazioni di utente una libreria modulare includente un insieme di funzioni per :
- creazione tabelle SQL e definizione campi;
- memorizzazione, modifica e cancellazione di dati sulle tabelle create, laddove un controllo di tipo viene eseguito in accordo alla definizione di campo; e
- recupero di tali dati usando filtri SQL.
L'emulatore implementa i comandi SQL in due modi differenti :
1. per definire la struttura del database, i seguenti comandi di configurazione di tabella possono essere implementati usando un editor per aggiornare i file di configurazione:
- create table
- modify table configuration
- delete
- description
- insert row to pre-populate thè table.
2. per usare il database definito, la modifica runtime del contenuto della tabella viene realizzata usando le funzioni IF1 ... IFn di interfaccia di modulo, come mostrato in Fig. 3:
select rows;
insert one row;
delete rows;
update one row.
Questa descrizione continua a prendere come esempio un database SQL i cui servizi devono essere emulati. Prima di procedere ad una descrizione dettagliata della invenzione, sarebbe d'ausilio tratteggiare certi aspetti rilevanti della fase di configurazione delle tabelle. Verrà' descritta la maniera in cui le seguenti istruzioni SQL vengono gestite:
create table (II),
modify table configuration (alter / drop / create) (I, III, II),
delete (alter / drop) (I, III), description (IV),
insert row to pre-populate the table (V).
La sintassi SQL delle suddette istruzioni e' la seguente :
I) per modificare un database:
ALTER DATABASE nome del database;
II) per definire una nuova struttura di tabella:
CREATE TABLE nome della tabella
(field_namel NUMBER(9),
field_name2 CHARC14));
III) per cancellare una tabella:
DROP TABLE nome della tabella;
IV) per vedere la definizione di tabella:
DESC nome della tabella;
V) dati inseriti per default:
INSERT INTO nome della tabella
(field_namel , field_name2)
VALUES
('field_valuel', 'field_yalue2‘).
Le summenzionate istruzioni SQL possono essere emulate usando un file di configurazione ASCII scritto e modificato usando un editor.
Per ciascuna nuova tabella viene creato un file ASCII. Ciascuna riga definisce una colonna della tabella.
Il seguente e' un esempio di tabella su un file ASCII di configurazione tabella di emulatore, ove la prima parte e' la definizione di struttura di tabella e la seconda parte sono i dati di utente inseriti per default. I caratteri " ", e sono usati per dividere i dati.
Il carattere indica che c’e' una linea di commento .
Nella prima parte viene definita la struttura della tabella .
I dati inclusi tra H....H rappresentano la definizione di tabella, e ciascuna riga che inizia con una C e' una colonna della tabella definita.
I parametri specificati definiscono per ciascuna colonna della tabella:
- tipo,
lunghezza,
se il campo può’ essere nullo,
se il campo e' un indice unico per accedere ai record .
Nella seconda parte di questo esempio, le righe con i dati vengono inserite nella tabella.
Un controllo di tipo viene eseguito in accordo alla precedente definizione di tabella.
L'esperto del ramo sara' a conoscenza di ulteriori modi di configurazione.
Come ulteriore spiegazione, si fa riferimento alla Fig. 3 la quale e' in forma schematica.
Una istruzione SQL, inclusa nell'applicazione di utente, provoca l'attivazione di una funzione IFi di interfaccia dell'emulatore, la quale chiama una sequenza, a seconda della specifica istruzione SQL, di funzioni della libreria di emulazione LFl...LFm che accedono ai file AF1..AFk ASCII contenenti i dati di utente.
Per esempio allorché' l'istruzione SQL
INSERT INTO Tab2
(field_namel, field_name2)
VALUES ('field_valuel1, field_value2')
viene chiamata dall'applicazione An di utente, la funzione IF1 di interfaccia di emulatore INSERT viene attivata; essa chiama una sequenza di funzioni della libreria di emulazione che accedono alla Tab2 del file ASCTT AF? contenente 1 dati di utente, come verrà' spiegato in maggior dettaglio in seguito. Un altro esempio e' il seguente: quando l'istruzione SQL SELECT FROM Tab2
viene chiamata dalla applicazione An di utente, la funzione IFn di interfaccia dell'emulatore SELECTn viene attivata; essa chiama una sequenza di funzioni della libreria di emulazione che accedono al file ASCII di Tab2.
Una libreria di emulazione modulare che fornisce un insieme di funzioni LFl..LFm e' disponibile.
Un sottoinsieme di dette funzioni può' essere combinato per implementare una istruzione SQL.
Un esempio di funzioni di libreria e' il seguente:
Una descrizione dettagliata di ciascuna funzione verrà' fornita in seguito.
In Fig. 4 viene illustrata in dettaglio l'implementazione di una delle suddette funzioni di interfaccia IFl..IFn elencate come mostrato in Fig. 3.
Detta funzione viene tradotta in una sequenza di funzioni della libreria di emulazione LFl..LFm che accedono ai file ASCII.
La Descrizione di Tabella A e la Descrizione di Accesso B sono definite nella struttura dati contenente la descrizione della tabella del database; esse sono implementate come una disposizione ordinata di record aventi un elemento per ciascuna colonna di tabella del database.
La Descrizione di Tabella A e' costituita dai seguenti dati di configurazione:
1 =* tipo di colonna,
2 = lunghezza di colonna,
3 - se il campo può' essere nullo o no,
4 = se il campo e' un indice per accedere ai record o no.
La Descrizione di Accesso B include dati circa il tipo di accesso ed il modo a seconda del tipo di istruzione SQL di origine.
Essa e' costituita dai seguenti dati, inseriti dalla Funzione IFi Interfaccia di emulatore a seconda di quali colonne l'istruzione SQL usi:
1 = usare l'etichetta per indicare se la colonna è usata (T = true, F = false),
2 = dimensioni della stringa,
e i seguenti campi ove leggere/scrivere il risultato della operazione (scritto dalla _fetch __row o letto dalla _write_row):
3 = un’etichetta che indica se il campo può' essere nullo o meno (T = true, F = false), 4 - un'etichetta che indica se il campo contiene un valore numerico,
5 = un'etichetta che indica se il campo contiene un valore alfanumerico (char=character/ptr=pointer) .
La prima operazione eseguita in una memoria RAM e‘ l'attivazione della funzione _get_table_description per recuperare dai file del database la definizione di tabella di utente e copiarla nella Descrizione di Tabella A.
Successivamente tutte le funzioni della libreria di emulatore useranno la Descrizione di Tabella A per leggere/scrivere la Descrizione di Accesso B.
Un esempio di sistema per gestire una rete telefonica implementato usando una rete LAN comprendente del server di comunicazione con ridotta configurazione hardware i quali possono effettuare l'invenzione, e’ mostrato in Fig. 5.
Il sistema include due Server di Applicazione AS1 e AS2, uno attivo e l'altro in stand-by, che eseguono operazioni di gestione per una rete; queste apparecchiature hanno una configurazione completa hardware e software e includono dischi HD duplicati. Un operatore può' interfacciare il sistema di gestione usando un cosiddetto Terminale X collegato a un Server di Terminale X che fornisce una interfaccia di operatore grafica.
Una pluralità' di possibili Server di Comunicazione CSl..CSn di ridotta configurazione hardware vengono installati e possono effettuare l'invenzione. Il numero di Server di Comunicazione CSl..CSn con differenti configurazioni hardware può aumentare in futuri ampliamenti della rete. Sul server di comunicazione CS si dovrebbero installare applicazioni sviluppate su apparecchiature con differenti configurazioni hardware aventi una piattaforma software completa includente un database commerciale.
Poiché' la ridotta piattaforma software del server di comunicazione CS dovrebbe includere anche il software di comunicazione e poiché' i database relazionali sono altamente dispendiosi in risorse hardware, l'approccio di emulazione permette di risparmiare memoria e tempo di CPU.
In Fig. 6 viene mostrato un esempio di architettura di sistema di gestione di rete telefonica comprendente un sistema di gestione di rete secondo la Fig. 5, includente apparecchiature che possono effettuare l'invenzione.
L'approccio di emulazione può' essere utile in vista di una futura estensione della rete inserendo un numero crescente di apparecchiature di diversa configurazione hardware sulle quali applicazioni che necessitano di database relazionali in linguaggio SQL dovrebbero essere eseguite.
Man mano che la complessità' di una topologia di rete aumenta, i sistemi di gestione della rete si suppone vengano migliorati in termini di numero di apparecchiature installate e applicazioni che girano sulle suddette apparecchiature.
L’architettura del sistema di gestione della rete mostrata in Fig. 5 può essere scisso in una pluralità* di sottosistemi cooperanti, interconnessi tramite una rete.
I sistemi SYSTEM1, SYSTEM2 e SYSTEM3 di gestione di rete includenti apparecchiature aventi differente configurazione sono interconnessi ad una rete da gestire allo scopo di cooperare scambiandosi informazioni di gestione.
L'approccio emulazione permette il porting di applicazioni sviluppate su piattaforme hardware e software complete verso qualunque apparecchiatura di rete.
E’ stato accennato sopra che ogni suddetta funzione di interfaccia IF1..IFn, elencata e mostrata in F.ig.
3, viene tradotta in una sequenza di funzioni LFl..LFm della libreria di emulazione che accedono ai file ASCII.
Come ulteriore spiegazione, una istruzione SQL nella applicazione di utente viene convertita in una funzione IF, ciascuna funzione IF viene associata ad una sequenza di funzioni della libreria di emulazione, laddove la sequenza dipende dalla istruzione SQL, l'uscita del comando SQL viene restituita all'applicazione di utente, come descritto sopra.
Nel seguito si esamineranno in maggior dettaglio: 1) funzioni IF
2) libreria di emulazione
3) file ASCII
Un esempio di insieme di funzioni IF può' essere il seguente :
- insert,
- delete,
- update,
- select,
- 6
- selectn.
Una istruzione di SELECT, secondo la sintassi SQL, può' avere una istruzione WHERE differente.
Ecco alcuni esempi di differente complessità'. Il carattere significa "ALL".
L'applicazione An di utente interfaccia il database usando istruzione SQL e passando parametri (puntatori a strutture dati contenente dati inviati al database e puntatori a strutture dati in cui l'uscita dei comandi SQL verrà1 restituita).
Si descrive ora una delle suddette funzioni TF, quella corrispondente alla istruzione SELECT SQL, per quanto concerne la sua implementazione.
TABI e’ un esempio di tabella di database avente sei colonne definite C1..C6.
Due linee dati sono state inserite in TABI; solo i dati rilevanti per l'esempio sono scritti, l'altro campo può' assumere qualsiasi valore.
La seguente istruzione SQL può' prò veni re dal la applicazione An di utente:
Verrà' ora descritto come funziona l'emulatore per ottenere i risultati.
In questa istruzione di SELECT con questa istruzione WHERE , la descrizione di accesso B definita in Fig. 4 viene duplicata in
- Descrizione Accesso Select B1 (non mostrata in figura) ;
- Descrizione Accesso Where B2 (non mostrata in figura) .
In questo caso due differenti accessi ai dati di utente vengono fatti usando due tabelle di Descrizione Accesso.
Come spiegato in precedenza» ogni riga della Descrizione Tabella A e Descrizione Accesso B o B1 e B2 corrisponde a una colonna della tabella di database definita nella fase di creazione.
La Descrizione di Accesso Select B1 definisce quali fra i campi C1..C6 devono essere recuperati per ciascuna riga di dati selezionata tra quelli presenti in TABI e dovrebbero essere inviati all’applicazione An , etichettando con T i campi di interesse, in questo caso cl,c4,c5:
La Descrizione di Accesso Where B2 definisce la clausola per identificare quali righe presenti in TABI dovrebbero essere selezionate etichettando con T i campi citati nella clausola WHERE(c2=10 AND c6~ 'string ') :
Un'altra soluzione in una differente ist ruzione SELECT, per esempio SELECT fi, f2 FROM tabi, potrebbe essere eseguita usando un singolo accesso e una singola Descrizione Accesso B.
In Fig. 4-B viene mostrato un caso particolare di Fig. 4. Questo e' il caso della implementazione della seguente istruzione SQL.
);
che potrebbe essere eseguita usando:
- una Descrizione Tabella Al e A2 multipla
una Descrizione Accesso B1 e B2 multipla.
Nel paragrafo che segue verrà* spiegato come fasi differenti vengono eseguite dalla funzione IF SELECT chiamando una sequenza definita di funzioni libreria di emulatore.
Quando l'appiicazione An di utente chiede di recuperare dati dal database, essa invia all'emulatore un puntatore ad una struttura dati contenente parametri della istruzione SQL. di SELECT e alla fine della operazione ad An viene restituito un puntatore ai dati recuperati come risultato della query.
Un modo per eseguire il suddetto compito e* il seguente:
1) la Descrizione Tabella A, nell'area dati di Fig. 4, viene inizializzata secondo la descrizione tabella letta dal file ASCII contenente i dati di configurazione, chiamando la funzione libreria di emulatore _get_table_descr() LF in particolare l'array di struttura della Descrizione Tabella A viene inserito, una riga per ogni colonna della tabella;
2) all'apertura del file ASCII contenente i dati di utente riferiti alla configurazione di tabella acceduta in precedenza, la funzione verifica se il file non e' stato aperto prima. Se il file viene aperto per la prima volta:
- apre il file
- muove verso la prima riga chiamando la funzione _search_next_row().
In caso contrario, un puntatore al file si sposta verso la riga chiamando _search_next_row() e restituisce un puntatore alla riga, ripetendo il ciclo fino a:
- la fine del file, o
- quando e' stato letto il numero di righe specificato;
3) per ciascuna riga, esso legge la riga alla posizione corrente chiamando la funzione _fetch_row_at_curr_pos() e verificando se la istruzione WHERE scritta in B2 e' soddisfatta per quella riga; in questo caso i campi richiesti di quella riga di dati di utente vengono copiati in B1 (Descrizione di Accesso SELECT), inserendo nelle ultime tre colonne (nuli, long/int, char/ptr) in conformità' al tipo di dati;
4) alla fine chiudere il file della tabella di dati di utente.
Come conseguenza di questa funzione, l'uscita della istruzione di SELECT sara' disponibile nella tabella Descrizione Accesso (ultime tre colonne di Bl) e sara' restituita alla applicazione An.
Un esempio di LIBRERIA DI EMULAZIONE, come elencato sopra, può' essere il seguente.
Un sottoinsieme delle funzioni può' essere combinato per implementare una istruzione SQL.
Una piu' dettagliata descrizione di ciascuna funzione viene fatta qui di seguito.
FI NOME - _get„table_descr
DESCRIZIONE : Essa ottiene la descrizione della tabella per una tabella specificata (input parameter_table_name), inserendo nella struttura "row description" o descrizione di riga (output parameter__row_desc).
L‘appropriato file di tabella viene aperto e chiuso dopo il completamento della lettura della descrizione tabella. Essa registra un messaggio allorché' si verifica un errore.
F2
NOME : _open_table
DESCRIZIONE : Essa apre un file di tabella per una tabella specificata (input parameter _table_name). Il file può' essere aperto per la lettura o 1‘aggiornamento a seconda del tipo di azione o "action type" specificato (SELECT, DELETE e INSERT come specificato dal parametro d'ingresso __action_type). Essa restituisce alla funzione chiamante il puntatore al file aperto (parametro di uscita _file_ptr). Essa registra un messaggio allorché' si verifica un errore.
F3
NOME : _close_table
DESCRIZIONE : Essa chiude un file di tabella per un nome di tabella specificato (input parameter _table_name) .
Il puntatore di file e’ dato dalla funzione chiamante (input parameter _table_name) .
Esso registra un messaggio quando si verifica un errore.
FA NOME : _search_first_row
DESCRIZIONE : Essa ricerca la prima riga in una tabella. Ciò' significa: le linee della Descrizione Tabella vengono saltate, come linee di commento, finche' la seconda linea header (che chiude la Descrizione di Tabella) viene trovata.
Essa ricava dalla funzione di chiamata il puntatore di file (input parameter _file_pt r) e il nome della tabella (input parameter _table_name) che e' inserito nei messaggi di errore.
Se la riga viene trovata in modo corretto, essa restituisce alla funzione di trasferimento la posizione della riga nel file di tabella (output, parameter _file__pos): essa e' la posizione del line type char.
Essa assume il valore iniziale del file se il puntatore sta puntando al primo byte di una linea di file, altrimenti la ricerca fallisce.
Ultimo carattere ottenuto dal file:
- primo carattere della riga (quando e’ stato trovato correttamente)
- end-of-file trovato all'inizio di una linea (nessuna riga nella tabella)
- un primo carattere di linea inaspettato
- un end-of-file inaspettato.
Essa registra un messaggio quando si verifica un errore.
F5
NOME : _search_next_row
DESCRIZIONE : Essa ricerca la riga successiva in una tabella. Ciò' significa: le linee di Descrizione Tabella, se trovate, vengono trattate come "linee inaspettate".
Essa ricava dalla funzione di chiamata il puntatore di file (input parameter _file_ptr) ed il nome della tabella (input parameter _table_name) che e‘ inserito nei messaggi d'errore.
Se la riga e' trovata in modo corretto, essa restituisce alla funzione di chiamata la posizione della riga nel file della tabella (output parameter _fjle_pos): e' la posizione del carattere tipo di linea.
Essa assume il valore iniziale del file se il puntatore sta puntando al primo byte di una linea del file, altrimenti la ricerca fallisce.
Ultimo carattere ricavato dal file:
- primo carattere della riga (quando e' stato correttamente trovato)
- fine-del-file trovato all’inizio di una linea (non piu' righe nella tabella)
- un primo carattere di linea inaspettato
- un fine-del-file inaspettato.
Essa registra un messaggio quando si verifica un errore.
F6
NOME : _fetch_row_at_curr_pos
DESCRIZIONE : Essa esegue il fetch di una riga di tabella partendo dalla posizione attuale nel file di tabella (posizione data dalla funzione di chiamata nel puntatore al file _file_ptr).
Per scandire la riga essa usa la descrizione di riga data dalla funzione di chiamata nel parametro d'ingresso _row_cfesc.
Essa inserisce la "struttura di accesso" nell'area di memoria della funzione di chiamata (parametro _row_access).
Per maggiori dettagli, vedere la funzione interna _fetch_row.
Essa registra un messaggio quando si verifica un errore.
F7
NOME ; _fetch_row_at_abs_pos
DESCRIZIONE : Essa esegue il fetch di una riga di tabella partendo dalla posizione data esplicitamente dalla funzione di chiamata con il parametro d'ingresso _file_pos (in aggiunta al puntatore di file_file_ptr).
Per scandire la riga esso usa la descrizione di riga data dalla funzione di chiamata nel parametro d'ingresso _row_desc.
Essa inserisce la "struttura d'accesso" nell’area di memoria della funzione di chiamata (parametro _row_access).
Per maggiori dettagli, vedere la funzione interna _fetch_row.
Essa registra un messaggio quando si verifica un errore.
F8
NOME : _write_row
DESCRIZIONE : Essa registra un messaggio quando si verifica un errore.
Ingresso: A e B. Essa inserisce una riga in una tabella (la riga e' apposta in fondo alla tabella del file).
Essa usa la descrizione di riga data dalla funzione di chiamata come parametro d'ingresso. Essa prende i dati da scrivere dalla struttura Descrizione di Accesso B data dalla funzione di chiamata come parametro d'ingresso.
Apre e chiude il file di tabella.
Controlla se una riga con l’INDICE UNICO esiste già' in tabella.
F9
NOME : _delete_row
DESCRIZIONE : Essa cancella logicamente una riga in una tabella.
La funzione di trasferimento deve dare la posizione della riga nella tabella. Essa aggiorna il contatore delle linee cancellate.
FIO NOME : _refresh_table_file
DESCRIZIONE : Essa controlla, per una tabella specificata, se il contatore di linee cancellate ha raggiunto la soglia o meno . Se si, essa riscrive i file della tabella senza tutte le linee che sono state logicamente cancellate .in precedenza.
Il contatore viene resettato a Q quando la soglia viene superata e mantiene lo stesso valore quando il valore e' inferiore alla soglia.
FU
NOME __fetch_row
DESCRIZIONE : Essa esegue il fetch di una riga di tabella partendo dalla posizione attuale nel file della tabella (posizione data dalla funzione di chiamata nel puntatore di fiie_file_ptr).
Per scandire la riga essa usa la descrizione di riga data dalla funzione di chiamata nel parametro d'ingresso _row_desc.
Essa inserisce la "struttura d'accesso" nell'area di memoria della funzione di chiamata (parametro _row_access).
Essa ricava dalla funzione di chiamata il nome della tabella (parametro _table_name) e il numero di riga (parametro _row_nbr) che sono inseriti nei messaggi di errore.
Se non si verificano errori, la scansione termina alla fine di linea dopo l'ultima colonna.
Altrimenti, la scansione viene sospesa quando il primo errore viene rilevato.
Essa assume il valore iniziale del file se il puntatore sta puntando al carattere; immediatamente dopo lo speciale carattere che inizia la riga.
Ultimo carattere ottenuto dal file:
- fine_di__linea terminante l'ultima (o unica) linea che compone la riga (fetching terminato con successo);
- terminatone di colónna dell'ultima colonna di cui e' stato eseguito il fetch o cattivo carattere iniziante una ]inea o fine_di_linea inaspettato o fine_di_file inaspettato (fetching abortito).
Essa registra un messaggio quando si verifica un errore.
Il sopradescritto metodo di emulazione di un database relazionale in linguaggio SQL allo scopo di semplificare il porting di una applicazione esistente verso una apparecchiatura di destinazione presenta notevoli vantaggi in termini di risparmio di memoria e tempo di CPU.

Claims (5)

  1. RIVENDICAZIONI 1. Metodo per fornire un sottoinsieme di funzioni di database relazionale con interfaccia in linguaggio SQI. ad una applicazione esistente, comprendente le seguenti fasi: - creare tabelle SQL e definire i campi; - memorizzare, modificare e cancellare dati sulle tabelle create, ove un controllo di tipo viene eseguito in conformità' alla definizione di campo; e - recuperare tali dati usando filtri SQL; in cui il tempo di memoria e di CPU viene minimizzato riducendo le dimensioni del database in una fase di configurazione come richiesto, ed in cui le funzioni fornite possono essere suddivise in livelli differenti allo scopo di: - convertire una istruzione SQL, proveniente da una esistente applicazione (An) di utente, in una sequenza di funzioni (IFl...IFn) di interfaccia elementari, - usare dette funzioni di interfaccia per leggere/scrivere file (Fl...Fn) di dati, - processare dati in uscita da fornire alla applicazione (An) di utente richiedente.
  2. 2. Metodo secondo la rivendicazione 1, in cui le tabelle SQL create includenti le definizioni di campo vengono memorizzate in file (Fl...Fm-l) ASCII di configurazione e .i dati di utente vengono memorin oti in file (Fm,..Fn) ASCII di dall di utente.
  3. 3. Metodo secondo la rivendicazione 1, in cui i file dei dati di utente vengono citati secondo un algoritmo allo scopo di garantire la segretezza e l'accesso ai dati sono gestiti da un modulo (M3) di cifratura/decifratura.
  4. 4. Mezzi per effettuare il porting di una applicazione che usa un database relazionale in linguaggio SQL verso apparecchiature (HW2) a configurazione hardware ridotta su cui viene eseguito il metodo della rivendicazione 1, la fase di porting essendo solamente limitata a: - copiatura - ricompilazione - esecuzione dei file dell'applicazione.
  5. 5. Mezzi di porting secondo la rivendicazione 4, in cui un sottoinsieme di funzioni SQL da fornire, possono essere configurate e ridotte o incrementate a seconda delle necessita' della applicazione (An) di utente già’ esistente.
ITMI951510A 1995-07-14 1995-07-14 Emulatore per un database relazionale in linguaggio sql IT1275529B (it)

Priority Applications (11)

Application Number Priority Date Filing Date Title
ITMI951510A IT1275529B (it) 1995-07-14 1995-07-14 Emulatore per un database relazionale in linguaggio sql
DE69605553T DE69605553T4 (de) 1995-07-14 1996-07-13 Emulator für eine sql relationelle datenbank
CN96195530A CN1098501C (zh) 1995-07-14 1996-07-13 用于sql关系数据库的仿真器及方法
AT96926342T ATE187565T1 (de) 1995-07-14 1996-07-13 Emulator für eine sql relationelle datenbank
JP9506270A JPH11509349A (ja) 1995-07-14 1996-07-13 Sqlリレーショナルデータベース用エミュレータ
EP96926342A EP0839358B1 (en) 1995-07-14 1996-07-13 Emulator for an sql relational-database
ES96926342T ES2140116T3 (es) 1995-07-14 1996-07-13 Emulador para una base de datos relacionales de sql.
CA002223490A CA2223490A1 (en) 1995-07-14 1996-07-13 Emulator for an sql relational-database
PCT/EP1996/003080 WO1997004407A1 (en) 1995-07-14 1996-07-13 Emulator for an sql relational-database
DE69605553A DE69605553D1 (de) 1995-07-14 1996-07-13 Emulator für eine sql relationelle datenbank
US08/983,200 US6003026A (en) 1995-07-14 1996-07-13 Emulator for an SQL relational-database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ITMI951510A IT1275529B (it) 1995-07-14 1995-07-14 Emulatore per un database relazionale in linguaggio sql

Publications (3)

Publication Number Publication Date
ITMI951510A0 ITMI951510A0 (it) 1995-07-14
ITMI951510A1 true ITMI951510A1 (it) 1997-01-14
IT1275529B IT1275529B (it) 1997-08-07

Family

ID=11371969

Family Applications (1)

Application Number Title Priority Date Filing Date
ITMI951510A IT1275529B (it) 1995-07-14 1995-07-14 Emulatore per un database relazionale in linguaggio sql

Country Status (10)

Country Link
US (1) US6003026A (it)
EP (1) EP0839358B1 (it)
JP (1) JPH11509349A (it)
CN (1) CN1098501C (it)
AT (1) ATE187565T1 (it)
CA (1) CA2223490A1 (it)
DE (2) DE69605553T4 (it)
ES (1) ES2140116T3 (it)
IT (1) IT1275529B (it)
WO (1) WO1997004407A1 (it)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301477B1 (en) * 1998-04-02 2001-10-09 Lucent Technologies Inc. Method for creating and modifying similar and dissimilar databases for use in GSM wireless network configurations for telecommunication systems
CA2279028C (en) * 1999-07-29 2002-09-10 Ibm Canada Limited-Ibm Canada Limitee Dropped database table recovery
CA2307155A1 (en) 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
US7325129B1 (en) * 2000-11-16 2008-01-29 Protegrity Corporation Method for altering encryption status in a relational database in a continuous process
US7421427B2 (en) * 2001-10-22 2008-09-02 Attachmate Corporation Method and apparatus for allowing host application data to be accessed via standard database access techniques
CA2382712A1 (en) * 2002-04-19 2003-10-19 Ibm Canada Limited-Ibm Canada Limitee Detection and prevention of writing conflicts within nested query statements
US7634460B2 (en) * 2002-06-28 2009-12-15 Sas Institute Inc. Computer-implemented data replacement graphical user interface system and method
US7363313B2 (en) 2003-08-07 2008-04-22 International Business Machines Corporation Method, system, and program product for rebasing an application
US7664795B2 (en) * 2003-09-26 2010-02-16 Microsoft Corporation Apparatus and method for database migration
US20070198729A1 (en) * 2006-02-07 2007-08-23 Yechuri Sitaramarao S SQL network gadget
US7840601B2 (en) * 2006-05-12 2010-11-23 Sap Ag Editable table modification
KR100928382B1 (ko) * 2006-10-17 2009-11-23 삼성에스디에스 주식회사 메인프레임 시스템의 데이터베이스를 개방형 시스템에적합한 데이터베이스로 변환하는 마이그레이션 장치 및 그방법
IL187707A0 (en) 2007-11-27 2008-11-03 Univ Ben Gurion Alginate scaffold in hepatectomy
US20110055246A1 (en) * 2009-09-01 2011-03-03 Yann Le Biannic Navigation and visualization of relational database
US8843893B2 (en) * 2010-04-29 2014-09-23 Sap Ag Unified framework for configuration validation
CN102467534A (zh) * 2010-11-12 2012-05-23 上海宝信软件股份有限公司 多字段数据库的显示方法与显示装置
IN2013MU02853A (it) * 2013-09-02 2015-07-03 Tata Consultancy Services Ltd

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4205371A (en) * 1975-11-03 1980-05-27 Honeywell Information Systems Inc. Data base conversion system
EP0398884A4 (en) * 1987-10-09 1992-08-12 Nucleus International Corporation A relational database representation with relational database operation capability
US5297279A (en) * 1990-05-30 1994-03-22 Texas Instruments Incorporated System and method for database management supporting object-oriented programming
JP2711204B2 (ja) * 1992-03-09 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション リレーショナルデータベースのユーザインターフェースを生成する方法
US5640550A (en) * 1994-04-15 1997-06-17 Coker; Drake Computer system for generating SQL statements from COBOL code
US5717911A (en) * 1995-01-23 1998-02-10 Tandem Computers, Inc. Relational database system and method with high availability compliation of SQL programs

Also Published As

Publication number Publication date
EP0839358B1 (en) 1999-12-08
DE69605553D1 (de) 2000-01-13
ATE187565T1 (de) 1999-12-15
WO1997004407A1 (en) 1997-02-06
JPH11509349A (ja) 1999-08-17
DE69605553T4 (de) 2002-05-08
CN1191026A (zh) 1998-08-19
ES2140116T3 (es) 2000-02-16
CN1098501C (zh) 2003-01-08
DE69605553T2 (de) 2000-05-04
ITMI951510A0 (it) 1995-07-14
US6003026A (en) 1999-12-14
CA2223490A1 (en) 1997-02-06
EP0839358A1 (en) 1998-05-06
IT1275529B (it) 1997-08-07

Similar Documents

Publication Publication Date Title
ITMI951510A1 (it) Emulatore per un database relazionale in linguaggio sql
US5627972A (en) System for selectively converting a plurality of source data structures without an intermediary structure into a plurality of selected target structures
KR100995199B1 (ko) 명령에 입력되는 파라미터들에 반영 기반 프로세싱을 수행하는 시스템 및 컴퓨터 판독 가능 저장 매체
EP1014265B1 (en) Method and apparatus for testing event driven software
US5732263A (en) Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time
KR930008769B1 (ko) 소프트웨어 프로그램 발생용 장치 및 방법
US5390314A (en) Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification
CN102254111B (zh) 恶意网站检测方法及装置
US4800485A (en) On-line documentation facility
US20030093420A1 (en) Method and system for retrieving sharable information using a hierarchically dependent directory structure
US8141035B2 (en) Method for accessing internal states of objects in object oriented programming
US6327703B1 (en) Variable symbolic links for a file in UNIX operating system
JPH1040087A (ja) ソフトウェア工学で使われるデータモデルの取り扱い方法
US20040158824A1 (en) Method and system for generating executable code for formatting and printing complex data structures
JP2022513382A (ja) 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体
US6446087B1 (en) System for maintaining the integrity of application data
CN111737140A (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
CN111240772A (zh) 一种基于区块链的数据处理方法、装置及存储介质
CN112559344A (zh) 远程mock测试方法及系统
CN108228266A (zh) 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
CN110826074A (zh) 一种应用漏洞检测方法、装置和计算机可读存储介质
US20050273755A1 (en) Scripting engine for network communication software
CN114968812A (zh) 一种基于kubernetes的代码质量检测方法
KR950004409B1 (ko) 전전자 교환기의 실행 모듈 버젼 관리 방법
CN111782667B (zh) 一种MongoDB更新数据的驱动方法、系统及存储介质

Legal Events

Date Code Title Description
0001 Granted