Open-Source-Programmiersprache Das kann die Big-Data-Sprache Google Logica

Autor / Redakteur: Thomas Joos / Nico Litzel

Google hat mit Logica eine neue Programmiersprache veröffentlicht, die bei der Datenanalyse und -Verarbeitung ein wertvolles Hilfsmittel ist. Logica steht als Open Source unter der Apache-2-Lizenz zur Verfügung.

Anbieter zum Thema

Logische Programmiersprachen wie Logica lösen die Probleme von SQL, indem sie die Syntax der mathematischen Aussagenlogik und nicht die natürliche englische Sprache verwenden.
Logische Programmiersprachen wie Logica lösen die Probleme von SQL, indem sie die Syntax der mathematischen Aussagenlogik und nicht die natürliche englische Sprache verwenden.
(Bild: gemeinfrei / Pixabay )

Google Logica steht in GitHub zur Verfügung. Die Sprache richtet sich vor allem an Datenwissenschaftler, Entwickler oder andere Spezialisten, die große Datenmengen verarbeiten und analysieren müssen. Logica steht für „Logik mit Aggregation“. Die logische Programmierung wurde seit den späten 60er-Jahren in der Wissenschaft entwickelt. Prolog und Datalog sind die bekanntesten Beispiele für logische Programmiersprachen. Logica ist eine Sprache der Datalog-Familie.

Logica soll Abfragen vereinfachen und verständlicher machen. Regelmäßige Abfragen lassen sich in Programmcode kapseln und dadurch leichter wiederverwenden. Mit Logica lassen sich Abfragen auch leichter testen als bei der direkten Verwendung von SQL-Abfragen. Logische Programmiersprachen wie Logica lösen die Probleme von SQL, indem sie die Syntax der mathematischen Aussagenlogik und nicht die natürliche englische Sprache verwenden. Die Sprache der formalen Logik wurde von Mathematikern speziell entwickelt, um den Ausdruck komplexer Aussagen zu erleichtern, und eignet sich für diesen Zweck viel besser als die natürliche Sprache. Logica erweitert die Syntax der klassischen logischen Programmierung, vor allem durch Aggregation.

Google BigQuery und Logica

Zum Abfragen von Informationen aus Google BigQuery, dem Data Warehouse in der der Google Cloud Platform (GCP), bietet Logica eine logische Programmiersyntax, die auch für Pipelines zur Verfügung steht. Logica ist ein Nachfolger von Yedalog, einer Sprache, die ebenfalls bei Google entwickelt wurde. Die deklarative Logikprogrammiersprache hat die Verarbeitung von Daten im Fokus. Dazu kompiliert Logica zu StandardSQL und gibt dadurch Zugriff auf die BigQuery-Engine mit dem Komfort der logischen Programmiersyntax. Ein Code-Beispiel sieht folgendermaßen aus. Dabei werden Primzahlen ausgegeben, die kleiner als 30 sind:

# Define natural numbers from 1 to 29.
N(x) :- x in Range(30);
# Define primes.
Prime(prime: x) :-
  N(x),
  x > 1,
  ~(
    N(y),
    y > 1,
    y != x,
    Mod(x, y) == 0
  );

Da BigQuery sehr leistungsfähig ist und auch mehr Leistung als viele andere Logikprogrammier-Engines hat, ist der Einsatz in verschiedenen Szenarien sinnvoll. Wer bereits mit Logikprogrammierung arbeitet, aber mehr Rechenleistung benötigt, sollte sich mit den Möglichkeiten von Logica auseinandersetzen. Das gilt auch, wenn sich Datenwissenschaftler, Ingenieure oder andere Datenspezialisten in die Logikprogrammierung einarbeiten möchten und bei der Verarbeitung von Big-Data-Umgebungen große Datenmengen verarbeiten müssen.

Logica und relationale Datenbanken betrachten Daten als Relationen. In den einzelnen Zeilen sind die Daten gespeichert, die SQL nutzt. Logische Programmiersprachen wie Logica nutzen Prädikate anstelle von Relationen. Mit Prädikaten lassen sich auf Basis von Bedingungen bestimmte Mengen an Zeilen ansprechen. Beispiele dafür sind im Blogbeitrag „Logica: organizing your data queries, making them universally reusable and fun“ zu finden.

Sind Datenverarbeitungen notwendig, werden diese als Folge von Operationen auf diesen Relationen betrachtet. SQL basiert auf der natürlichen Sprache, um einfachen Zugang zu Datenbanken zu ermöglichen. Allerdings können Abfragen schnell kompliziert und dadurch auch schwer zu verstehen sein. Logica kompiliert das Logikprogramm in einen SQL-Ausdruck, sodass es auf BigQuery ausgeführt werden kann. Google will in Zukunft weitere Engines in Logica einbinden. Experimentelle Unterstützung für PostgreSQL und SQLite sind in Logica bereits enthalten.

Google Logica lernen und nutzen

Um Google Logica zu verstehen und die Programmiersyntax zu beheben, bietet Google ein Tutorial an. Zum Download von Google Logica gehören auch Beispiele, die sich mit dem Tutorial erlernen lassen. Es ist möglich, von CoLab aus auf Logica zuzugreifen. Auch die Verwendung des Befehlszeilentools von Logica ist möglich.

Um Logica-Programme auf BigQuery auszuführen, wird ein Google-Cloud-Projekt benötigt. Danach lassen sich Logica-Programm in CoLab ausführen. Dazu wird die Projekt-ID benötigt. Zusätzlich wird Python3 benötigt, wenn Logica lokal ausgeführt werden soll. Logica unterstützt Module und Importe. Außerdem kann die Programmiersprache über ein interaktives Python-Notebook verwendet werden. Das ermöglicht auch das Teilen von Abfragen und den Tests von Programmen einfacher.

Für die lokale Ausführung wird noch das BigQuery-Kommandozeilentool „bg“ benötigt (https://cloud.google.com/bigquery/docs/bq-command-line-tool). Dieses ist Bestandteil des Google Cloud SDK. Die Installation und ein erster Test können mit dem folgenden Code und Pip erfolgen:

# Install.
python3 -m pip install logica
# Run:
# To see usage message.
python3 -m logica
# To print SQL for HelloWorld program.
python3 -m logica - print Greet <<<'Greet(greeting: "Hello world!")'

Mehr dazu ist auf der Projekt-Seite von Logica zu finden.

Fazit

Wer große Datenmengen verarbeiten muss und mit SQL arbeitet, sollte sich mit logischen Programmiersprachen wie Logica auseinandersetzen. Da die Sprache kostenlos zur Verfügung gestellt wird, kann es durchaus sinnvoll sein, sich mit den Möglichkeiten der Sprache auseinanderzusetzen.

Selbst wenn der Einsatz der Sprache nicht geplant ist, kann die Syntax Einsichten in die Möglichkeiten von logischen Programmiersprachen geben. Allerdings ist Google leider auch bekannt dafür neue Projekte immer mal wieder einzustellen. Bei Logica ist das zwar durchaus unwahrscheinlich, aber nicht unmöglich.

Die Datenverarbeitung spielt eine immer wichtigere Rolle, auch im Zusammenhang mit KI/ML. Aus diesem Grund sind auch SQL-Datenbanken und SQL immer wichtiger. Logische Programmiersprachen, die sich mit dem Thema auseinandersetzen, sind daher unerlässlich. Allerdings werden Programmiersprachen sicher nicht SQL in den nächsten Jahren ersetzen können.

(ID:47723717)