Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19489 > unrolled thread

database access

Started byGulp® <gulp@hotmail.it>
First post2019-01-02 11:58 +0100
Last post2019-05-03 18:06 +0200
Articles 9 — 4 participants

Back to article view | Back to it.comp.lang.visual-basic


Contents

  database access Gulp® <gulp@hotmail.it> - 2019-01-02 11:58 +0100
    Re: database access Greg <greg@alicie.com> - 2019-01-02 15:47 +0100
    Re: database access Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2019-01-02 16:07 +0100
      Re: database access Gulp® <gulp@hotmail.it> - 2019-01-02 19:22 +0100
        Re: database access Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2019-01-02 20:47 +0100
      Re: database access Greg <greg@alicie.com> - 2019-01-03 10:44 +0100
        Re: database access Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2019-01-03 16:23 +0100
          Re: database access Greg <greg@alicie.com> - 2019-01-03 17:51 +0100
    Re: database access Giacobino da Tradate <jacopinodatradate@gmail.com> - 2019-05-03 18:06 +0200

#19489 — database access

FromGulp® <gulp@hotmail.it>
Date2019-01-02 11:58 +0100
Subjectdatabase access
Message-ID<q0i5h7$1sq1$1@gioia.aioe.org>
Qualcuno sa se in VB6 la compattazione del database che si fa con 
CompactDatabase su un file mdb è la stessa operata da Access  ?

Il file dopo la compattazione risulta chiaramente più leggero, ma come 
viene alleggerito cosa viene eliminato?


-- 
Gulp®
--
"Partimque figuras retulit antiquas, partim nova monstra creavit."
(La Metamorfosi - Ovidio)

[toc] | [next] | [standalone]


#19490

FromGreg <greg@alicie.com>
Date2019-01-02 15:47 +0100
Message-ID<q0iit9$mnr$1@solani.org>
In reply to#19489
Il 02/01/19 11:58:50 Gulp® ha scritto:
> Qualcuno sa se in VB6 la compattazione del database che si fa con CompactDatabase su un file mdb è la stessa operata 
> da Access  ?

Anche da VB6 che io sappia è sempre il motore Jet a occuparsi della compattazione
Tuttavia, se sul non ci fossero installate le realtive librerie si potrebbe usare questa utility di MS: 
https://support.microsoft.com/it-it/help/295334/jet-compact-utility-is-available-in-download-center

> Il file dopo la compattazione risulta chiaramente più leggero, ma come viene alleggerito cosa viene eliminato?

Credo che i campi vengano ridotti alla effettiva dimensione utilizzata: in un campo txt di 50 caratteri che contiene 
"Milano" dopo la compattazione sarà un campo che occupa lo spazio necessario a memorizzare 6 caratteri invece di 50

-- 
Greg

[toc] | [prev] | [next] | [standalone]


#19491

FromFranz_aRTiglio <franzgol@N0SPAMtin.it>
Date2019-01-02 16:07 +0100
Message-ID<q0ik0i$1vdj$1@gioia.aioe.org>
In reply to#19489
Sembra che Gulp® abbia detto :
> Qualcuno sa se in VB6 la compattazione del database che si fa con 
> CompactDatabase su un file mdb è la stessa operata da Access  ?
>
> Il file dopo la compattazione risulta chiaramente più leggero, ma come viene 
> alleggerito cosa viene eliminato?

i record marcati come "cancellato".

In pratica un database e' come un libro che ad ogni nuovo record viene
aggiunta una pagina, per velocità (poi dipende anche dal motore del
database) quando cancelli/elimini/modifichi** un record anzichè 
spostare
tutta la mole di dati la "pagina" viene marcata come "cancellata";
quando compatti in pratica viene creato un secondo database e tutti i
record non marchiati come "cancellato" vengono copiati nel nuovo.

**Alcuni database ad altissima velocità NON modificano un record
esistente ma "cancellano" il vecchio e ne creano uno nuovo con i dati
modificati.

es: se hai un "libro" con 10.000 pagine e cancelli pagina 4 anzichè
spostare "indietro" 9996 pagine semplicemente pagina 4 viene
marchiata come "cancellata", altrimenti il database diventerebbe
lentissimo ad ogni modifica/cancellazione.

[toc] | [prev] | [next] | [standalone]


#19492

FromGulp® <gulp@hotmail.it>
Date2019-01-02 19:22 +0100
Message-ID<q0ivgc$1lcm$1@gioia.aioe.org>
In reply to#19491
Il 02/01/19 16:07, Franz_aRTiglio ha scritto:

> es: se hai un "libro" con 10.000 pagine e cancelli pagina 4 anzichè
> spostare "indietro" 9996 pagine semplicemente pagina 4 viene
> marchiata come "cancellata", altrimenti il database diventerebbe
> lentissimo ad ogni modifica/cancellazione.

Ora è chiaro, grazie.
Compactdatabase "di VB6" secondo te utilizza lo stesso algoritmo della 
compattazione presente in Access 97?

-- 
Gulp®
--
"Partimque figuras retulit antiquas, partim nova monstra creavit."
(La Metamorfosi - Ovidio)

[toc] | [prev] | [next] | [standalone]


#19494

