Code generation is becoming really important in Go. Why even use an ORM when https://sqlc.dev/ will generate everything from vanilla SQL? Why make the frontend team write a Typescript client when https://goa.design on the backend will produce an OpenAPI schema they can just point a https://openapi-generator.tech at? Why write out GraphQL boilerplate when https://github.com/99designs/gqlgen will take your GQL typedef…
Building a High Performance Data Integration Framework in Go
21–30 of 32 posts
Re: Building a High Performance Data Integration Framework in Go
#22Code generation is becoming really important in Go. Why even use an ORM when https://sqlc.dev/ will generate everything from vanilla SQL? Why make the frontend team write a Typescript client when https://goa.design on the backend will produce an OpenAPI schema they can just point a https://openapi-generator.tech at? Why write out GraphQL boilerplate when https://github.com/99designs/gqlgen will take your GQL typedef…
Check out Ent https://entgo.io/docs/code-gen Pretty easy to generate GraphQL (most fully featured extension), OpenAPI, Protobuf, etc. from your database schema. Ent also makes it easy to implement your own generators (e.g. OAS, glue logic, etc).
It's still a good option, just sad we keep inventing more abstraction layers that are unique in each language. That is a benefit of GraphQL typedefs, JSON, and SQL - it's the same in every language.
Re: Building a High Performance Data Integration Framework in Go
#23Code generation is becoming really important in Go. Why even use an ORM when https://sqlc.dev/ will generate everything from vanilla SQL? Why make the frontend team write a Typescript client when https://goa.design on the backend will produce an OpenAPI schema they can just point a https://openapi-generator.tech at? Why write out GraphQL boilerplate when https://github.com/99designs/gqlgen will take your GQL typedef…
Re: Building a High Performance Data Integration Framework in Go
#24Code generation is becoming really important in Go. Why even use an ORM when https://sqlc.dev/ will generate everything from vanilla SQL? Why make the frontend team write a Typescript client when https://goa.design on the backend will produce an OpenAPI schema they can just point a https://openapi-generator.tech at? Why write out GraphQL boilerplate when https://github.com/99designs/gqlgen will take your GQL typedef…
Sqlc quickly breaks down when you want to do dynamic select. This is where an orm, or query builder shines
Re: Building a High Performance Data Integration Framework in Go
#25Seems like strange choices for "CloudQuery vs Others". Why not compare against FiveTran, Airbyte, Meltano or other EL tools? Also, It'd be nice to know what the transfer protocol is like. What format is used to transfer between a Source and Destination?
Re: Building a High Performance Data Integration Framework in Go
#26Earlier quoted context omitted.
Great question! We specifically started with connectors/plugins to cloud infrastructure providers and other infrastructure vendors - This is why most of our users migrated and/or compared us to the tools specified here ( https://www.cloudquery.io/docs/cq-vs-others/overview ). There are no connectors for AWS, GCP, Azure in FiveTran, Airbyte, Meltano but as we extend the number of our source plugins I believe this ques…
Will you adopt the singer interfaces? That's what Meltano does, and it's chefs kiss .
Re: Building a High Performance Data Integration Framework in Go
#27Honestly the language is the new JS and just another one to remind us how miserable software can be with half baked enterprizy solutions to just get the job done faster.
Re: Building a High Performance Data Integration Framework in Go
#28So golang macros when? Honestly the language is the new JS and just another one to remind us how miserable software can be with half baked enterprizy solutions to just get the job done faster.
Re: Building a High Performance Data Integration Framework in Go
#29Code generation is becoming really important in Go. Why even use an ORM when https://sqlc.dev/ will generate everything from vanilla SQL? Why make the frontend team write a Typescript client when https://goa.design on the backend will produce an OpenAPI schema they can just point a https://openapi-generator.tech at? Why write out GraphQL boilerplate when https://github.com/99designs/gqlgen will take your GQL typedef…
It's real shame it's kinda bad language for it. Looking at what people did with Rust macros it's shame that Go code generation story is either "just run some random binaries to compile stuff" or "put code instructing the compiler to do stuf in fucking comments " And I say it without being sarcastic but Go makes me miss C preprocessor and nothing should make anyone miss C preprocessor.
Why is it a shame? Rely on macros and this is what you get:
1. Slow compile times
2. Unsearchable (grep, sourcegraph...) code
3. Magic codebases. Longer learning curve
To me, working in a large organization, those are big downsides.
Re: Building a High Performance Data Integration Framework in Go
#30Earlier quoted context omitted.
It's real shame it's kinda bad language for it. Looking at what people did with Rust macros it's shame that Go code generation story is either "just run some random binaries to compile stuff" or "put code instructing the compiler to do stuf in fucking comments " And I say it without being sarcastic but Go makes me miss C preprocessor and nothing should make anyone miss C preprocessor.
> put code instructing the compiler to do stuf in fucking comments Funny considering how Rust does stuff. Both approaches have pros and cons. One either digs through a shitload of macros, or commits explicit auto generated code.
I yearn for ability to make error handling macros...