Avatar billede coladrenge Nybegynder
09. juli 2004 - 23:08 Der er 13 kommentarer og
1 løsning

Database i hukommelse

Hej

Nogen der ved hvordan man ligger en hel database op i hukommelsen - jeg ved at man kan gøre det med tabeller med KbmMemTable - men er der mulighed for at gøre det med en hel database. Grunden til at jeg gerne vil gøre det er at vi er ved at udvikle en app. som skal kunne køre fra en diskette og også gerne vil gøre brug af en database som understøtter SQL samtidig. Derfor skal databasen pakkes når den skal gemmes.
Avatar billede hrc Mester
10. juli 2004 - 23:00 #1
Med kbmMemTable er det en tabel der lægges (ikke ligger: Du ligger ikke noget på et bord, du lægger det - men det var et sidespring) op i ram. En database består primært af tabeller og hvad forhindrer dig så i at bruge flere kbmMemTable's?

Jeg forstår ikke helt følgende:

"Grunden til at jeg gerne vil gøre det er at vi er ved at udvikle en app. som skal kunne køre fra en diskette og også gerne vil gøre brug af en database som understøtter SQL samtidig. Derfor skal databasen pakkes når den skal gemmes."

- Hvor ligger den database egentligt? På disketten sammen med programmet?
- Hvorfor skal databasen pakkes (her tænker jeg zip) når den "gemmes"?
- Har I overvejet en virtuel disk - eller det er der måske ikke adgang til

Hvad er det for en tingest I er ved at lave? En database der registrerer de enkelte brugers kopieringer - eller lignende?
Avatar billede coladrenge Nybegynder
11. juli 2004 - 13:20 #2
Hej

Vi bruger masser af KbmMemTables - som jo ganske rigtigt lægger i hukommelsen. Det som vi har behov for er den database som kan lægges i hukommelse(altså en samlig af flere tabeller) - databasen må gerne understøtte SQL(ikke noget krav). Det særlige som gør at vi ikke bare bruger KbmMemTable er at vi gerne vil have muligheden for at gemme databasen(komprimeret) på en diskette sammen med vores scanner. Scanneren fylder cirka 600 kb - hvilket betyder at vi har maks 800 kb. til databasen. Scanneren kan scanne for mange forskellige typer af ting på maskinen - eks. hardware, software og lignende. Systemet skal bruge på netværk med cirka 1400 maskiner og meningen er at klienten(klient computer) udføre scanningen når brugeren logger på og sender den komprimeret database til en server app som så læser det ind i en MSSQL server.
Avatar billede coladrenge Nybegynder
11. juli 2004 - 13:22 #3
For øvrigt så har vi set på databasen TinyDB - men vi er lidt usikre på om den er stabil nok. Et krav til databasen er at alt skulle kunne compileres ind i exefilen og ikke behøver eksterne biblioteker for at kører. En anden mulighed er vel at bruge XML
Avatar billede borrisholt Novice
12. juli 2004 - 08:27 #4
coladrenge>> ALT kan compileres ind i en exe fil også en 15 GB Database fil fra msSQL server .. Så hvorfor skulle den ikke kunne det ?

Jens B
Avatar billede borrisholt Novice
12. juli 2004 - 08:31 #5
Ellers skulle du overveje at bruge en Access database, og en virtuel disk, Så har du det hele.

Jens B
Avatar billede coladrenge Nybegynder
12. juli 2004 - 16:31 #6
Hej Jens

Ved jeg godt - mente bare at det hele gerne skulle lige i nogle VCL componenter - således at vi er fri for at der skal bruges ADO eller andet.
Avatar billede borrisholt Novice
12. juli 2004 - 16:34 #7
Du kan også bruge dbExpress. Men ADO er bare en Database motor, som ikkr kræver ekstrafiler, i modsætning til BDE

Jens B
Avatar billede coladrenge Nybegynder
12. juli 2004 - 18:11 #8
Hej

Ja det kunne jeg.

Nu går spørgsmålet ikke på noget angående drivere eller andet(i hvertfald ikke direkte) - jeg leder efter en database som er så lille som overhovedet muligt.
Avatar billede borrisholt Novice
13. juli 2004 - 08:19 #9
Jeg vil anbefale det følgende :

1)
  download UPX : http://upx.sourceforge.net/
  Med den kan du pakke din scanner ned så den fylder 1/3 (cirka)
2)
  Brug en Access Database, og placer den på et RAM Drev
3)
  Tilgå den med en ADO driver.

Jens B
Avatar billede hrc Mester
13. juli 2004 - 09:01 #10
Jeg er ikke helt klar over om denne her er egnet (det må du selv kigge lidt på), men den supporterer i alt fald in-memory tables og navnet tinydb kan tyde på, at den ikke er pladskrævende.

http://www.sunisoft.com/tinydb/

Hvad med at bruge noget andet end disketter - hvad med en lille memorystick?
Avatar billede borrisholt Novice
13. juli 2004 - 09:12 #11
Hvis du gør som jeg siger kan du lave et program med meget GUI samt en database med over 1000 poster, med godt med noter på, og stadig have 400 kb fri plads på din diskette.

Prøv fx at downloade mit system info program :
http://borrisholt.com/eksperten/sysinfo.exe . Det fylder 250 kb og er skrevet i Delphi !

Jens B
Avatar billede hrc Mester
13. juli 2004 - 11:34 #12
nice...
Avatar billede borrisholt Novice
13. juli 2004 - 11:43 #13
coladrenge>> Jeg har svært ved at se hvad dit problem erDu har MASSER af plads på en diskette, hvis du gør som jeg siger.

Hvis du endelig VIL gribe til yderlighedder kan du jo eventuelt Zippe din database ude på disketten. Pakke den ud i ram INDEN du bruger den, og den anden vej tilbage når den skal gemmes. På dem måde vil jeg sige du kan have omkring 3-4 mb ukomprimeret, uden at have regnet på det, tekst nede i databsen før du render i plads problemer.

Først nævnte har jeg giver dig løsningen på ... Sidst nævnte kan jeg godt strikke et tilbud sammen for, hvilket dog vil kræve fuld adgang til Source code.

Jens B
Avatar billede coladrenge Nybegynder
13. juli 2004 - 23:16 #14
Hej Jens

Jeg har fundet de ting som jeg skal bruge og dine svar gav løsningen på resten.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester