Viele Datenanalysten, die ich respektiere, verwenden die Versionskontrolle. Beispielsweise:
- http://github.com/hadley/
- Siehe Kommentare unter http://permut.wordpress.com/2010/04/21/revision-control-statistics-bleg/
Ich prüfe jedoch, ob sich die Einführung eines Versionskontrollsystems wie git lohnt.
Ein kurzer Überblick: Ich bin ein Sozialwissenschaftler, der R verwendet, um Daten für Forschungspublikationen zu analysieren. Ich produziere derzeit keine R-Pakete. Mein R-Code für ein Projekt enthält normalerweise einige tausend Codezeilen für die Dateneingabe, -bereinigung, -manipulation, -analyse und -ausgabe. Veröffentlichungen werden normalerweise mit LaTeX geschrieben.
In Bezug auf die Versionskontrolle gibt es viele Vorteile, über die ich gelesen habe, die jedoch für den Solo-Datenanalysten weniger relevant zu sein scheinen.
- Backup: Ich habe bereits ein Backup-System eingerichtet.
- Gabeln und Zurückspulen: Ich hatte nie das Bedürfnis, dies zu tun, aber ich kann sehen, wie nützlich es sein könnte (z. B. bereiten Sie mehrere Zeitschriftenartikel auf der Grundlage desselben Datensatzes vor; Sie erstellen einen Bericht, der monatlich aktualisiert wird usw. )
- Zusammenarbeit: Die meiste Zeit analysiere ich Daten selbst, daher würde ich die Vorteile der Versionskontrolle für die Zusammenarbeit nicht nutzen.
Mit der Einführung der Versionskontrolle sind auch mehrere potenzielle Kosten verbunden:
- Zeit, ein Versionskontrollsystem zu evaluieren und zu erlernen
- Eine mögliche Erhöhung der Komplexität gegenüber meinem aktuellen Dateiverwaltungssystem
Ich habe jedoch immer noch das Gefühl, dass mir etwas fehlt. Allgemeine Leitfäden zur Versionskontrolle scheinen eher an Informatiker als an Datenanalysten gerichtet zu sein.
Insbesondere in Bezug auf Datenanalysten unter ähnlichen Umständen wie den oben aufgeführten:
- Lohnt sich die Versionskontrolle?
- Was sind die wichtigsten Vor- und Nachteile einer Versionskontrolle?
- Was ist eine gute Strategie für den Einstieg in die Versionskontrolle für die Datenanalyse mit R (z. B. Beispiele, Workflow-Ideen, Software, Links zu Handbüchern)?
quelle
Antworten:
Ich bin der Meinung, dass die Antwort auf Ihre Frage ein klares Ja ist. Die Vorteile der Verwaltung Ihrer Dateien mit einem Versionskontrollsystem überwiegen bei weitem die Kosten für die Implementierung eines solchen Systems.
Ich werde versuchen, auf einige der von Ihnen angesprochenen Punkte im Detail zu antworten:
Ja, und ich auch. Es sind jedoch einige Fragen zu berücksichtigen, ob es angemessen ist, sich auf ein Allzweck-Backup-System zu verlassen, um wichtige und aktive Dateien in Bezug auf Ihre Arbeit angemessen zu verfolgen. Auf der Leistungsseite:
Und am wichtigsten:
Besitzen Sie beispielsweise einen Mac und verwenden Sie Time Machine, um auf einer anderen Festplatte in meinem Computer zu sichern. Time Machine eignet sich hervorragend zum Wiederherstellen der ungeraden Datei oder zum Wiederherstellen meines Systems, wenn Probleme auftreten. Es hat jedoch einfach nicht das Zeug, meiner wichtigen Arbeit zu vertrauen:
Beim Sichern muss Time Machine die gesamte Festplatte abbilden, was sehr viel Zeit in Anspruch nimmt. Wenn ich weiter arbeite, gibt es keine Garantie dafür, dass meine Datei in dem Zustand erfasst wird, in dem ich die Sicherung initiiert habe. Möglicherweise erreiche ich auch einen anderen Punkt, den ich speichern möchte, bevor die erste Sicherung abgeschlossen ist.
Die Festplatte, auf der meine Time Machine-Backups gespeichert sind, befindet sich auf meinem Computer. Dadurch sind meine Daten anfällig für Diebstahl, Feuer und andere Katastrophen.
Mit einem Versionskontrollsystem wie Git kann ich ohne weiteren Aufwand eine Sicherung bestimmter Dateien initiieren, ohne dass ein Speichern in einem Texteditor angefordert werden muss. Die Datei wird sofort abgebildet und gespeichert. Außerdem ist Git so verteilt, dass jeder Computer, auf dem ich arbeite, eine vollständige Kopie des Repositorys hat.
Dies bedeutet, dass meine Arbeit auf vier verschiedenen Computern gespiegelt wird - nichts weniger als ein Akt Gottes könnte meine Dateien und Daten zerstören. An diesem Punkt würde es mich wahrscheinlich sowieso nicht sonderlich interessieren.
Als Solist gable ich auch nicht so viel. Die Zeit, die ich durch das Zurückspulen gespart habe, hat meine Investition in das Erlernen eines Versionskontrollsystems jedoch viele Male im Alleingang zurückgezahlt. Sie sagen, Sie hatten noch nie das Bedürfnis, dies zu tun - aber war das Zurückspulen einer Datei unter Ihrem aktuellen Backup-System wirklich eine schmerzlose und praktikable Option?
Manchmal sah der Bericht vor 45 Minuten, einer Stunde oder zwei Tagen einfach besser aus.
Ja, aber Sie würden ein Tool lernen, das sich als unverzichtbar erweisen könnte, wenn Sie am Ende mit anderen an einem Projekt zusammenarbeiten.
Mach dir darüber keine Sorgen. Versionskontrollsysteme sind wie Programmiersprachen - sie haben einige Schlüsselkonzepte, die gelernt werden müssen, und der Rest ist nur syntaktischer Zucker. Grundsätzlich erfordert das erste Versionskontrollsystem, das Sie lernen, die meiste Zeit, um zu einem anderen zu wechseln. Sie müssen lediglich lernen, wie das neue System Schlüsselkonzepte ausdrückt.
Wählen Sie ein beliebtes System und machen Sie es!
Haben Sie beispielsweise einen Ordner,
Projects
der alle Ordner und Dateien enthält, die sich auf Ihre Datenanalyseaktivitäten beziehen? Wenn dies der Fall ist, wird die Komplexität Ihres Dateisystems durch genaues Versetzen der Versionskontrolle erhöht0
. Wenn Sie Ihre Projekte über Ihre computer- verstreut sind , dann sollten Sie sie zentralisieren , bevor die Versionskontrolle anwenden , und dies wird am Ende Verringerung der Komplexität bei der Verwaltung Ihrer Dateien- Deshalb haben wir einen habenDocuments
Ordner , nachdem alle.Ja! Sie erhalten eine große Schaltfläche zum Rückgängigmachen und können problemlos Arbeiten von Maschine zu Maschine übertragen, ohne sich Gedanken über den Verlust Ihres USB-Laufwerks machen zu müssen.
Der einzige Nachteil, den ich mir vorstellen kann, ist eine leichte Vergrößerung der Dateigröße - aber moderne Versionskontrollsysteme können mit Komprimierung und selektivem Speichern absolut erstaunliche Dinge bewirken, so dass dies so ziemlich ein strittiger Punkt ist.
Halten Sie Dateien, die Daten oder Berichte generieren, unter Versionskontrolle. Seien Sie selektiv. Wenn Sie so etwas wie verwenden
Sweave
, speichern Sie Ihre.Rnw
Dateien und nicht die.tex
Dateien, die daraus erstellt werden. Speichern Sie Rohdaten, wenn die erneute Erfassung schwierig wäre. Wenn möglich, schreiben und speichern Sie ein Skript, das Ihre Daten erfasst, und ein anderes, das sie bereinigt oder ändert, anstatt Änderungen an Rohdaten zu speichern.Zum Erlernen eines Versionskontrollsystems empfehle ich Git und diese Anleitung .
Diese Websites enthalten auch einige nützliche Tipps und Tricks zum Ausführen bestimmter Aktionen mit Git:
http://www.gitready.com/
http://progit.org/blog.html
quelle
Ich habe neun Jahre in einem Analytics-Shop gearbeitet und diesem Shop die Idee der Versionskontrolle für unsere Analyseprojekte vorgestellt. Ich glaube natürlich fest an die Versionskontrolle. Ich würde jedoch die folgenden Punkte ansprechen.
quelle
Der Vollständigkeit halber dachte ich, ich würde ein Update zu meiner Einführung der Versionskontrolle bereitstellen.
Ich habe festgestellt, dass die Versionskontrolle für Solo-Datenanalyseprojekte sehr nützlich ist.
Ich habe git als mein Hauptwerkzeug zur Versionskontrolle übernommen. Ich habe zuerst Egit in Eclipse mit StatET gestartet. Jetzt benutze ich im Allgemeinen nur die Befehlszeilenschnittstelle, obwohl die Integration mit RStudio ziemlich gut ist.
Ich habe über meine Erfahrungen beim Einrichten der Versionskontrolle aus der Perspektive von Datenanalyseprojekten gebloggt.
Wie in dem Beitrag erwähnt, hat die Einführung der Versionskontrolle viele sekundäre Vorteile für meine Meinung zu Datenanalyseprojekten, einschließlich der Klarstellung:
quelle
Ich mache Wirtschaftsforschung mit R und LaTeX und stelle meine Arbeit immer unter Versionskontrolle. Es ist wie unbegrenztes Rückgängigmachen. Probieren Sie Bazaar aus, es ist eines der am einfachsten zu erlernenden und zu verwendenden. Unter Windows verfügt es über eine grafische Benutzeroberfläche (TortoiseBZR).
Ja, die Versionskontrolle bietet zusätzliche Vorteile, wenn Sie mit anderen zusammenarbeiten, aber selbst bei Soloprojekten ist dies sehr sinnvoll.
quelle
Im Moment denken Sie wahrscheinlich, dass Ihre Arbeit Code entwickelt, der das tut, was Sie wollen. Nachdem Sie ein Revisionskontrollsystem verwendet haben, werden Sie sich vorstellen, dass Ihre Arbeit Ihr Vermächtnis im Repository aufschreibt und brillante inkrementelle Änderungen daran vornimmt. Es fühlt sich viel besser an.
quelle
Ich würde die Versionskontrolle für einen Solo-Act wie Sie weiterhin empfehlen, da es eine großartige Sache sein kann, ein Sicherheitsnetz zu haben, um Fehler zu erkennen.
Ich habe als Solo-Java-Entwickler gearbeitet und verwende immer noch die Quellcodeverwaltung. Wenn ich ständig einchecke, kann ich nicht mehr als eine Stunde Arbeit verlieren, wenn etwas schief geht. Ich kann ohne Sorgen experimentieren und umgestalten, denn wenn es schief geht, kann ich immer zu meiner letzten Arbeitsversion zurückkehren.
Wenn dies bei Ihnen der Fall ist, würde ich die Verwendung der Quellcodeverwaltung empfehlen. Es ist nicht schwer zu lernen.
quelle
Sie müssen eine Versionskontrollsoftware verwenden, da Ihre Analyse sonst nicht perfekt reproduzierbar ist.
Wenn Sie Ihre Ergebnisse irgendwo veröffentlichen möchten, sollten Sie immer in der Lage sein, den Status Ihrer Skripte zu dem Zeitpunkt zu rekonstruieren, an dem Sie sie erstellt haben. Angenommen, einer der Prüfer entdeckt einen Fehler in einem Ihrer Skripte: Woher wissen Sie, welche Ergebnisse erzielt werden und welche nicht?
In diesem Sinne ist ein Sicherungssystem nicht ausreichend, da es wahrscheinlich nur einmal pro Tag durchgeführt wird und keine Beschriftungen auf die verschiedenen Sicherungen angewendet werden, sodass Sie nicht wissen, welche Versionen welchen Ergebnissen entsprechen. Das Erlernen eines VCS ist einfacher als das, was Sie denken. Wenn Sie lernen, wie Sie eine Datei hinzufügen und Änderungen festschreiben, reicht dies bereits aus.
quelle
ein großes JA.
Profis: Sie können verfolgen, was Sie zuvor getan haben. Besonders nützlich für Latex, da Sie möglicherweise einen alten Absatz benötigen, der von Ihnen gelöscht wurde! Wenn Ihr Computer abstürzt oder Sie an einem neuen arbeiten, haben Sie Ihre Daten sofort wieder.
Nachteile: Sie müssen einige Einstellungen vornehmen.
Fangen Sie einfach an, es zu benutzen. Ich verwende Schildkröten-SVN unter Windows als Client-Tool und meine Abteilung verfügt über einen SVN-Server. Ich habe meinen gesamten Code und meine Daten (ja, Sie haben auch Ihre Daten dort abgelegt!) Dort abgelegt.
quelle
Machen Sie zuerst einen Schritt zurück und lernen Sie die Vorteile des Schreibens von R-Paketen kennen! Sie sagen, Sie haben Projekte mit mehreren tausend Codezeilen, die jedoch nicht so strukturiert oder dokumentiert sind wie der Paketcode? Sie erzielen große Gewinne, wenn Sie die Ideale des Pakets einhalten, einschließlich Dokumentation für jede Funktion, Tests für viele der üblichen schwer zu fassenden Fehler, die Möglichkeit, eigene Testsuiten zu schreiben usw. usw.
Wenn Sie nicht die Disziplin haben, ein Paket zu erstellen, bin ich mir nicht sicher, ob Sie die Disziplin haben, eine ordnungsgemäße Revisionskontrolle durchzuführen.
quelle
Ich würde den obigen Ansichten zustimmen und sagen, dass die Versionskontrolle nützlich ist.
Vorteile;
In Bezug auf Toolsets verwende ich Git zusammen mit StatEt und Eclipse, was gut funktioniert, obwohl Sie Eclipse sicherlich nicht verwenden müssen. Es gibt einige Git-Plugins für Eclipse , aber ich verwende im Allgemeinen die Befehlszeilenoptionen.
quelle
Eine Versionskontrolle für die Solo-Entwicklung (jeglicher Art) ist wirklich interessant für:
Wenn Sie nicht sehen, dass Sie eine dieser beiden grundlegenden Funktionen zur Versionskontrolle ausführen, ist möglicherweise nur ein einfaches Backup-Tool erforderlich.
Wenn Sie diese Funktionen benötigen, erhalten Sie auch ein Backup (
git bundle
z. B. mit).quelle
Ich mache auch Solo-Scripting-Arbeiten und finde, dass es die Dinge einfacher macht, anstatt sie komplexer zu machen. Die Sicherung ist in den Codierungsworkflow integriert und erfordert keine separaten Dateisystemprozeduren. Die Zeit, die benötigt wird, um die Grundlagen eines Versionskontrollsystems zu erlernen, wäre definitiv eine gute Zeit.
quelle
Dropbox verfügt über eine "ppor man" -Versionskontrolle, mit der Sie mit geringem Aufwand und vielen zusätzlichen Vorteilen einen Teil des Weges dorthin zurücklegen können.
quelle