leeper / data-verzování

(c) Thomas J. Leeper (2015), licenci CC-BY

Verze ovládání je obrovská část reprodukovatelné výzkumu a vývoje open source software. Verzování poskytuje kompletní historii nějakého digitálního objektu (např. softwarový program, výzkumný projekt, atd.) a co je důležité, umožňuje sledovat, jaké změny v daném objektu byly provedeny, kdy byly tyto změny provedeny, a (s příslušnými metadaty), proč byly tyto změny provedeny. Tento dokument obsahuje některé z mých současných úvah o správě verzí pro data.

Kontext

Zejména v oblasti sociálních věd, vědci jsou závislé na velkých, veřejných datových souborů (např. politické Zřízení, Kvalita Vlády, Koreluje Války, ANES, ESS, atd.) jako výchozí materiál pro kvantitativní výzkum. Tyto datové sady se obvykle vyvíjejí (v průběhu času se přidávají nová data, provádějí se opravy datových hodnot atd.) a nová vydání jsou pravidelně zveřejňována. Někdy tyto údaje jsou komplexní spolupráci (viz, například, Kvalita Vlády) a ostatní jsou veřejné vydání single-orgán shromažďování údajů úsilí (např., ANES). Zatímco datové sady pro spolupráci vytvářejí zřetelnější případ použití pro správu verzí, datové sady pro jednu instituci mohou být také vylepšeny správou verzí. To je obzvláště důležité, protože staré verze těchto životně důležité datové soubory jsou často nejsou archivovány (např., ANES), což znamená, že je v podstatě nemožné získat předchozí verzi určitého ANES dataset po novém vydání došlo. Tento příspěvek má řídit přemýšlení o tom, jak řídit tvorbu, kurátorství, revize, a šíření těchto druhů datových souborů. Zatímco myšlenky zde mohou také vztahovat na to, jak si člověk myslí o správě svých vlastních dat, pravděpodobně platí více ve fázi vytváření dat než při pozdějším použití dat poté, co je datová sada v podstatě úplná nebo zmrazená.

přehled existujících nástrojů a přístupů

Institut otevřených dat má pěkný příspěvek, který nastiňuje výzvy používání standardního softwaru orientovaného na správu verzí (jmenovitě git)pro správu verzí dat. Hlavním problémem je, že git, stejně jako téměř všechny VCS, je navržen tak, aby sledoval změny řádků v textových souborech. To má velký smysl pro kód, stejně jako pro články, text atd. Ale začíná to dávat menší smysl pro digitální objekty, kde čára není smysluplnou jednotkou. To se stává opravdu jasné, když začneme verzi něco jako soubor hodnot (CSV) oddělených čárkami (jak popisuje příspěvek ODI). Změna jednoho datového pole vede ke změně celé řady, i když se ve skutečnosti změnila pouze jedna buňka. Podobný problém se objevuje v XML, JSON nebo jiných formátech oddělených textem (všimněte si však, že Open Knowledge Foundation zřejmě upřednostňuje JSON jako režim úložiště).

použití linebreak \n jako oddělovače pro sledování změn objektu funguje pro data. Daff je nástroj javascript, který se snaží tuto slabost napravit. Poskytuje rozdíl (porovnání dvou verzí souborů), který respektuje tabulkovou strukturu mnoha datových souborů zvýrazněním změn specifických pro buňky. Nejedná se však o systém plné správy verzí, je to prostě nástroj diff, který může sloužit jako užitečný doplněk k gitu.

příspěvek na Open Knowledge Foundation blogu tvrdí, že tam je nějaká logika, aby se line-založené changesety, protože standardní CSV (nebo jakékoli tabelární datový soubor) obvykle zaznamenává jeden postřeh, na jeho vlastní lince. Line-založené verze ovládání pak má smysl pro zaznamenávání změn pozorování (tedy upřednostnění řádky/pozorování přes sloupce/proměnné).

dat se snaží být „git pro data“, ale stav projektu, je trochu nejasný, vzhledem k tomu, že nebyl velmi aktivní vývoj na Github. Q / A na otevřeném datovém StackExchange ukazuje na některé další zdroje pro alternativy git vhodné pro data, ale není nic komplexního.

Universal Numeric Fingerprint (UNF) poskytuje potenciální strategii pro správu verzí dat. To je přesně to, k čemu byl navržen. Není to systém pro správu verzí sám o sobě, ale poskytuje hash, který může být užitečný pro určení, kdy se datová sada změnila. Má několik pěkných funkcí:

  • formát Souboru nezávislé (takže lepší než MD5)
  • pořadí Sloupců nezávislá (dataset, kde sloupce byly zamíchány produkuje stejné UNF hash)
  • Důsledně zpracovává desetinná čísla (zaokrouhlování a přesnost otázky jsou bezproblémové), Ale, UNF není dokonalý. Problémy patří:
  • je To druh citlivý (identické dataset, který je v řadě seřazené produkuje různé UNF; tak privilegování sloupce/proměnné přes řádky/pozorování)
  • není manipulace metadata (např., názvy proměnných, které nejsou součástí hash)
  • To je docela citlivé na datové struktury (např. „široká“ a „dlouhé“ reprezentace stejného objektu dataset vyrábět různé UNFs)
  • To není verze řídicího systému a poskytuje v podstatě žádný vhled do toho, co se změnilo, jen to, že došlo ke změně

