Google

Google wird Marktführer
Google ist die weltweit am meisten genutzte Suchmaschine des Internet. Die Firma Google Inc. wurde 1998 von Lawrence Page und Sergey Brin gegründet. Im Jahr 2006 verfügte Google über einen Marktanteil von über 80%,  bei einer Indexgrösse von über 8 Milliarden Webseiten und ca. 60 Milliarden Dokumenten und über 1,1 Milliarden Bildern. Der Name von Google leitet sich von Googol ab, dies ist der Name der Zahl 1x 10 ^ 100 (eine 1 mit hundert Nullen),  den sich Milton Sirotta, der Neffe des Mathematikers Edward Kasner ausgedacht hat. Zur Legende zählt, dass der Markenname Google durch einen Rechtschreibfehler aus Googol entstanden sei.

Technologie und Logistik, Googleware
Google ist  verteilt auf mehrere Rechenzentren rund um die Welt, die mit handelsüblichen PCs ausgestattet sind. In jedem Rechenzentrum befinden sich Rechnercluster mit einer verteilten, redundanten und nach oben leicht skalierbaren Architektur. Die aktuelle  Zahl der Server lag 2006 bei 450.000. Der Festplattenspeicher befindet sich im Petabytebereich, der Arbeitsspeicher im Terabytebereich. Das Prinzip der verteilten Datenhaltung ist bei Google ausgereift: die Googleware ermöglicht ein Verschmelzen von  Hardware und OS, so dass man kurzfristig Server in ein Rack schieben kann, die das OS automatisch laden und sich integrieren. Google betreibt redundante Datenhaltung so dass der Index in 3 Kontinenten unabhängig verfügbar ist.  Google erreicht in Deutschland ca. 28 Mio Nutzer, eine Suchanfrage benötigt durchschnittlich 0,2 Sekunden und beschäftigt ca. 300 - 700 Server. Google ist in 112 Sprachen verfügbar auf 158 Domains.

Der PageRank Algorithmus 
Entscheidend für die Reihenfolge der Ergebnisausgabe bei Suchanfragen ist der Ranking Algorithmus. Google arbeitet mit dem PageRank-Algorithmus: entscheidend beim PageRank ist die Anzahl der Webseiten (und deren eigener PageRank Wert  sowie die thematische Nähe zur verlinkten Seite), die auf eine Seite verlinken (= Backlinks: Rückverweise, die aus dem Betrachtungsstandpunkt einer Webseite von anderen Webseiten auf sich selber verlinken), die relevante Keyword-Dichte bezogen  auf das Thema der Seite, die Aktualität und der Umfang der Webseite. Der PageRank geht von 0 bis 10 (mit 10 als höchstem Wert) und wird z. B. von der Google Toolbar im Internet Explorer oder dem Firefox Add-On "Search Status"angezeigt. Unabhängig vom  PageRank sind die Ranking Positionen für Suchergebnisseiten einzelner Keywords zu bewerten. Um in die Top-10-SERP (Search Engine Result Page oder Search Engine Ranking Position) zu gelangen, sollte man SEO (Search Engine  Optimization, Suchmaschinenoptimierung) betreiben.

Web-Spam und TrustRank
Eventuell wird der PageRank bald durch den TrustRank ersetzt. Beim TrustRank werden Webseiten nach einem bestimmten Verfahren bewertet. Es entsteht ein semantisches  "Trusted Web", bei dem die qualitative Nachbarschaft von Webseiten, die miteinander verlinkt sind, bedeutend ist. Dadurch soll Web-Spam wie Doorway-Pages, Link-Farmen oder Google-Bombs bekämpft  werden.

Implementierung von Google, Google AdWords, Google AdSense
Google wurde in C und C++ implementiert und läuft auf Linux und Solaris. Mit Google AdWords kann man auf Google  Keyword-gesteuerte Anzeigen schalten. Der Werbetreibende hat volle Kontrolle über sein Budget und sein CPC (Cost per Click). Google AdSense erlaubt es dem Web-Admin, keyword- bzw. kontextgesteuerte Werbung auf seiner Webseite zu platzieren. 

