FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
I ganska många projekt som har hållt på med så har det varit en databas med data men även filer kopplade till vissa poster inblandade. Det kan tex vara en databas med filmer med bilder som hör till filmerna eller kanske vissa mätdata där en del av datan ligger i en sökbar databas men posterna har olika filer kopplade till sig.
Jag brukar alltid fundera på hur filstrukturen bör se ut när det blir många poster. Att lägga filerna i databasen i blobbar är ju ganska dumt, så hur gör man? Tänk att det är 10000+ poster. Kanske kan man göra så här: Man lägger filerna i en mapp /nnn/ där nnn är id:t på posten. Sedan kan filerna heta 10.jpg osv... Eller så lägger man alla filer i samma mapp och skiver filnamnet i ett fält i databasen. Fast iofs bör ju en post kunna ha flera filer än en kopplade till sig. Några bra tankar? |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Dom 3 största filsystemen i Linux har ett max antal poster i varje katalog (~32000st) så om du har fler det antalet poster så får du börja dela upp filerna.
Själv kör jag med: /1/1 -> 9999/filnamn /10000/10000 -> 19999/filnamn /20000/20000 -> 29999/filnamn osv Tar sedan ett tag att fylla upp den strukturen. Jag har inte kunnat läsa till mig en maxgräns på NTFS iaf. Så om du kör Windows så ligger du nog på säkra sidan iaf. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Vilka filsystem är det som har dessa begränsningar? Nog för att ext2 och ext3 inte är lämpade för många filer i varje dir då dom måste söka linjört efter en match (och det kan suga tid). ReiserFS som torde anses till en av dom tre största har vad jag läst mig till INTE några problem med många filer i ett dir. Hans Reiser har ju tom sagt att "om en utvecklare vill stoppa in en miljon filer i ett dir så ska han väl få göra det".
Eftersom ReiserFS använder så kallade BtreeX (där X är nått jag glömt vad det var) så hittar man snabbt filen utan att behöva stega linjärt. Dessutom används utrymmet smidigt vid små filer också. Om en post ska kunna ha fler filer delade till sig kan du göra på två sätt. Ha en tabell med fil_ids eller ha directory per huvudid och sen alla filer som ska relatera till dom i den. Testa! Att skriva en testsuite som genererar dessa lösningar och sen klockar sökningar och hanteringar torde du göra på en halvtimma. Att lägga filer i blobbar kan vara skönt så man lättare kan få en korrekt backup "snapshot" men om det börjar bli för många gig, för många rader så kan det lätt bli ohanterbart. Jag sitter i en sits nu där jag gjorde valet att stoppa in bilder i databasen och är inte riktigt nöjd med resultatet. |
||
![]() |
![]() |
Svara |
|
|