Všechny tyto nástroje se také zaměřit na samotné údaje, spíše než související metadata (např. na číselník popisující data). Zatímco některé datové formáty (např. proprietární formáty jako stata .dta a SPSS .sav) zakódovat tato metadata přímo do souboru, není to běžný rys široce textově oddělených datových struktur. Někdy číselníky jsou upraveny nezávislé datových hodnot a naopak, ale to je spíše vidět velké veřejné datové soubory poskytují podrobné informace o změnách buď data nebo číselníku, kromě občasné zprávy.

další velkou výzvou pro verzování dat je, že stávající nástroje pro správu verzí nejsou dobře navrženy tak, aby zvládly provenience. Když jsou data generována, uložena nebo upravena, systém pro správu verzí orientovaný na software nemá žádný zřejmý mechanismus pro zaznamenávání, proč jsou hodnoty v datovém souboru tím, čím jsou, nebo proč jsou provedeny změny konkrétních hodnot. Tato informace může poskytnout zpráva odevzdání, ale jakmile je hodnota znovu změněna, historie změn určité hodnoty se ztratí v širší historii datového souboru jako celku.

takže zjevně neexistují žádné kompletní nástroje pro verzování dat.

některé principy verzování dat

prvním principem verzování dat je, že změny dat mají zdroje nebo vysvětlení. Systém verzování dat musí být schopen připojit se hodnoty dat, struktury a metadat (a změny těchto rysů) k vysvětlení těchto hodnot nebo změn hodnoty na hodnotu úroveň (spíše než na úrovni proměnných, připomínky, nebo soubory).

druhým principem je, že verzování dat by mělo být založeno na hodnotách, nikoli na proměnných nebo pozorovacích. Systém nemůže upřednostňovat pozorování před proměnnými nebo proměnnými před pozorováním; změna pozorování je nutně změnou proměnné a naopak.

třetím principem verzování dat je, že data existují nezávisle na jejich formátu. Pokud člověk změní hodnotu dat ve formátu CSV oproti stromu JSON, jedná se o změny odpovídající obsahu. Jako takový, jakýkoli systém správy verzí by měl uživatelům dat umožnit interakci s daty v jakémkoli formátu souboru, který si zvolí, aniž by nutně používal základní formát ukládání dat.

čtvrtým principem verzování dat je, že spolupráce je nezbytná pro generování a kuraci dat. Systém verzování dat musí být nativně spolupracující a logicky zaznamenávat, kdo generuje a upravuje data.

pátým principem verzování dat je, že změny struktury dat by měly být zaznamenávány nezávisle na datových hodnotách. Seřadit pořadí pozorování, uspořádání sloupců / proměnných a uspořádání řádků jako případy versus případové roky atd. (tedy., „wide „versus“ long “ arrangements) jsou strukturální rysy datové sady, nikoli rysy dat jako takových. Tyto jsou důležité, ale verzování dat proces by měl být schopen rozlišit změnu obsahu datové sady ze změny organizace nebo struktury datového souboru a v druhém případě správně rozpoznat jako identické sady dat, který je uspořádán ve dvou různých způsobech.

šestým principem verzování dat je, že metadata jsou důležitá, ale stejně jako struktura by měla být zpracována odděleně od změn dat. Dvě identické datové sady s různými metadaty by měly být rozpoznány jako obsahově identické.

předběžné závěry

Data by měla být uložena způsobem s hodnotou klíče, kde libovolný klíč má určitou hodnotu dat. Mapování pak spojuje tyto konkrétní datové hodnoty s pozorováním i proměnnými, takže jakékoli hodnocení změn dat je nezávislé na formátu a na struktuře. Jako taková je změna hodnoty zaznamenána nejprve jako změna hodnoty, ale může být sekundárně rozpoznána jako současná změna pozorování i proměnné.

Nějaké rozhraní, aby takový klíč-hodnota obchodu by měla přijít ve známém a flexibilní forma: uživatelé by měli komunikovat s verzování dat systému přes jakýmkoli způsobem, že v současné době použití dat (např. v textovém editoru, data, analýzy, software, tabulkový procesor, atd.). Změny by měly být zaznamenány v master souboru, který může nativně a okamžitě importovat z a exportovat jakýkoli formát datového souboru (včetně oddělovači soubory, tabulky, XML, JSON, atd.).

systémy pro verzování dat musí mít sofistikovanější systém odevzdání, než který poskytují současné, softwarově orientované systémy pro správu verzí. Zejména se zavazuje by měl zaznamenat nejen změny hodnoty dat, struktury, nebo metadata, ale také strukturované informace, které vysvětluje, že změny, včetně důvodem pro změnu, zdroj(zdroje) údajů hodnotu, a autor změny. V podstatě by obě sady změn a stavy úplných dat měly být plně citovatelné a měly by obsahovat citační metadata.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.