Zu diesem Zeitpunkt war ich bei 9 Hackathons, einer davon war ein internationaler und ich habe sogar 4 davon gewonnen. Andererseits, als meine Junioren Dhruv und Tushar mir von einem Golang-spezifischen Hackathon erzählten, schleppte ich Harsh mit, denn warum nicht? Und nicht nur Harsh, ich habe auch 40 Leute aus unserem Team Point Blank mitgeschleppt, was den Hackathon letztendlich zu unserem eigenen internen Wettbewerb gemacht hat, haha.
Wir alle in unserem Team GoGoingGone (lmao) hatten gute Erfahrungen mit Golang, aber wir wollten mehr als nur ein weiteres Tool entwickeln. Wir wollten innovativ sein. Da kam mir die Idee: Lassen Sie uns eine Minisprache erstellen, um dynamische, konfigurierbare Datenpipelines zu definieren.
Ich bin Akash Singh, ein Ingenieurstudent im dritten Jahr und Open-Source-Mitwirkender aus Bangalore.
Hier ist mein LinkedIn, GitHub und Twitter
Ich bin online unter dem Namen SkySingh04 bekannt.
Fractal begann als Datenverarbeitungstool für die nahtlose Migration von Legacy-Systemen (wie SQL-Datenbanken und CSV-Dateien) auf moderne Plattformen wie MongoDB oder AWS S3. Aber wir wollten mehr als nur ein weiteres ETL-Tool. Die Idee bestand darin, es sehr flexibel und benutzerfreundlich zu machen und es Benutzern zu ermöglichen, Validierungsregeln und Transformationsregeln mit einer einfachen, deklarativen Syntax – einer Minisprache – zu definieren innerhalb des Tools.
Wir haben festgestellt, dass die meisten Tools im Bereich der Datenpipeline auf starren Konfigurationen oder benutzerdefinierten Skripten basieren. Dieser Ansatz erfordert häufig umfangreiche Programmierkenntnisse, was die Zugänglichkeit für Nicht-Entwickler einschränkt. Eine deklarative Minisprache bietet:
Bei dieser Minisprache ging es nicht darum, das Rad neu zu erfinden – es ging darum, eine Abstraktion bereitzustellen, um Datentransformationen und -validierungen zu optimieren.
Wenn dies mit einer einfachen Yaml-Dateikonfiguration kombiniert wird, dachten wir, wir hätten das Ziel erreicht, eine einfach zu konfigurierende Datenpipeline zu erstellen, die Daten von einer Quelle zur anderen in großem Maßstab verarbeiten kann.
Wir haben die Syntax so gestaltet, dass sie einfach und dennoch ausdrucksstark ist und uns auf zwei Hauptoperationen konzentriert:
FIELD("age") TYPE(INT) RANGE(18, 65) FIELD("email") MATCHES(EMAIL_REGEX) FIELD("status") IN ("active", "inactive")
RENAME("old_field", "new_field") MAP("status", {"0": "inactive", "1": "active"}) ADD_FIELD("processed_at", CURRENT_TIME()) IF FIELD("age") > 50 THEN ADD_FIELD("senior_discount", TRUE)
Diese Abstraktion ermöglichte es Benutzern, verschiedene Datensätze mit minimalem Aufwand zu verarbeiten, was die Produktivität steigerte und die Komplexität reduzierte.
Während wir gerade darüber nachdachten, wie man den Lexer und Parser dieser Sprache erstellt, nahm uns das Team von GoFr.dev mit nach oben zu einer stressabbauenden Sitzung, die voller nächtlicher Sharayis und Jam-Sessions war!
Beim Hackathon ging es nicht nur um die Erstellung der Minisprache. Wir mussten auch die umliegende Infrastruktur aufbauen, um sicherzustellen, dass Fractal:
Wir haben die Arbeit in vier Module unterteilt:
Trotz unserer starken Leistung beim GO for GOFR-Hackathon standen wir bei der Abschlussbewertung vor einer entscheidenden Herausforderung. Die Jury verlangte zusätzlich zu unserer aufgezeichneten Demo eine Live-Demonstration, und leider stießen wir während des Live-Laufs auf einen unerwarteten Fehler in unserer Parser-Logik. Angesichts der Komplexität, einen robusten benutzerdefinierten Parser innerhalb von nur 24 Stunden zu erstellen, war die Entwicklung dieser Funktion eine ehrgeizige Aufgabe, und während unsere aufgezeichnete Demo seine Funktionalität demonstrierte, erwies es sich als schwierig, unter Zeitdruck eine 100-prozentige Genauigkeit zu erreichen. Dieser Schluckauf hat uns letztendlich den Hauptpreis gekostet. Unsere Bemühungen wurden jedoch weiterhin hoch geschätzt und die klare Vision und die überzeugende Leistung unseres Teams brachten uns die Auszeichnung „Bester Pitch“ ein, was unser Potenzial und unseren Einfallsreichtum hervorhebt.
Bei Hackathons geht es oft darum, Grenzen zu überschreiten und Neuland zu erkunden. Fractal war unser Versuch, die Funktionsweise von Datenverarbeitungstools neu zu definieren – indem wir sie zugänglich, modular und entwicklerfreundlich machten.
Ich hätte mir keine gleichgesinntere Gruppe von Leuten wünschen können, die mit mir an dieser Aufgabe zusammenarbeiten würden, ohne den geringsten Zweifel die absolut besten und fleißigsten Teamkollegen. Ich freue mich darauf, was mich zu meinem nächsten Hackathon führt, darf ich sagen: Ein RUST-basierter Hackathon? xD
Schauen Sie sich Fractal auf GitHub an
Fractal ist ein flexibles, konfigurierbares Datenverarbeitungstool, das mit GoFr und Golang erstellt wurde. Fractal ist darauf ausgelegt, die Datenaufnahme aus mehreren Quellen zu verarbeiten, leistungsstarke Transformationen und Validierungen anzuwenden und die Ausgabe an eine Vielzahl von Zielen zu liefern. Mit Fractal können Sie komplexe Datenworkflows automatisieren, ohne sich um die Verwaltung untergeordneter Details kümmern zu müssen Hier ist die Dokumentation zum Einrichten einer neuen Integration in Ihrem Projekt:
Die benutzerdefinierte Syntax ermöglicht Benutzern Folgendes:
Regeln können für jede Datenquelle oder jedes Datenziel geschrieben werden, z. B. JSON, YAML, CSV, SQL-Datenbanken, Message Brokers oder Cloud Dienstleistungen.
Validierungsregeln stellen sicher, dass Daten bestimmte Qualitäts- und Integritätsanforderungen erfüllen.
Pitch Deck: Drive Link
Oder probieren Sie es selbst aus und teilen Sie uns Ihre Meinung mit!
Das obige ist der detaillierte Inhalt vonWarum wir eine Mini-Sprache für einen Golang-Hackathon entwickelt haben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!