Google-Dienste
Google bietet einige Dienste, z. T. durch Akquisitionen (wie z. B. Kaltix Corp., Keyhole Corp., Urchin Software Corp., YouTube, DoubleClick, Postini) an: Produktsuche (ehemals Froogle), GMail, Google-News, Google-Base, Google Bücher,  Google-Earth (Keyhole Corp.), Google Analytics (ehemals Urchin), Google Docs & Spreadsheets (Online Textverarbeitung (ehemals Writely) und Tabellenkalkulation), Google Blog Search, Google Calender,  Google Reader, Google Talk, Google Finance, Google Desktop Search oder Picasa oder Google Plus (G+). Google penetriert immer mehr den Online (und Offline)-Werbemarkt und ist nach der Akquisition von Double Click seinem  Ziel einer beherrschenden Stellung auf diesem Markt ein gutes Stück näher gekommen. Google Apps for Your Domain bietet eine Reihe von Hosted Communications Services: GMail Web E-Mail, G-Talk Instant Messaging und Voice Calling Services,  Collaborative Calendering durch Google Calendar sowie Web-Design, Web-Publishing und Web-Hosting mit Google Page Creator. In Vorbereitung ist das Google Betriebssystem basierend auf dem Browser Chrome: Chrome-OS. Android ist das Handy-OS.

Google IPO 
Das IPO (Initial Public Offering) von Google wurde 2004 durch Venture Capital von Sequoia Capital und Kleiner Perkins Caufield & Byers (KPCB) mitfinanziert. Konsortialführer waren Morgan Stanley und Credit Suisse First Boston.  Beim Börsengang mit dabei waren 29 weitere Banken, u. a. Goldman Sachs, die Citigroup, die Deutsche Bank, Lehman Brothers oder Merrill Lynch. Google nahm durch diesen IPO ca. 2,7 Milliarden Dollar ein.  Die Aktienstruktur wurde so gewählt, dass Page und Brin eine höchstmögliche Kontrolle darüber bekamen: sie kontrollieren jeweils ca. 16% davon (Page beim Börsengang 38,6 Mio Aktien, Brin 38,5 Mio Aktien, Eric Schmidt 14,8 Mio Aktien sowie Kleiner Perkins  und Sequoia Capital mit jeweils 23,9 Mio Aktien). Der Umsatz von Google betrug 1999 noch 220.000 Dollar. Der Quartalsumsatz von 1/2004 lag bei 389,6  Millionen Dollar, bei einen Nettogewinn von 64 Millionen Dollar, der Jahresumsatz lag 2003 (2002) bei 961,8 (347,8) Mio $. Der Umsatz stieg pro Quartal seit dem Börsengang um jeweils ca. 50%. Die Börsenkapitalisierung betrug 2007  158 Milliarden Dollar. Der Kurs der Google Aktie bewegte sich bis auf ca. 700 $ Ende 2007 und danach in einer Range zwischen 450 und 600 Dollar.  2006 wurde Google zur einflussreichsten Marke der Welt gewählt. Frühe Investoren die ab 1999 oder später einstiegen waren neben Sequoia Capital und KPCB auch private  Investoren wie Andreas von Bechtolsheim (Sun Microsystems), Arnold Schwarzenegger, Tiger Woods, Henry Kissinger oder Shaquille O'Neal.  Bechtolsheim soll auf Einladung von Stanford Professor David R. Cheriton, der Brin und Page beim Google-Projekt unterstützte, eine Vorführung einer frühen PC-Version von Google bekommen haben und war gleich so begeistert und vom Erfolg von Google  überzeugt, dass er angeblich gleich einen 1 Million $ Scheck gezückt haben soll, obwohl es noch gar keine Firmengründung für Google gab. Andy Bechtolsheim schlug vor, diese Firma direkt zu gründen, und war damit einer der Early Bird Investoren.
Siehe auch:    Volltext-Suchmaschinen   Suchmaschinen-Ranking   PageRank-Algorithmus   BackRub   Google-BigTable   Google-Server   AdServer   Search-Engine-Optimization   Semantische-Suchmachine   Social-Network-Dienste

  Google-BigTable

