Einzelne Bytes aus Datei löschen
Übersicht BlitzBasic Allgemein
MarekBetreff: Einzelne Bytes aus Datei löschen |
Di, Jul 15, 2008 15:11 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Jul 15, 2008 15:33 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Jul 15, 2008 15:54 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Jul 15, 2008 16:33 Antworten mit Zitat |
|
---|---|---|
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. |
BladeRunnerModerator |
Di, Jul 15, 2008 18:33 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Jul 15, 2008 21:06 Antworten mit Zitat |
|
---|---|---|
Ok, ersmal Danke für die vielen Posts!
Es ist erstaunlich wie groß die Ähnlichkeit einer Datenbank-Struktur mit der Struktur einer Festplatte ist Und ich denke ich werde daher auch das Prinzip des Clusterings von den Festplatten übernehmen, wie es hier auch angesprochen wurde 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... |
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group