Ukládání souborů ve firmě, koncepčně: jak strukturovat adresářové hierarchie?

Lidičky, odpusťte mi.  Asi se nudím, nebo je to příznak blížícího se mentálního důchodu... ale zamýšlím se nad takovou napohled primitivní a povrchní otázkou. Odtud toto téma.

Ukládání věcí ve firmě do souborů. Jak v tom udělat nějaký pořádek. Třeba nedokonalý, ale systém.
Asi se tím zhruba zabývá obor "document management" - možná komplet, možná zase jenom nějakou fasetou. Nepochybuju, že jsou na trhu softwarové produkty, které se snaží tvářit, že Vám to jednou provždy "vyřeší".

Jasně, máme provozní systém (účto nebo ERP nebo tak něco, podle toho jak je firma velká). Do kterého patří nějaké věci. Kromě toho v organizaci putují různé další soubory. Něco člověk stáhne z netu a je to pro něj užitečné a chce si to nechat (a do databáze ERP to nepatří), něco člověk třeba sám tvoří: interní dokumentaci (sesbíraná data a poznámky) k nějakému "případu", archivní ovladače pro konkrétní model či rodinu hardwaru, nebo nějaký content na web, nebo data k projektu (libovolný ne-IT obor), nebo třeba softwarový projekt nebo tak něco na ten způsob...

Prostě fůra souborů, které člověk buď někde získá, nebo sám vytvoří, a nerad by o ně přišel.
A člověk pracuje ve firmě/organizaci, a v kolektivu třeba sypou některé druhy takto získaných dat "na společnou hromádku" (sdílejí tu hromádku dat v pravém slova smyslu). A potřebují se v tom kolektivně orientovat, nastavit nějaká pravidla, jak strukturovat strom adresářů apod.

Teď ponechme stranou, že jsou v kolektivu lamy, které mají mentální problém pobrat stromovou strukturu adresářů jakožto velmi základní a obecný koncept. A sypou svoje data kam je zrovna napadne, tak jako že šli zrovna okolo. Sdílený fileserver pak vypadá jako předměstí v banánové republice bez svozu odpadků.

Na druhé straně jsme krasoduchové jako já, kteří se tím snažíme zabývat koncepčně, v rovině "datového modelování a metamodelování" - a nejsme z toho o moc moudřejší než početná "střední vrstva" všelijakých kolegů a šéfů, kteří jsou mentálně někde mezi = nevidí tu hrůzu v celé koncepční hloubce a bojují s tím jak umí, tzn. částečně ad hoc, mají sklon podlehnout reklamě dodavatelů NASů, softwarů na "geniální document management" apod.

V zásadě je problém v tom, že naprostá většina konvenčních filesystémů prezentuje uživateli "strom adresářů". Ten strom je vlastně index, pro jednoznačnou (a jedinou?) adresaci přístupu k datovým objektům (souborům). A problém je v tom, že koncepčně můžeme mít mentální problém říct, který aspekt/atribut/kritérium souboru má být určujícím pro třídění = pro formování té stromové struktury. Příklady možností:
- per uživatel (jasně, máme home adresáře)
- per zákazník
- per "projekt"
- per značka/model/rodina hardwaru
- per oddělení/oblast interních činností ve firmě
Který aspekt zvolit jako primární? Je vůbec některý z nich "nepochybně obecně primární"?

Můžu uvažovat tím směrem, že si prostě jeden aspekt jako primární zvolím, a tento použiji pro zatřídění do stromu souborového systému. A následně se budu snažit použít třeba symlinky nebo "extended attributes" nebo třeba klikatelné indexy v HTML formátu, abych zařídil "sekundární odkazy", které neznamenají "vlastnictví" objektu ve stromě (tím je primární umístění). Bohužel operační systémy mi tuto bohulibou "anotační činnost nad primárním souborovým systémem" nijak neusnadňují, znamenalo by to používat nějaký dodatečný software, řešit multiplatformnost (bye bye symlinky a xattr) apod.

Výrobci OS dokáží ještě tak propašovat do OS "indexační engine", který pravidelně ráno po spuštění počítače sežere na hodinu 100% disk IO kvůli reindexaci...

Anebo prostě cpát BLOBy do databáze a dávat jim nějaké tagy, podle kterých jsou dohledatelné. Ať už ty bloby jsou primárně umístěné jako soubory na disku v mělké/tupé adresářové struktuře, nebo přímo v RDBMS.

Interní dokumentaci lze spravovat třeba v nějakém Wiki-based enginu... prostě hypertext. Což je ale práce navíc, a nakonec to stejně moc neřeší, "kam sypat bloby všeho druhu a jak v nich udržovat pořádek".

Pokud se vrátím na zem k obyčejné adresářové struktuře, tak řekněme, že lidi dostanou home adresáře na fileserveru, do kterých si tradičně navzájem nevidí (za normálních okolností), a pak bude existovat nějaký "sdílený share", kam můžou všichni, případně mají nějak rozparcelováno uživatelskými právy, kdo smí kde zapisovat/mazat apod. A pak se podrobněji uplatní nějaká kritéria, jak věci podrobněji třídit.