Google BigTable ist ein verteiltes Speichersystem welches ausgelegt ist, um grosse Mengen an strukturierten Daten zu verwalten. Es kann sich dabei um Größenordnungen bis in den Petabytebereich handeln. Diese Daten können auf tausenden  Commodity Servern verteilt sein. Commodity Server sind in der Praxis leicht einsetzbar für kommerzielle Zwecke oder wichtige Datenanforderungen. Sie sind leicht ersetzbar (Plug and Play) und nachbestellbar, in einfacher Ausführung. Sie können in Blade  Zentern leicht eingesetzt und ausgetauscht werden. Google Table wird sowohl für große strukturierte Daten in NoSQL Datenbanken eingesetzt als auch für Anwendungen die eine geringe Antwortzeit benötigen (von Backend Massenverarbeitung bis zu Echtzeit  Datenverarbeitung).

Eigenschaften von Google BigTable sind Skalierbarkeit, vielseitige Anwendbarkeit, hochleistungsfähig, und geringe Ausfallzeiten. In BigTable sind mehrere Datenbankstrategien vereint: Parallele Datenbanken, In-Memory Datenbanken und  ein eigenes Interface: es werden keine Relationen Schemata implementiert sondern ein einfaches, strukturiertes Datenmodell (structured storage), welches eine dynamische Kontrolle über das Datenlayout und Datenformat ermöglicht.  Google BigTable ist eine Key-Value In-Memory NoSQL Datenbank und indexiert Daten durch Row Names und Column Names die auch Strings sein können. BigTable behandelt Daten als uninterpretierte Strings, obwohl die Clients  oft verschiedene Formen der strukturieren und semi-strukturieren (bei XML-Daten z.B.) Daten in diese Zeichenketten serialisieren. 

Google BigTable läuft auf dem Google File System (GFS) und basiert auf dem Chubby Lock Service. Big Table wird bei verschiedenen Google Diensten bereits produktiv eingesetzt: Google Maps, Google Earth, MapReduce, Youtube, Google Finance, Google  Analytics oder Orkut und Google Books.

MapReduce ist ein Framework für niedrig-priorisierte Berechnungen für grosse Datenbestände auf Computerclustern. Ein BigTable ist vom Datenmodell her eine einfache, verteilte, persistente multidimensionale  sortierte Map. Die Map ist indexiert durch einen Row Key, einen Column Key und einen Zeitstempel. Jeder Wert in der Map ist ein uninterpretiertes Array von Bytes. Wenn man annimmt, dass man eine grosse Anzahl von Webpages  und den dazugehörigen Informationen für verschiedene Anwendungen speichern und verwalten will so kann man diesen "Webtable" als Google BigTable folgendermassen ablegen: URL wäre der Wert für Row Keys, die zu den Webpages gehörigen Informationen (z.B.  Typos, Farbe, Hyperlinks, Schriftarten usw) die Column Names. Der Inhalt der Webseiten wird in einem Dokumentennamen CONTENT gespeichert. Diese Einträge werden je nach Zugang mit Zeitstempeln versehen. 

BigTable speichert Daten in lexikographischer Ordnung oder sortiert durch Row Keys ab. Die Row Breite ist dynamisch partitioniert. Jede Row Range wird als Tablet bezeichnet.  BigTable unterstützt Single Row Transaktionen, allgemeine Transaktionen über Row Keys werden nicht unterstützt, Zellen können als ganzzahliger Zähler verwendet werden. Clientseitige Scripts die im Adressraum der Server  laufen werden unterstützt.

Die Scripts werden mit Sawzall entwickelt, eine interpretierte, prozedurale und Domänenspezifische Sprache (domain specific language (dsl)) um grosse Datenmengen zu handhaben.  Sawzall wurde von Google für seine Anforderungen entwickelt und verwendet die bestehende Googleware: das Google File System, MapReduce, die Workqueue und Protocol Buffers. In der jetzigen Implementierung von Google BigTable ist es den  Client Scripts von der Sawzall-basierten API nicht erlaubt auf Daten in BigTable zurück zu schreiben, aber die Sawzall-API erlaubt verschiedene Formen der Daten-Transformation, das Filtern über verschiedene Ausdrücke  und die Aggregation mit einigen Operanden. Die BigTable API enthält Funktionen zur Schaffung und Löschung von Tabellen und Spaltenfamilien (gruppierte Spalten), sowie um Tabellen, Spaltenfamilien und Metadaten zu verändern. 

Mit Hilfe des verteilten Google File Systems werden Logdateien und Daten gespeichert. BigTable läuft in einer verteilten Maschinenpoolumgebung in der verschiedene Anwendungen laufen, so dass sich BigTable Rechen-Ressourcen  mit anderen Anwendungen teilen muss. BigTable benötigt ein Cluster Managementsystem um Jobs einzulasten. Das Google SSTable Dateiformat wird intern verwendet um BigTable Daten zu speichern.  BigTable verwendet einen hochverfügbaren und persistent verteilten Lock Service der Chubby genannt wurde.                 
Siehe auch:    NoSQL   datenbank   Verteilte-Datenbank   Multiversion-Concurrency-Control   In-Memory-Datenbanken   Google   Google-Server   Google-BigData   Green-Grid   

  Google-BigData

Das Google BigTable Konzept setzt auf horizontale Skalierung von Daten im Gegensatz zu relationalen Datenbanken um eine bessere Anpassungsfähigkeit der Datenarchitektur an die aktuellen Erfordernisse zu erreichen. Durch eine verteilte und horizontale  Datenbankarchitektur können Rechnerknoten lastabhängig und dynamisch angepasst werden. Google BigTable arbeitet also nicht im Relationenschema sondern dank dem NoSQL-Konzept schemafrei.  Die Folge ist die Aufweichung des ACID-Prinzips, welches für Web-Scale Datenbanken weder notwendig noch haltbar ist und das Umschwenken auf die Philosophie des BASE (Basically Available, Soft State und Eventual Consistent)  bzw. CAP-Theorems (bei verteilten Systemen werden nur 2 der 3 Bedingungen Consistency, Availability und Partition Tolerance erfüllt). 

MapReduce
Um die grossen Datenmengen effizienter verarbeiten zu können, hat Google das MapReduce-Verfahren entwickelt. Es handelt sich hierbei um 2 unabhängige Funktionen Map und Reduce die sich aus den funktionsorientierten Computer-Hochsprachen  ableiten, und jeweils in eigenen Prozessen ausgeführt werden. Das MapReduce-Framework bietet für den Anwender eine Möglichkeit der komplexen, gekapselten Datenverarbeitung: dabei werden hauptsächlich  Vergleichsoperationen ausgeführt welche Datensätze nach vom Anwender vorgegebenen Kriterien durchsuchen können. Der MapReduce-Prozess läuft dabei in zwei Schritten ab: zunächst werden die Ausgangsdaten eingelastet und auf  verschiedene Map-Prozesse verteilt. Mit Hilfe der vom Anwender erstellten Map-Kriterien ermittelt die Map-Funktion die Zwischenergebnisse. Diese werden in Zwischenspeicher abgelegt. Danach nimmt die Reduce-Funktion  diese auf und ermittelt parallel dazu die jeweiligen Suchergebnisse. Den ersten Schritt nennt man Map-Phase und den zweiten Reduce-Phase.

