Our first offering is a tracker for makers, small businesses and contractors to show job status. Create a real time status page for your products, build trust and reduce customer inquiries.
We’re working on email notification support right now and have evidence (tracking numbers, job pictures, contracts/documents, etc) support coming next week!
Ha Yes! A pipeline assumes a "batch" of data, which is backed by an ephemeral duckdb in memory table. The goal is to provide SQL table semantics and implement pipelines in a way where the batch size can be toggled without a change to the pipeline logic.
The stream is achieved by the continuous flow of data from Kafka.
SQLFlow exposes a variable for batch size. Setting the batch size to 1 will make it so SQLFlow reads a kafka message, applies the processor SQL logic and then ensures it successfully commits the SQL results to the sink, one after another.
SQLFlow provides at least once delivery guarantees. It will only commit the source message once it successfully writes to the pipeline output (sink).
The batch table is just a convention which allows for seamless batch size configuration. If your throughput is low, or if you require message by message processing, SQLFlow can be toggled to a batch of 1. If you need higher throughput and can tolerate the latency, then the batch can be toggled higher.
Oh yes!! I've seen this a couple times. I am far from an expert in tributary so please take with a grain of salt.
Based on the tributary documentation, I understand that tributary embeds kafka consumers into duckdb. This makes duckdb the main process that you run to perform consumption. I think that this makes creating stream processing POCs very accessible. It looks like it is quite easy to start streaming data into duckdb. What I don't see is a full story around Devops, operations, testing, configuration as code etc.
SQLFlow is a service that embeds DuckDB as the storage and processing brains. Because of this, we're able to offer metrics, testing utilities, pipelines as code, and all the other DevOps utilities that are necessary to run a huge number of streaming instances 24x7. SQLFlow was created as a tool that I wish I had to for simple stream processing in production in high availability contexts :)
Stream to stream joins are NOT currently supported. This is a regularly requested feature, and I'll look at prioritizing it.
SQLFlow uses duckdb internally for windowing and stream state storage :), and I'll look at extending it to support stream / stream joins.
Could you describe a bit more about your use case? I'd really appreciate it if you could create an issue in the repo describing your use case and desired functionality a bit!
Great Article! This is also timely for me, I spent all last week deep in the postgres documentation learning about replication (wish I had this article).
I'm building kafka connect (i.e. Debezium) compatible replication:
I really like the mongo change stream API. I think it elegantly hides a lot of the complexity of replication. As a side-effect of building postres -> kafka replication, I'm also trying to build a nicer replication primitive for postgres, that hides some of the underlying replication protocol complexity!
How are you defining “B2C businesses on Main Street.”
The reason I’m wondering is because it’s striking how much more financially challenged my Main Street is compared to Vc texh.
I see so much opportunity for a small medium business consultation in the analytics and process space but these companies are like really strapped for money and largely set in their ways in my experience.
In my experience, people are open to solving their problems. It’s just the money is hard making it financially viable so it’s just the big money is just like an order of magnitude smaller.
Another thing I’ve noticed is that I think the general level of sort of like process thinking and data driven decision making in tech is at just like a higher baseline than on Main Street
A lot of my discussions are challenging how to sort of like present the problem in a way that somebody that doesn’t have decades of experience and operations understands.
Another challenge that I face regularly with Main Street companies is just people seem to be happy like they’re not trying to continuously optimize like I’m used to doing coming for a big tech. Even when it’s easy to present like positive ROI opportunities there’s just like a comfort with the way things are done and a lot of people seem just happy governed by their scaling factors in exchange for that that comfort.
For my uses it's great that it has both test suite mode and individual invocation mode. I use it to execute a test suite of HTTP requests against a service in CI.
I'm not a super big fan of the configuration language, the blocks are not intuitive and I found some lacking in the documentation assertions that are supported.
Overall the tool has been great, and has been extremely valuable.
I started using interface testing when working on POCs. I found this helps with LLM-assisted development. Tests are written to directly exercise the HTTP methods, it allows for fluidity and evolution of the implementations as the project is evolving.
I also found the separation of testing very helpful, and it further enforces the separation between interface and implementation. Before hurl, the tests I wrote would be written in the test framework of the language the service is written in. The hurl-based tests really help to enforce the "client" perspective. There is no backdoor data access or anything, just strict separation betwen interface, tests and implementation :)
Looked forward to move out day at state university in early 2000s. The university would rent dumpsters and place in the common outdoor areas. The dumpsters had the end door that would open so it was easy to walk inside of them without climbing.
I’d Spend all morning in the dumpster with some friends. Name brand clothes were good finds, also pretty much all the textbooks carried a trade in value. Lots of sealed food snacks as well.
I don’t know if the kids that threw them away were lazy or they just didn’t know about buy back, but the books easily brought me $100 for a couple hours of morning dumpster diving.
Me too :) - state university in early 2000s , would take the textbooks from the trash walk them over to the textbook exchange and pocket ~$100 for ~3 hours of work
For the us, I feel like it’s late stage individualism. This is what happens I think when people prioritize themselves over their communities, I think we have less dependence on our communities than ever thanks to the internet and being able to physically avoid community. We have less interaction than before. We can order grocery pickup and not even have to be physically around people for basic life tasks. We order next day delivery on Amazon and don’t even have to go out in the world and be in the physical presence of others :(
The article talks about how it’s more of a younger generation phenomenon suggesting older generations still maintain their friendships
I’m grappling with this myself, it requires a lot of energy to form adult friendships. I keep seeing my neighbors out at the playground, I reach out and say hey and hi and ask them how they are doing but stop short of investing the time necessary to form real friendships with them and I know deep down that it’s perpetuating late stage individualism
Yes here too, and I’m guilty of the focus on family over friends, but also my peers are too and it creates a bunch of people that used to be close that never really see each other because they prioritize their immediate family
I def agree that there is a pattern to most data pipelines:
- read from an input (source)
- perform some sort of processing
- write the data to some output (sink)
This may either be batch or continuous (stream). The inputs may change, the outputs may change.
I personally think that sql and duckdb are well positioned to do this. SQL is declarative, standardized and has decades worth of mature implementations.
The “source” can be modeled as a table.
The “sink” can also be modeled as a table.
What does a custom dsl provide over sql?
I have a side project called Sqlflow which is attempting to do something similar/
It’s not a DSL but the pipeline is standardized using the source, process, sink stages.
Right now the process is pure sql but the source and sink are declarative. SQL has so much prior art, linters and a huge ecosystem with many practitioners.
Congratulations, second streaming acquisition in recent memory, after benthos.
Arroyo on paper looks amazing, high performance, advanced streaming primitives like windows and joins.
I think / hope the foundations provide a long term alternative to flink and spark streaming, the extremely heavy jvm-based incumbents.
I only have ~5 hours of experience with it so def an ultra beginner, but it was very UI configuration heavy when I tried it. API based config was mentioned but didn’t slot into the way $dayjob provisions so it was a very hard sell.
In response to this I created a lightweight high performance dev-centric streaming solution powered by duckdb, it’s getting a little traction
Our first offering is OrderProof which records Shopify transaction evidence and generates PDF to help merchants streamline chargeback disputes.
https://turboops.io/products/orderproof
----
more about the problem here:
https://www.linkedin.com/pulse/you-losing-shopify-chargeback...