Repository

Mit dem Begriff Repository wird eine zentrale Ablage für Daten, Dokumente, Programme, Metadaten und Datenmodelle bezeichnet. Ein Repository ist ein Verzeichnis oder Archiv, das zur Verwaltung verschiedenster Daten verwendet wird und mitunter auch das Management der unterschiedlichen Dateiversionen beinhaltet (Versionsverwaltung). Je nach Gegenstandsbereich des Repository können Programme, Quellcode, digitalisierte Bücher und Zeitschriften, Konfigurationsdateien, technische Dokumentationen oder umfangreiche Datenmodelle (Metadaten) gespeichert, verändert, wiederhergestellt und wiederverwendet werden. Neben Bibliotheken, Entwicklern und Programmierern nutzen auch Suchmaschinen verschiedene Typen von Repositories, um zum Beispiel Informationen wie URLs zu verwalten, die von Crawlern gesammelt und in Indexstrukturen gespeichert werden. Alternative Begriffe für Repository sind Data Repository, Repository System und Projektarchiv.

Allgemeine Informationen zum Thema

Die Basis von Repository Systemen bildet in den meisten Fällen eine Datenbank, die lokal auf einer Festplatte, zentral auf einem Server oder verteilt in einem CDN-System organisiert sein kann. Hinzu kommen sogenannte Data Dictionaries (Datenwörterbuch, Datenkatalog), die die Darstellungsformen, Objektdefinitionen und die Beziehungen zwischen einzelnen Datenobjekten umfassen. Die Datenkataloge enthalten nicht etwa die zu speichernden Datensätze und Anwendungsdaten, sondern Informationen über diese Daten, sprich Metadaten. Bevor physische Daten gespeichert werden können, muss das zugrundegelegte Datenmodell den logischen und konzeptionellen Rahmen definieren. Diese Schemata bestimmen, wie die Struktur der Datenbank angelegt ist und wie die Modellierung der Daten erfolgen soll.[1]

In der Softwareentwicklung wurden derartige Datenmodelle zunehmend mit Metadaten ausgezeichnet, um Entwicklern einen umfassenden Zugang zu allen relevanten Informationen zu geben. Aus diesen Data Dictionaries sind die heutigen Versionsverwaltungssysteme und Repositories entstanden. Mit erweiterten Funktionalitäten erlauben sie es, auch eigene Datenmodelle zu bestimmen und verschiedenste Schnittstellen und Tools zu nutzen. Je nach Ansatz unterstützen sie Entwickler auch bei der Kreation des Quellcodes, dem Testing und der Auslieferung von fertigen Programmen und kombinieren somit Datenbanken, Versionsverwaltungen und Entwicklungsumgebungen zu einem Repository, auf das alle Projektbeteiligten zugreifen können.

Arten von Repositories

Grundsätzlich können Repositories danach unterschieden werden, in welchen Anwendungsbereichen sie Einsatz finden. Eine Auswahl:

  • Repository zur Versionsverwaltung: In der Entwicklung von Games, Software, Apps und anderen IT-Produkten kommen Repositories vielfach zum Einsatz. Die klassische Variante in der Erstellung und Verwaltung von Software wird als Concurrent Versions System (CVS) bezeichnet.[2] Dieses System wurde stetig weiterentwickelt und wird in vielen verschiedenen Repositories wie zum Beispiel Subversion, GitHub oder SourceForge.net verwendet. Das Prinzip besteht darin, dass eine Datei aus dem Repository geladen wird (auschecken), um sie zu bearbeiten und anschließend wieder in das Projektarchiv hochzuladen (einchecken).[3] Jegliche Veränderungen an Dateien werden in einem Protokoll festgehalten und sind einsehbar sowie veränderbar.
  • Repository für Metadaten: Bei komplexen IT-Infrastrukturen werden Repositories dazu benutzt, bestimmte Funktionen und Systembausteine in die Infrastruktur zu integrieren. Sogenannte hochintegrative Systeme erfordern Repositories, die das gesamte System selbst beschreiben und Daten über die informationstechnische Umwelt oder Peripherie enthalten. Muss das System auf Veränderungen reagieren, kann es dies dank eines Metaansatzes, der als 'definieren statt programmieren' beschrieben wird. Denn durch Metadaten-Repositories ist es dem System möglich, auf Veränderungen schnell und unkompliziert zu reagieren, ohne dass für diese Änderungen Quellcode oder Programme geschrieben werden müssen. Insbesondere in Data Warehouses, serviceorientierten Architekturen (SOA), Enterprise Application Integration Architekturen (EAI) und auch im Cloud Computing kommen derartige Repositories zum Einsatz.