Google-File-System
Google BigTable verwendet das Google File System (GFS). Wie Google BigTable ist das  Google File System eine Google-proprietäre Softwaretechnologie. Das GFS ist Linux-basiert und dafür ausgelegt auf Clustern zu laufen welche mit einer großen Anzahl handelsüblicher Commodity-Server bestückt sind.  Das GFS ist für verteilte und fehlertolerante Systeme ausgelegt, was den Anforderungen der Googleware entspricht. Diese Merkmale zeigen sich bei der Behandlung des Wegfalls eines Netzwerkknotens,  ein Ereignis das im täglichen Google-Betrieb öfters stattfindet und zum Prinzip gehört um die dynamische Ein- und Anbindung von Daten bzw. Commodity-Servern zu ermöglichen: es wird nicht unterschieden  zwischen dem Ausfall eines Netzwerkknotens und dem Herunterfahren eines solchen. Dadurch ist auch das Hinzuschalten neuer Commodity-Server im RZ im laufenden Betrieb (Hot-Plugging) möglich.  Es finden weiterhin keine ReWrite-Vorgänge statt; stattdessen werden Daten einfach hinzugefügt so das keine Notwendigkeit ständiger Synchronisations-Prozesse besteht. GFS ist geclustert und teilt sich in viele Chunk-Server  auf, die über einen Master-Server verfügen. Die Chunk-Server verwalten ihre Daten in Chunks zu 64-MB. Die Speicherstruktur verfügt über eine mindestens dreifache Redundanz. Der Master-Server verwaltet hingegen nur  einen reduzierten Meta-Datensatz um Client-Anfragen effizienter verarbeiten zu können. Nach einem Client-Request an den Master-Server erhält der Client die Adresse des jeweiligen Chunk-Servers.

SSTable 
Zur internen Repräsentation der Daten setzt Google BigTable das SSTable -Format ein. SSTable (Sorted-String-Table) ist ein On-Disk File Format welches String-to-String-Mapping  einsetzt. SSTable setzt Maps ein, die, einmal geschrieben, unveränderbar sind. Es verwendet Key-Value Paare die nach Keys sortiert sind. Die Schreibvorgänge gehen sequentiell vonstatten und hängen einen Index am Ende der Datei an.  SSTable ist in Blöcke zu jeweils 64-KB organisiert. Diese werden in einem Blockindex registriert. Bei einer Anfrage wird der Blockindex in das RAM geladen um es mit Hilfe der Binärsuche zu durchsuchen. Durch  diesen vorbereitenden Vorgang können nachgelagerte HDD-Zugriffe effizienter gestaltet werden. Es besteht auch die Möglichkeit der In-Memory-Verarbeitung des ganzen SSTable.

Chubby-Lock-Service 
Zur Vermeidung von Deadlocks und zur Transaktionssteuerung setzt Goolge-BigTable den Chubby-Lock-Service ein. Der Cubby-Lock-Service ist eine Distributed Lock Manager für lose gekoppelte verteilte Systeme.  Er besteht aus 5 Replikationen inklusive einem Master und setzt den Paxos-Algorithmus ein. Paxos ist als eine Protokollfamilie zu verstehen, welche in verteilten Systemen versucht einen Ergebnis-Konsens herzustellen.  Paxos arbeitet mit Prinzipien der Fehlertoleranz und verteilten Implementierung und unterliegen den Prinzipien der State-Machine-Replication bzw. des State-Machine-Approach nach Leslie Lemport und Fred Schneider.  Paxos wird in Key-Value Umgebungen eingesetzt und ist geeignet, den Ausfall von Netwerkknoten eines Clusters zu managen. Der Chubby-Lock-Service unterstützt Google-BigTable bei der Suche nach neuen oder ausgefallenen  Tablet-Servern und der Ermittlung der Schemadaten für die Spaltenfamilie eines Tablets. Neben dem Master-Server verfügt Goolge-BigTable über eine Library und einen Tablet-Server.  Die Tabellen werden in einer dreifachen Struktur verwaltet: diese besteht aus einer Chubby-Datei welche die Adresse des Root-Tablets enthält. Im Root-Tablet sind  Referenzierungen auf die Metadaten-Tablets enthalten. Diese besitzen Informationen für die User-Tabellen. Die Maximale Anzahl der adressierbaren Tablets beträgt 2 ^ 34.  Der Chubby-Lock-Service wird Google intern heute auch als Nameserver eingesetzt.   
Siehe auch:    Google-BigTable   NoSQL   Google-Server   Google   Deadlock   Apache-Cassandra   ACID   Konsistenz   Nameserver   Hot-Swapping