Dateistruktur

16/11/2011 - 09:53 von Hermie | Report spam
Hallo!

Ich wollte es jetzt krampfhaft alleine machen, aber ich hàtte doch gerne
Input dazu:

Ich habe folgende Aufgabenstellung:

Ich habe 200.000 "Units".

Jede Einheit besteht aus Folgendem:

Private Type udtUnit
lIndex As Long 'Dieser Index ist einzigartig unter allen Einheiten
lUnitName As Long
lNextUnitName As Long
Bytes() As Byte
Longs() As Long
End Type

EIGENTLICH wàre eine Datenbank komfortabler, aber die ist doch zu
langsam. Ich müsste es über Get # machen.

Ich muss Folgendes machen:

Alle Einheiten suchen, die einen bestimmten ".lUnitName" und einen
bestimmten ".lNextUnitName" haben (falls keine Einheiten mit einem
entsprechenden .lNextUnitName gefunden wurden, nehme ich diejenigen
Einheiten, wo lediglich .lUnitName stimmt).

Da ich direkt danach mit den .Bytes() der gefundenen Units rechnen muss,
denke ich, es wàre am besten, die gefundenen Units in udts() zu laden
(wofür Gert mir ja einen Code gezeigt hat).

Ich muss außerdem die Units in udts() laden, deren lIndex der nàchste
ist, da ich auch mit deren .Bytes() rechnen muss.

Also wenn ich eine Einheit gefunden habe, deren lIndex z. B. 150932 ist,
dann benötige ich auch die Einheit, deren lIndex 150933 ist.

Ich hatte es zuerst so gemacht, dass ich ein udt-Array auf die Platte
gespeichert habe, bei dem die UDTs so aussahen:

Private Type udtDoubleUnit
lIndex1 As Long 'Dieser Index ist einzigartig unter allen Einheiten
lIndex2 As Long
lUnitName1 As Long
lUnitName2 As Long
Bytes1() As Byte
Bytes2() As Byte
Longs1() As Long
Longs2() As Long
End Type

Aber das wird riesig groß.

Ich würde mich sehr über Ideen freuen.

Dankeschön.

Hermie
 

Lesen sie die antworten

#1 W. Wolf
16/11/2011 - 11:02 | Warnen spam
Am 16.11.2011 09:53, schrieb Hermie:
Hallo!



[...]

EIGENTLICH wàre eine Datenbank komfortabler, aber die ist doch zu
langsam.



Nur mal zur Info: SQLite Datenbanken kann man auch vollstàndig im RAM
erzeugen (ohne dass die DB auf der Platte liegt). Wenn das einmalige
Einlesen der DB für dich zeitlich noch akzeptabel ist, dann ist eine DB
die vollstàndig im RAM liegt und über wohl durchdachte Strukturen
(angemessenen Normalisierung, vernünftige Indexe und vorkompilierte
Views) verfügt, bei deiner Datenmenge sicher sehr schnell.

Schönen Gruß
W. Wolf

Ähnliche fragen