現時点で、私は 9 回のハッカソンに参加しており、そのうち 1 回は国際的なもので、そのうち 4 回 で優勝しました。またしても、私の後輩の Dhruv と Tushar が Golang 固有のハッカソンについて教えてくれたとき、私は Harsh を連れて行きました。そして、Harsh だけでなく、私たちのチーム Point Blank からも 40 人を引き連れたので、最終的にはハッカソンを私たち独自の社内コンテストにすることになりました (笑)。
私たちのチーム GoGoingGone (爆笑) は全員、Golang を使用した経験が豊富でしたが、単に別のツールを構築する以上のことをしたいと考えていました。私たちは革新したかったのです。そのとき、動的な構成可能なデータ パイプラインを定義するために、ミニ言語を構築してみようというアイデアが浮かびました。
私はアカシュ シンです。工学部 3 年生で、バンガロール出身のオープンソース コントリビューターです。
これが私の LinkedIn、GitHub、Twitter です
オンラインでは SkySingh04 という名前で活動しています。
Fractal は、レガシー システム (SQL データベースや CSV ファイルなど) から MongoDB や AWS S3 などの最新のプラットフォームにシームレスに移行するためのデータ処理ツールとして始まりました。しかし、私たちが望んでいたのは単なる ETL ツールではありませんでした。このアイデアは、非常に柔軟でユーザーフレンドリーにし、ユーザーがシンプルな宣言構文、つまりミニ言語で検証と変換ルールを定義できるようにするというものでした。ツール内。
データ パイプライン領域のほとんどのツールが厳格な構成またはカスタム スクリプトに依存していることがわかりました。このアプローチには多くの場合、高度なプログラミングの専門知識が必要となるため、開発者以外のアクセシビリティが制限されます。宣言型ミニ言語は以下を提供します:
このミニ言語は車輪の再発明に関するものではなく、データ変換と検証を合理化するための抽象化を提供するものでした。
これを単純な yaml ファイル構成と組み合わせることで、あるソースから別のソースに大規模にデータを処理できる、簡単に構成できるデータ パイプラインを作成できると考えました。
次の 2 つの主要な操作に重点を置き、シンプルでありながら表現力豊かになるように構文を設計しました。
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)
この抽象化により、ユーザーは最小限の労力で多様なデータセットを処理できるようになり、生産性が向上し、複雑さが軽減されました。
この言語のレクサーとパーサーを作成する方法を考えている最中に、GoFr.dev のチームは私たち全員を 2 階のストレス解消セッションに連れて行ってくれました。それは深夜のシャライとジャム セッションでいっぱいでした。
ハッカソンはミニ言語を作成するだけではありませんでした。また、Fractal が次の状態になるように、周囲のインフラストラクチャも構築する必要がありました。
作業を 4 つのモジュールに分割しました:
GO for GOFR ハカソンでは好成績を収めたにもかかわらず、最終評価では重大な課題に直面しました。審査員は録画したデモに加えてライブ デモンストレーションを要求しましたが、残念ながらライブ実行中にパーサー ロジックで予期しないバグが発生しました。わずか 24 時間以内に堅牢なカスタム パーサーを構築するという複雑さを考えると、これは野心的な開発機能であり、録画されたデモでその機能が紹介されましたが、時間の制約の下で 100% の精度を達成するのは難しいことが判明しました。この問題により、最終的に最優秀賞を逃してしまいました。しかし、それでも私たちの努力は高く評価され、私たちのチームの明確なビジョンと説得力のある成果により、私たちの可能性と創意工夫を強調する「ベストピッチ」の栄誉を獲得しました。
ハッカソンは、多くの場合、限界を押し広げ、未知の領域を探索することを目的としています。 Fractal は、データ処理ツールをアクセスしやすく、モジュール式で開発者にとって使いやすいものにすることで、データ処理ツールの動作方法を再定義するという私たちの試みでした。
これ以上に同じ志を持った人々が私と一緒にこの仕事に取り組んでくれることを望むことはできませんでした。間違いなく最高で勤勉なチームメイトです。次のハッカソン、あえて言えば、RUST ベースのハッカソンに参加するきっかけを楽しみにしています。 xD
GitHub で Fractal をチェックしてください
Fractal は、GoFr と Golang で構築された柔軟で構成可能なデータ処理ツールです。 Fractal は、複数のソースからのデータの取り込みを処理し、強力な変換と検証を適用して、幅広い宛先に出力を配信するように設計されています。 Fractal を使用すると、低レベルの詳細を管理する必要なく、複雑なデータ ワークフローを自動化できます。 プロジェクトで新しい統合を設定するためのドキュメントは次のとおりです:
カスタム構文を使用すると、ユーザーは次のことが可能になります。
ルールは、JSON、YAML、CSV、SQL データベース、メッセージ ブローカー、または クラウドサービス.
…
ピッチデッキ: ドライブリンク
または、ご自身で試してみて、ご意見をお聞かせください!
以上がGolang ハッカソン用のミニ言語を構築した理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。