Uchovávání drobných souborů rubrika: Programování: Jiné

2 jan.rybar
položil/-a 15.2.2015

Jakou techniku či databázi byste doporučili pro uchování drobných souborů (html, json, občas archivované obrázky)? Zapisovány jsou jednotky souborů za sekundu, čteny jsou většinou náhodné neopakující se soubory, stovky za sekundu. Ve výsledku to dělá terabajty dat, které je nutné mít neustále přístupné s minimalizovanou pravděpodobností ztráty. Žádné další operace než čtení a zápis podle klíče nejsou potřeba.

odkaz
12 Kit
odpověděl/-a 15.2.2015

Drobné soubory běžně uchovávám v adresáři. Do několika miliónů souborů to není žádný problém - dnešní filesystémy si s tím poradí a ani to není pomalé.

Komentáře

  • Honza Břešťan : Mozna krome NTFS, to ma s velkym mnozstvim souboru v ploche strukture problemy, ale i to se da castecne obejit - http://stackoverflow.com/a/291292/1659828 15.2.2015
  • Kit : O NTFS jsem sice neuvažoval, ale píší tam, že do 300 000 souborů by s NTFS neměl být problém. Adresáře moderních FS (včetně NTFS) obvykle používají B-stromy. Díky tomu je přímý přístup k jednotlivým souborům velmi rychlý. Pomalý je sekvenční průchod (traverzování stromem), ale ten je pomalý vždy - i kdybych data rozdělil do podadresářů. 15.2.2015
  • Honza Břešťan : To jo, slo mi spis o tu velikost a fragmentaci folder indexu zminenou na SO (a zaroven castecne vyresenou tamtez). 15.2.2015
  • jan.rybar : Zatím ukládám do souborů rozdělených do několika složek. Nicméně vzhledem k tomu, že se jedná o neveřejné soubory přistupované jen a pouze z PHP, má nějaký přínos uvažovat o seskupování tisíce těchto souborů do jednoho velkého a pak používat seek + čtení daného počtu bajtů? 15.2.2015
  • Kit : Takové soubory bych umístil do databáze. Konkrétně SQLite bylo vyvinuto právě jako náhrada fopen+fseek. 15.2.2015
  • p4l4clIn : @jan.rybar : forma ve vice souborech ma vyhodu, ze to lze rozdelit pres vice filesystemu 15.2.2015
  • jan.rybar : SQLite je velmi dobrá poznámka. Dlouho jsem ji na nic nepoužil, proto mě při prvotní úvaze ani nenapadla. 15.2.2015
  • Kit : Upozorňuji, že SQLite má jen základní podporu češtiny. České řazení je nutné udělat mimo tuto databázi. 15.2.2015
  • jan.rybar : Na druhou stranu, jak je to s přepisováním blobů a nutností průběžně volat VACUUM příkaz? 15.2.2015
  • Kit : V tom bych problém neviděl, zejména pokud se data budou pouze přidávat. Ve Firefoxu dělám VACUUM cca jednou za půl roku a stačí to. Přitom se v jeho databázích SQLite přepisují záznamy tisíckrát za hodinu. 15.2.2015
  • rs : K tomu razeni v SQLite neni tak uplne pravda ze je nutno volat mimo. u SQLite si muzes vytovirt vlastni collation pres custom funkce a pak si schopen ho vyuzivat i pri razeni. 16.2.2015
  • Kit : @salacr: Souhlasím. Vytváření uživatelských funkcí v hostitelském jazyce je unikátní vlastností SQLite a tohle je jedna z možností, jak této vlastnosti využít. 16.2.2015

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.