A teď si vemte, že ten sdílený share je někde na fileserveru. A lidi mají každý noťas, s ním cestují, a třeba taky chtějí pracovat offline, nechtějí být závislí na internetové konektivitě (protože VPN). To znamená, že si chtějí některé věci zrcadlit na lokální disk v noťasu. Ale jaksi nejde, aby si každý ve firme synchronizoval na své noťasy celý fileserver - prostě z kapacitních důvodů. Řekněme, že lze realizovat synchronizaci "home adresáře". Nojo, ale co věci na sdíleném sharu? Synchronizovat jednotlivé foldry, které si uživatel nějak označí? To už zase vyžaduje netriviální pozornost. Nebo mít pravidlo "pracuju na noťasu, a co vytvořím v tomhle adresáři, to se syncne na server, ale nikoli naopak"? Co když na jedné věci pracuje víc lidí, a třeba se naštěstí nepotkávají nad jedním souborem (není třeba řešit slučovací konflikty) ale hodilo by se, synchronizovat množinu souborů?

Jasně, existují specializované "softwarové systémy" pro konkrétní použití: podnikové aplikace (na škále mezi účtem a ERP), existují systémy pro správu verzí zdrojáků (GIT a jeho poddaní), řadil bych sem i kanonické "document management systémy" třeba na ISO dokumentaci, nebo třeba obyčejnou DokuWiki apod.

Zůstaňme ale ještě chvíli u "holých souborů v adresářovém stromě". Realita je taková, že se zvolí nějaké kompromisní uspořádání, a ono to nějak (kompromisně) funguje.

Ďábel se ovšem skrývá v detailu a občas se ohavně zasměje - třeba ve chvíli, kdy šéf prohlásí "potřebujeme zlepšit zálohy". A má představu, že zařídíte zálohu toho kompostu na celofiremním sdíleném svazku, nejlíp se zachycením chronologie. Toto na prostoru, kam lidi ještě s bídou mentálně zvládnou sypat čerstvá data, ale nejsou už mentálně schopni, třeba jednou za čas uklízet = odmazávat nepotřebné staré verze dočasných imagů toho či onoho apod. Nemluvě o vysloveném odpadu, který tam nikdy nepatřil. Třeba narazíte na to, že někdo už pár let do GITu ukládá archiv surových videosekvencí z nějakého přístroje pro kontrolu jakosti... nebo někdo navrhne, že se do ERP mají archivovat instalátory ovladačů a doprovodného softwaru toho či onoho... (a zálohy ERP jsou ty nejpečlivější, co máme).

Takže můžete nakoupit veliký storage, který Vám bude s nějakou rezervou stačit na aktuální rozměr nahromaděného kompostu. A můžete se snažit o deduplikaci. A prostě to urvat hrubou silou. Proti Vám stojí rostoucí dav bezelstných užovek, které se o pořádek nestarají do chvíle, dokud jim nepřeteče disk - a pak mají sklon řešit problém tím, že žádají disk nový a větší, nebo naopak mažou bezhlavě i věci, které by třeba někdo jiný rozhodně zatím nemazal apod.
A v mnoha případech je pravda, že hardware je levný, zato omylem smazat nějaká unikátně pořízená data (třeba i poměrně objemná) může hodně bolet, i ve finančním vyjádření.

Nebo si přiberete k dosavadnímu popisu práce ještě roli "datového pedanta a uklízečky". Budete pravidelně pročesávat diskový prostor a hledat nápadně velké objemy dat, a prudit jejich vlastníky s dotazem, zda je to ještě potřeba, zda to tam vůbec někdy patřilo, zda to náhodou "podle zavedených konvencí" nepatří ve stromě adresářů někam úplně jinam, nebo aspoň o úroveň níž, apod. Tzn. ono to taky znamená, hrabat se lidem v "soukromém" nepořádku. A při tom neustále koukat na zaplnění záložního storage.

Když za někým přijdete, že byste potřeboval, aby si udělal pořádek v datech, zhruba "dle takových a takových zásad". Víte jak to skončí? U mě většinout tak, že mu ten pořádek musímu udělat já. Za různých okolností jsem se k tomu už párkrát dostal (zálohy, migrace, přetečení disku, disaster recovery). Prostě lidi jsou ještě schopní uklidit si na stole - ale uklidit si na harddisku? :-DDD

Přiznám se, že jsem tohoto "v podnikovém rozměru" naštěstí zůstal zatím převážně ušetřen, protože jsem nikdy nedělal správce fileserveru ve firmě větší než malé - a v malém kolektivu se věci snáz řeší "out of band", když se všichni denně vidíme navzájem... Mohu se komukoli osobně vysmát v odpověď na dotaz "ty Franto neměl bys někde volných pár desítek TB? já bych tady potřeboval něco dočasně odložit / zazálohovat"...

