Einzelne Bytes aus Datei löschen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Marek

Betreff: Einzelne Bytes aus Datei löschen

BeitragDi, Jul 15, 2008 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
well ich eine Datei habe die z.B. 3 Bytes enthällt, gibt es dann eine Möglichkeit nur das 2. zu löschen, ohne die Datei zu löschen und neu schreiben zu lassen?
Ich versuche nämlich im Moment ein Datenbank-system für Dateien zu schreiben, nur bei größeren Datenbanken würde das löschen&neu schreiben zu lange dauern (Datei Byteweise schreiben: 2min/Gigabyte, zumindest bei mir)...
Bin für jede Hilfe sehr dankbar, MfG Marek
Wer lesen kann ist klar im Vorteil...
 

ChristianK

BeitragDi, Jul 15, 2008 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann müsste das 3. Byte ja an die Stelle des 2. Bytes verschoben werden, das 4. an die Stelle des 3. usw, deshalb muss die Datei ( oder zumindest ab der veränderten Position ) neu geschrieben werden. Wenn es möglich ist, kannst die Datenbank in kleinere Bereiche einteilen und diese dann neu schreiben, während die anderen erhalten bleiben.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

BadDeath

BeitragDi, Jul 15, 2008 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest ja auch für den 2. byte einfach eine art null-byte nehmen. dadurch würde zwar die datei größer, aber es wäre sehr schnell. dann bräuchtest du nur noch eine funktion um die db zu optimieren, dh. die pufferbytes löschen und dann alles neu schreiben, so wie vorher schon genannt.

aber keine ahnung, ob das effektiv wäre ^^
 

Dreamora

BeitragDi, Jul 15, 2008 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde nicht empfehlen das byteweise zu machen, da kannst du froh sein wenn du auch nur im ansatz an einen gigabit pro sekunde kommst.

Etwas was drastisch die Performance erhöht sind blöcke fixer länge so das du mit ReadBytes / WriteBytes gleich den ganzen block in den RAM ziehen und dort verarbeiten kannst.
Allgemein würde ich das ganze so auslegen, dass du ganze blöcke davon dauerhaft im RAM halten kannst, solange sie klein ist sogar alles. Damit holst du den grössten performance anteil raus.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BladeRunner

Moderator

BeitragDi, Jul 15, 2008 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das große 'Geheimnis' an solchen Datenbanksystemen ist eben dass man nicht sofort jede Änderung schreibt, sondern alle Änderungen in einem Puffer bzw. im Ram behält und erst dann wieder auf Platte bringt wenn es sich lohnt oder der User es explizit angibt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Marek

BeitragDi, Jul 15, 2008 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ersmal Danke für die vielen Posts!

Es ist erstaunlich wie groß die Ähnlichkeit einer Datenbank-Struktur mit der Struktur einer Festplatte ist Very Happy Und ich denke ich werde daher auch das Prinzip des Clusterings von den Festplatten übernehmen, wie es hier auch angesprochen wurde Smile Dann werde ich noch eine Funktion einbauen müssen, die immer pro Sec einen Teil des "äufräumens" in der DB übernimmt, also eine bestimmte Anzahl an Clustern schreibt, und eine Funktion, die alle Änderungen sofort übernimmt(Beenden des Programms, Zwischenspeichern etc).

Auf jeden Fall nochmal Danke für alle Antworten!

MfG Marek
Wer lesen kann ist klar im Vorteil...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group