feat: Add basic Edge server structure #24552
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds the basic InfluxDB Edge server structure. There are three new crates:
influxdb3
(the new default binary),influxdb3_server
, andinfluxdb3_write
. Most of the action and definition can be found in theinfluxdb3_write
crate. I don't expect this to be the final structure and we'll likely pull the query stuff out into its own crate frominfluxdb3_server
, but I wasn't focused on that to begin with. I just wanted a basic server that can accept data, buffer in memory, and answer a query from it.I've tried to sketch out how I think the different components for writing data should work and interact. I don't think we can use the
wal
crate as is as it contains a bunch of things that don't make sense in the context of the Edge project. We may just want to use parts of it as a starting point and just dump it into theinfluxdb3_write
crate for now.My goal is to leave all existing crates that we will use from IOx unmodified. New crates in this repo should be named starting with
influxdb3_
to differentiate between the crates in here vs. what is in the IOx repo. Ideally, as we get the MVP of Edge fleshed out, we will be able to clear out any IOx code that doesn't belong in this project. I've gotten a start here.Since this is a big change, I'm inclined to just YOLO this through and we can then use it as a starting point. But I'll wait until @mgattozzi and I get a chance to talk about it tomorrow.