Podle mého je to prostě boj. Je to o osobním sklonu k pořádku (nebo o jeho pravém opaku). A pak ten hlavolam, podle čeho soubory třídit, když si musíte zvolit pouze jednu primární hierarchii, a implementovat "druhotné paralelní hierarchie" je problematické. A připadá mi, že je ten problém posledních 30 let pořád tak nějak stejný - nebo jsem šeredně zaostal.

Takže končím s vynalézáním suché vody (četli jste někdo Neználka?) a jdu zas něco kompromisně rozseknout.

Z toho, že existují a fungují velké firmy, usuzuji, že spousta těch dílčích "problémů", o kterých fantazíruji, je dávno vyřešená (= vynalézám kolo). Ostatně jsem od svých zákazníků tu a tam nějaké rady a postupy z "corporate" prostředí zaslechl :-) Naschvál je nebudu citovat.

K nakousnutí tohoto tématu ve fóru mě poňouklo, že na to téma nevidím nikde nic sepsaného "v kostce" - jako že akademickou publikaci, nebo nějaký "best practices" blogospisek, ani si nepamatuji, že by o tom někdo třeba tady na rootu zeširoka debatoval. Řeší se tu věci jako ZFS nebo CEPH, ale to jsou technologické vrstvy pod VFS, které se snaží "vstřebat cokoli, co na ně užovky nahází a nějak se s tím důstojně vypořádat", se slušnou průchodností, redundancí apod. Mě jde spíš o to, jak zajistit pořádek ve strukturách, které jsou uživatelům viditelné a jimi ovlivnitelné - k čemu je vést, jaká jim stanovovat pravidla, jak uživatelům zjednodušit život v této rovině. Aby příště našli, co dneska někam uložili/zatřídili. A aby to dokázal najít taky někdo jiný.

Koho jsem pohoršil mělkostí této své halucinace, tomu se omlouvám.
Uvítám jakékoli reakce - asi už mě znáte...
A pokud se mi podaří vyprovokovat k věci flame war, tak možná tím líp :-)


RDa

  • *****
  • 1 956
    • Zobrazit profil
    • E-mail
U me vede tohle "multi-root" reseni:

/ds/VYROBCE/[SKUPINA/]*.pdf
/work/KLIENT/YYYY-MM-DD SUBJECT~KEYWORDS/*.*
/archive/OSOBA/YYYY/MM/DD SUBJECT/*.*

/firma/ ... vlastni data, v malem aspektovem stromu podle typu dat (faktury, dane, kody, projekty, knihovny), nasledovany casto stromovym datumem (yyyy/mm) nebo linearnim datumovym prefixem pred samotnym cilovym popisem.

A posledni je samozrejme /downloads s jen hrubym rozdelenim (treba instalace, research papery, obrazky, ..)

Tim, ze pracuji na prikazove radce, tak skrze TAB mam autocomplete a kdyz neco chci, tak mentalne vim primo kde to je a o to myslim jde u snahy o organizaci dat. Na win pouzivam total commander a mam to prenastaveno search-as-typing, takze jenom napisu par pismen, enter, pismena, enter.. a jsem v hlubkem strome. Pro open-dialogy od win softu je jednodussi to najit v TC, zkopirovat dlouhou cestu a pastnout do toho dialogu, nez se proklikavat rucne k tomu.

DATUM tam v nejake forme vkladam explicitne, protoze vetsina softu zobrazuje "modified" datum, kdezto organizacne je dulezite mit "created" datum. U nekterych veci staci presnost na mesic, takze je to rychlejsi a lepsi.

Za datumem vzdy nasleduje dost vystizny popisek (stejna metoda jako pro tvorbu Subject u emailu) - tak, aby to slo grepovat/filtrovat na par slov kdyz se hleda neco. Casto pouzivam konstrukci "cd */*/*KEYWORD*", kdyz neznam datum, ale vim ze je to neco unikatniho (pro neunikatni ls -d se stejnym wildcardem).

Na cesty si nekdy beru veci z osobniho archivu, a lokalni kopie musi obsahovat cely datum+subject (to je vlastne checkoutnuty podstrom zajmu). Po navratu se do archivu doplni nove vznikle vysledky prace - takze je dobre v techto vecech drzet podadresare na staticke zdrojove data, a pak vytvoreny vysledek, nebo promenlivy kod/projektovy soubory.

Ke GITu jsem se jeste nedostal, nejsem sdilny a ve vlastnich vecech mam vlastni poradek :)

Pro osobní potřebu jsem zatím vystačil s variacemi na téma:

Kód: [Vybrat]
/data/{image,video,work,office,...}/YYYY-MM-DD-keywords/*
Řadu věcí mám repositáři ve verzovacím systému (včetně podkladům projektům apod.) Na organizované poznámky a dokumentaci používám destop wiki Zim (jehož data mám taky v repositáři). V práci Confluence a Bitbucket, soubory na neorganizované hromadě a v mailech :)

Osobně bych nejvíce ocenil nějaký pokročilý a rychlý omnisearch "na vše", kterým bych se mohl rychle dostat k cíli i když přesně nevím co hledám a v jakém kontextu jsem to naposledy viděl a zda to je skutečně to, co doufám, že by to mohlo být :-D