FromFranz_aRTiglio <franzgol@N0SPAMtin.it>
Date2019-01-02 20:47 +0100
Message-ID<q0j4ec$cdq$1@gioia.aioe.org>
In reply to#19492
Gulp® ha detto questo mercoledì :
> Il 02/01/19 16:07, Franz_aRTiglio ha scritto:
>
>> es: se hai un "libro" con 10.000 pagine e cancelli pagina 4 anzichè
>> spostare "indietro" 9996 pagine semplicemente pagina 4 viene
>> marchiata come "cancellata", altrimenti il database diventerebbe
>> lentissimo ad ogni modifica/cancellazione.
>
> Ora è chiaro, grazie.
> Compactdatabase "di VB6" secondo te utilizza lo stesso algoritmo della 
> compattazione presente in Access 97?

non lo so per certo ma non mi stupirei di scoprirlo, in fondo VB6
e access 97 sono contemporanei e il metodo e' (era) universalmente
adottato, probabilmente grazie alla virtualizzazione integrata nei
processori multicore moderni ci saranno algoritmi diversi/piu
performanti, ma credo che vb6 sia "fermo" ai vecchi metodi :D

[toc] | [prev] | [next] | [standalone]


#19495

FromGreg <greg@alicie.com>
Date2019-01-03 10:44 +0100
Message-ID<q0klhv$46h$1@solani.org>
In reply to#19491
Il 02/01/19 16:07:12 Franz_aRTiglio ha scritto:
> Sembra che Gulp® abbia detto :
>> Qualcuno sa se in VB6 la compattazione del database che si fa con CompactDatabase su un file mdb è la stessa 
>> operata da Access  ?
>>
>> Il file dopo la compattazione risulta chiaramente più leggero, ma come viene alleggerito cosa viene eliminato?
>
> i record marcati come "cancellato".

Ma anche il preciso ridimensionamento dei campi, come in una matrice diamica recupera moto spazio.
Infatti in database di nessuna cancellazione e nessuna maddica (solo insert) si ha un grande alleggerimento dopo il 
Compact

Buon Anno a tutti :)

-- 
Greg

[toc] | [prev] | [next] | [standalone]


#19496

FromFranz_aRTiglio <franzgol@N0SPAMtin.it>
Date2019-01-03 16:23 +0100
Message-ID<q0l9bd$1p37$1@gioia.aioe.org>
In reply to#19495
Greg ha pensato forte :

>> i record marcati come "cancellato".
>
> Ma anche il preciso ridimensionamento dei campi, come in una matrice diamica 
> recupera moto spazio.
> Infatti in database di nessuna cancellazione e nessuna maddica (solo insert) 
> si ha un grande alleggerimento dopo il Compact

guarda, non sono così esperto di database da poter confermare o
smentire quanto sopra con presunzione di correttezza, ma da che ne so
io i database ad alta velocità hanno una dimensione record fissa 
proprio
per non dover frullare tabelle d'indice alla ricerca del record
successivo a quello in esame; per inciso se il DB ha record a 
dimensione
fissa basta una moltiplicazione (o una addizione ricursiva) per trovare
il record successivo senza dover passare byte per byte alla ricerca del
marker di inizio/fine record o dover leggere un'indice...
Giusto per soddisfare la mia curiosità: hai qualche esempio di DB che
usa record dinamici ?

[toc] | [prev] | [next] | [standalone]


#19497

FromGreg <greg@alicie.com>
Date2019-01-03 17:51 +0100
Message-ID<q0lej1$njt$1@solani.org>
In reply to#19496
Il 03/01/19 16:23:40 Franz_aRTiglio ha scritto:

> Giusto per soddisfare la mia curiosità: hai qualche esempio di DB che
> usa record dinamici ?

Access, non ho altre esperienze, solo un poco di sqlexpress ma non l'ho mai usato veramente.

Per provare fai un database vuoto di access, metti una tabella e 4-5 record e guarda la dimensione. Ricontrolla dopo 
compattazione e vedrai che la dimensione è diminuita.

Una volta avevo letto un articolo di un esperto sul Visual Basic Journal, se non ricordo male, dove si diceva che lo 
spazio veniva recuperato riducendo il campo alla dimensione effettiva del dato contenuto

-- 
Greg

[toc] | [prev] | [next] | [standalone]


#19629

FromGiacobino da Tradate <jacopinodatradate@gmail.com>
Date2019-05-03 18:06 +0200
Message-ID<qahovm$8lr$1@gioia.aioe.org>
In reply to#19489
Il 02/01/2019 11:58, Gulp® ha scritto:
> Qualcuno sa se in VB6 la compattazione del database che si fa con 
> CompactDatabase su un file mdb è la stessa operata da Access  ?

se il motore di database e' l ostesso si'

> Il file dopo la compattazione risulta chiaramente più leggero, ma come 
> viene alleggerito cosa viene eliminato?

Che io sappia la cancellazione di un record viene fatta virtualmente, 
flaggando il record vecchio come "cancellato", ma non lo rimuove 
fisicamente. La compattazione crea una nuova copia del database, in cui 
si copiano solo i record attivi.



-- 
la cricca dei giacobini (C) M.G.

---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.lang.visual-basic


csiph-web