paint-brush
Was zum Teufel ist Proton?von@progrockrec
1,459 Lesungen
1,459 Lesungen

Was zum Teufel ist Proton?

von Shawn Gordon4m2023/12/31
Read on Terminal Reader

Zu lang; Lesen

Proton ist ein Open-Source-Projekt mit Apache 2.0-Lizenz, das von [Timeplus] gesponsert wird. Es ist in C++ geschrieben und wird von [ClickHouse] unterstützt. Es unterstützt sowohl historische Daten als auch Streaming-Daten. Mit einer einzigen ausführbaren Datei ist die Installation einfach. Proton verfügt über viele nützliche Funktionen, einschließlich der Möglichkeit, eine materialisierte Ansicht zum Speichern bestimmter Ereignisse zu erstellen.
featured image - Was zum Teufel ist Proton?
Shawn Gordon HackerNoon profile picture
0-item
1-item

Diese Artikelserie hat mir viel Spaß gemacht, da ich neue Technologien kennengelernt und erkundet habe. Es macht auch Spaß zu sehen, was sich seit meiner ersten Entdeckung durchgesetzt hat. Mein letzter Artikel über Apache Paimon war zu meiner großen Überraschung unglaublich beliebt, aber anscheinend war ich nicht der Einzige, der sich dafür interessierte, was zum Teufel das war. Dank dieses Artikels bin ich auf das von Timeplus gesponserte Open-Source-Projekt mit Apache 2.0-Lizenz, Proton , gestoßen. Es handelt sich um eine SQL-Datenbank, die sowohl historische als auch Streaming-Daten speichert. Der Fokus liegt auf Einfachheit und Leistung, da es in C++ geschrieben und von ClickHouse unterstützt wird. Mit einer einzigen ausführbaren Datei ist die Installation einfach.


Ein Trend, den ich gesehen habe, ist, dass immer mehr Echtzeit-Analyseanwendungen erstellt werden, aber man möchte sie nicht zweimal erstellen. Einmal für das Streaming und einmal für den historischen Backfill. Eine einzige Plattform, die Abfragen entweder im Batch- oder Streaming-Modus oder sogar im Hybridmodus durchführen könnte, bei dem Sie historische Daten mit einem Strom eingehender Daten verknüpfen, hätte eindeutige Vorteile. Es scheint, dass Proton genau dafür gebaut wurde.

Protonenübersicht

Kurz gesagt: Wir verfügen über eine ClickHouse-Datenbank und Timeplus hat Unterstützung für Streaming-Dienste hinzugefügt. Damit sollten Sie eine Flink-ähnliche Abfrage-Engine und einen Kafka-ähnlichen Streaming-Speicher mit dieser ClickHouse-Datenbank erhalten. Wie sieht das also aus?


Protonenarchitektur


An der gepunkteten Linie kommt Proton ins Spiel. Ich empfehle, die Architekturdokumente durchzulesen, um einen guten Eindruck davon zu bekommen, was möglich ist.


Um einen zufälligen Datenstrom zu erstellen und ihn mit Proton abzufragen, können wir so etwas tun:

 -- Create a stream with random data. CREATE RANDOM STREAM devices(device string default 'device'||to_string(rand()%4), temperature float default rand()%1000/10); -- Run the long-running stream query. SELECT device, count(*), min(temperature), max(temperature) FROM devices GROUP BY device; ┌─device──┬─count()─┬─min(temperature)─┬─max(temperature)─┐ │ device0 │ 2256 │ 0 │ 99.6 │ │ device1 │ 2260 │ 0.1 │ 99.7 │ │ device3 │ 2259 │ 0.3 │ 99.9 │ │ device2 │ 2225 │ 0.2 │ 99.8 │ └─────────┴─────────┴──────────────────┴──────────────────┘


Protonenfunktionen

Proton hat viele nützliche Funktionen; Was mich sofort beeindruckte, war die Möglichkeit, eine materialisierte Ansicht zu erstellen, um bestimmte Ereignisse in Proton zu speichern. Nehmen wir in Anlehnung an die Dokumentation an, Sie haben einen Kafka-Stream, der Webereignisse meldet, und Sie möchten die Berichte über defekte Links speichern, damit Sie sie später abfragen können, selbst wenn Kafka heruntergefahren ist oder die Ereignisse entfernt wurden. Es würde ungefähr so aussehen:

 create materialized view mv_broken_links as select raw:requestedUrl as url,raw:method as method, raw:ipAddress as ip, raw:response.statusCode as statusCode, domain(raw:headers.referrer) as referrer from frontend_events where raw:response.statusCode<>'200';


Wenn Sie dann die materialisierte Ansicht direkt abfragen und aus den Daten ein Balkendiagramm erstellen möchten, sieht das folgendermaßen aus:

 -- streaming query select * from mv_broken_links; -- historical query select method, count() as cnt, bar(cnt,0,40,5) as bar from table(mv_broken_links) group by method order by cnt desc; ┌─method─┬─cnt─┬─bar─┐ │ GET │ 25 │ ███ │ │ DELETE │ 20 │ ██▌ │ │ HEAD │ 17 │ ██ │ │ POST │ 17 │ ██ │ │ PUT │ 17 │ ██ │ │ PATCH │ 17 │ ██ │ └────────┴─────┴─────┘


Einige dieser Funktionen erinnern mich an Upsolver , ein Unternehmen, bei dem ich vor einigen Jahren gearbeitet habe.


Treiber für andere Sprachen sind für Java, Go und Python verfügbar. Die Verwendung von Proton mit etwas wie Redpanda würde einen minimalen Platzbedarf für das Streaming historischer Daten bedeuten.


Es stehen viele weitere Funktionen zur Verfügung, dies ist jedoch nicht als Tutorial gedacht. Ich möchte eine kurze Erklärung abgeben und die Aufmerksamkeit auf einige Funktionen lenken. Die Dokumente sind prägnant und insgesamt gut geschrieben, sicherlich besser als viele Open-Source-Projekte.

Zusammenfassung

Obwohl ich persönlich diese Art von Vereinbarung im Moment nicht brauche, war ich auf jeden Fall an Orten und habe Unternehmen gesehen, bei denen dies sehr, sehr cool wäre. So cool wie dieser Typ?

Mongole mit Schneeleopard


Wahrscheinlich nicht, aber andererseits ist nichts :). Abgesehen von der Frivolität hat das Proton-Team hervorragende Arbeit geleistet, das Projekt zu dokumentieren und es so einfach wie möglich zu installieren und zu verwenden. Ich liebe diese Single-Binary-Projekte, die kein riesiges Java-Ökosystem mit unzähligen Abhängigkeiten benötigen. Aber täuschen Sie sich nicht, Timeplus hat eine kommerzielle Version, die Ihnen mehr Möglichkeiten bietet als die Standardversion von Proton. Allerdings scheinen sie Proton sehr zu unterstützen und die Community willkommen zu heißen.


Schauen Sie sich meine anderen What the Heck is…-Artikel unter den folgenden Links an: