Avatar billede jespersahner Nybegynder
02. januar 2006 - 12:18 Der er 15 kommentarer og
1 løsning

MYISAM fil-format/record-beskrivelse

En MySQL/MYISAM-database består af MYD- (data) og MYI- (index)filer. Er der nogen, der har kendskab til det specifikke fil-format for disse filer, altså den præcise record-beskrivelse?

Jeg har f.eks. prøvet at åbne filerne med en hex-editor og kan ikke umiddelbart ved første øjekast genkende f.eks. tabel-navnene (jeg ville tro, at de stod i en header i starten af en af filerne).

Baggrund: Jeg har en Java-applikation, hvor jeg skriver nogle data ned i en Stream, og hvor jeg har etableret min egen filstruktur, men jeg overvejer at anvende f.eks. MYISAM i stedet, så data efterfølgende vil kunne "forstås" af MySQL.
Avatar billede fsconsult.dk Nybegynder
02. januar 2006 - 12:21 #1
jeg vil fraråde at prøve at generere MySQL datafiler, da det er et rent internt format, og som varierer lidt fra release til release.

hvorfor bruger du ikke bare JDBC og skriver til MySQL den vej?
Avatar billede arne_v Ekspert
02. januar 2006 - 12:35 #2
manualen har http://dev.mysql.com/doc/refman/5.1/en/myisam-table-formats.html

for flere detaljer skal du nok downloade source og læse den

men ellers er jeg helt enig med fsconsult - JDBC INSERT må være den sikre løsning
Avatar billede jespersahner Nybegynder
02. januar 2006 - 13:00 #3
Konkret er jeg i forhold til min applikation intereseret i at teste, hvor hurtigt det er muligt at læse/skrive uden om JDBC, men ellers har I selvfølgelig ret. Jeg skriver med mit eget simple fil-format (header+data) op til 10 (!) gange hurtigere end med JDBC+MySQL. Det skal dog siges, at jeg arbejder med sekventiel læsning/skrivning af store mængder af data, hvor en database vel traditionelt er bedst til små queries mod store data.

->arne_v: Jeg har også kigget lidt rundt i manualen, men jeg synes ikke, at jeg kan finde den detaljeringsgrad, jeg her har brug for - altså den præcise beskrivelse af fil-formatet. Jeg kan måske vride noget information ud af JDBC-driveren (?)
Avatar billede fsconsult.dk Nybegynder
02. januar 2006 - 13:02 #4
du skal nok læse koden til mysql-serveren, da jdbc driveren bare snakker med serveren..
Avatar billede jespersahner Nybegynder
02. januar 2006 - 13:06 #5
->fsconsult.dk: Er der mon tale om et proprietært format? Nej, vel?
Avatar billede fsconsult.dk Nybegynder
02. januar 2006 - 13:09 #6
jesper> er ikke helt sikker på hvad du mener, men jdbc driveren læser/skriver IKKE til datafilerne, men overlader det til mysql-serveren.

og jo, mysql's interne dataformat er helt sikkert et proprietært format!
Avatar billede arne_v Ekspert
02. januar 2006 - 13:13 #7
du skal have fat i C source til server for at se format

og MySQL er en database server altså:

app--(java call)--JDBC driver------(TCP/IP)------MySQL server--(disk IO)--database fil
Avatar billede arne_v Ekspert
02. januar 2006 - 13:14 #8
der er ikke noget overraskende i at en flad fil er hurtigere end en database
hvis man kun skriver og læser sekventielt
Avatar billede fsconsult.dk Nybegynder
02. januar 2006 - 13:17 #9
nææ... men så har man jo heller ik det "pjat" med index og transaktioner ;-)  (ok, er ik transaktioner på MYISAM, men anyway)
Avatar billede jespersahner Nybegynder
02. januar 2006 - 14:00 #10
Fandt efter lidt spredt fægtning flg. link: http://dev.mysql.com/doc/internals/en/myisam-record-structure.html

Smid gerne et svar en af jer eller begge to.
Avatar billede fsconsult.dk Nybegynder
02. januar 2006 - 14:06 #11
Arne er den eneste der er kommet med en egentlig henvisning ;-)
Avatar billede jespersahner Nybegynder
02. januar 2006 - 14:06 #12
Avatar billede jespersahner Nybegynder
02. januar 2006 - 22:51 #13
Smid gerne et svar
Avatar billede arne_v Ekspert
02. januar 2006 - 22:54 #14
tjo, men jeg synes heller ikke at jeg har bidraget med så meget
Avatar billede arne_v Ekspert
02. januar 2006 - 22:55 #15
men lad gå
Avatar billede jespersahner Nybegynder
02. januar 2006 - 23:16 #16
->arne_v: Men det har du så rigeligt i andre sammenhænge - også ved allerede lukkede spm. :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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