Wie Kinetica unvorhersehbare Daten analysiert
Die technische Basis
Kinetica hat in Konkurrenz zu Oracle oder SAP HANA eine schnelle In-Memory-Datenbank entwickelt, die auf Basis preisgünstiger Standard-Hardware und zusammen mit einer Nvidia-GPU läuft. Laut CEO Vij ist die Lösung 100-mal schneller als traditionelle Datenbanken bei lediglich «einem Zehntel von deren Hardware-Kosten».
GPUs (Graphics Processing Units) waren ursprünglich für mathematische Berechnungen zur Wiedergabe von Bildern und Grafiken entwickelt worden, um die CPUs (Central Processing Units) zu entlasten, die solchen Aufgaben oft nicht gewachsen waren. Die Architektur von GPUs ist auf parallele Prozesse ausgelegt und kann deshalb viele Berechnungen zur gleichen Zeit vornehmen. Zum Marktführer auf diesem Sektor hat sich durch viele Innovationen Nvidia enwickelt, das heute zu den finanziell erfolgreichsten IT-Konzernen zählt und bereits mehr als zehn andere Hersteller übernommen hat, zuletzt im März 2019 den israelischen Chip-Produzenten Mellanox Technologies für 6,8 Milliarden Dollar in Cash. Nvidia ist damit zu einem der wenigen ernsthaften Konkurrenten des Chip-Marktführers Intel aufgestiegen.
Die GPU-Revolution
Kinetica setzt Nvidias CUDA-APIs für seine GPU-Karten ein, die mehrere Tausend Processing Cores enthalten und hochperformante Aufgaben erledigen können. Aus Sicht von Kinetica haben GPU-Datenbanken eine Revolution eingeläutet: «GPU-beschleunigte Datenbanken haben den Bedarf an spezialisierten Datenarchitekturen reduziert, mit denen man die Daten für Suchoperationen (Queries) restrukturieren und optimieren musste. Diese neuen Datenbanken sind besonders für die Arbeit mit Datensätzen bei IoT (Internet of Things), Webdaten und Transaktionsdaten für Unternehmen geeignet, bei denen Muster und Einblicke schnell erkannt werden müssen, und das möglichst zeitnah. Selbst NoSQL-Ansätze sind mit komplexen und zeitnahen Suchanfragen und Berechnungen überfordert. Machine Learning und Predictive Analytics sind weitere Anwendungsgebiete, bei denen fortgeschrittene Tools für Algorithmen und Modelle gefragt sind. Mit ‹User-defined Functions› (UDF) können Algorithmen und Codes für die schnelle Verarbeitung in den Datenbanken angepasst werden. Solche UDFs können in C++, Java oder Python geschrieben werden.»
Die Analysten von 451 Research beschreiben 2017 in dem Paper «Think outside the CPU: the emergence of the GPU-Powered database» den Unterschied zwischen CPU und GPU so: «Manchmal werden CPUs und GPUs dargestellt, als sei der eine Ansatz besser als der andere. In Wirklichkeit sind die beiden Architekturen sehr unterschiedlich, sodass die Gefahr besteht, Äpfel mit Birnen zu vergleichen. Allgemein gesagt ist eine CPU ein sehr guter, leistungsfähiger Prozessor, der eine Reihe von komplexen Aufgaben bewältigen kann. Eine GPU ist auf der anderen Seite ein spezialisierter Prozessor, der bestimmte Aufgaben sehr gut abarbeiten kann, aber nicht alle.»
CPUs gehen in der Regel seriell vor, sodass Aufgaben in einer bestimmten Reihenfolge erledigt werden. GPUs dagegen verarbeiten Daten parallel, wodurch bestimmte Arbeiten gleichzeitig durchgeführt werden können. GPUs sind daher nicht pe se besser als CPUs – es kommt auf den Einsatzzweck an. 451 Research zufolge können GPUs bei zusammengesetzten Aufgaben performanter sein, während sie bei Updates und Löschaufgaben wesentlich langsamer sind als CPUs.
Das Besondere an Kinetica ist vor allem die hybride Architektur aus GPU und CPU und deren Zusammenspiel mit dem Kernstück von Kinetica, einer vektorisierten säulenartigen Datenbank, die speziell für Analytics-Aufgaben entwickelt worden ist. Daten, die bei Kinetica ankommen, gehen zuerst in den Memory-Bereich und werden mit Beginn einer Query automatisch auf CPUs und GPUs verteilt. Die Daten können jedoch auch zunächst dauerhaft auf einer Festplatte abgelegt werden, bevor sie in die MMP-Architektur (Massively Parallel Processing) zur Analyse eingepflegt werden.