Beispiele

Es gibt zahlreiche Beispiele für Repositories. Eines der größten ist sicherlich Googles Repository, das ein privates, internes Projektarchiv für jeglichen Code von Google darstellt. 25000 Entwickler haben darauf Zugriff und können Softwarebausteine verwenden, um diese nicht neu kodieren zu müssen. Die Google Entwickler können die dort gespeicherten Software-Bibliotheken als Ausgangspunkt nehmen, um neue Services, Module und Updates zu programmieren. Darüber hinaus entwickelte Google eigene Tools für das Repository, das sich über zehn verschiedene Data Center in der ganzen Welt erstreckt. Dennoch haben nicht alle Entwickler die gleichen Zugriffsrechte. So dürfen nur bestimmte Mitarbeiter die Kernalgorithmen der Suchmaschine bearbeiten. Dies gilt insbesondere für den PageRank und die zahlreichen Algorithmen, die die 200 unterschiedlichen Signale für das Ranking verarbeiten.

Das Repository umfasst nach aktuellen Angaben mehr als 2 Milliarden Codezeilen. Zum Vergleich: Microsoft Windows besteht wahrscheinlich aus 50 Millionen Codezeilen und ist etwa vierzig mal kleiner. Das Repository von Google ist aus einem weiteren Grund besonders: Es unterstützt und ermöglicht alle Google Dienste – inklusive Google Search, Maps, Docs, Gmail, YouTube und andere Services. Wahrscheinlich ist es das größte Repository, das aktuell in Gebrauch ist, bemerkte Rachel Potvin auf einer Konferenz im Sillicon Valley.[4] Nicht ohne Grund wird es als Monolith bezeichnet. Auch Facebook und andere Internetfirmen verwenden solche Ansätze, um ihre enorme Codebasis im Tagesgeschäft zu verwalten und die aufwendigen Stationen von Entwicklungsumgebungen, wie beispielsweise Staging, Testing und Deploying zu vermeiden.

Neben den bereits erwähnten Repositories existieren weitere Projektarchive, die quelloffene Projekte oder unternehmensinterne Entwicklungen sein können:

Open Source Repositories:

  • Mercurial
  • GitHub
  • GNU arch
  • Bazaar

Proprietäres Repositories:

  • BitKeeper
  • Alienbrain
  • Perforce
  • IBM Rational Synery

Bedeutung für das Online Marketing

Ab einer bestimmten Projektgröße ist es durchaus sinnvoll, bei der Entwicklung auf Repositories zu setzen. Bei Open Source Projekten werden Kräfte gebündelt und Synergieeffekte erzielt, denn beteiligte Entwickler müssen das Projektarchiv nicht extra erstellen und sie müssen auch keine neuen Tools zur Verwaltung erfinden. Zugleich können zahlreiche Entwickler an einem Projekt arbeiten; dies stellt aus kreativer Sicht einen wesentlichen Vorteil dar: Sobald eine Lösung für ein spezielles Problem gefunden wurde, kann diese ohne großen Aufwand im Repository getestet werden, weil bestehende Softwarebausteine für die Integration der neuen Lösung verwendet werden können. Bei proprietären Entwicklungsprojekten ergeben sich ähnliche Vorteile und zusätzlich die Eigenschaft, dass die Zugriffsrechte auf das Repository nach bestimmten Regeln vergeben werden können – was eine solide Codebasis bei laufenden Projekten sicherstellt.

Einzelnachweise

  1. Repository-System (Repository) enzyklopaedie-der-wirtschaftsinformatik.de/. Abgerufen am 31.10.2016
  2. Concurrent Versions System glossar.hs-augsburg.de. Abgerufen am 31.10.2016
  3. Repository glossar.hs-augsburg.de. Abgerufen am 31.10.2016
  4. Google Is 2 Billion Lines of Code—And It’s All in One Place wired.com. Abgerufen am 31.10.2016

Weblinks