-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
There are two other options, but they both seem pretty bad as well. I could potentially use this Postgres extension to create a Postgres unsigned int data type, but it just seems kinda risky betting my entire database on this relatively small project.
It isn't. I wrote my own serializer ssh_format and you could simply write a mcro_rules to delegate most fm to underlying serializer.
https://github.com/paritytech/parity-scale-codec SCALE is used for blockchain stuff but could be useful for your use case. Is very Rust centric but still usable in other languages(like JS). It comes with a "compact encoding" feature that is used mostly for unsigned integers of variable size. And with https://github.com/paritytech/scale-info you can generate type registries/schemas that can be serialized in SCALE it self(or JSON or anything) in case you have clients that don't know the structure of the binary data.
https://github.com/paritytech/parity-scale-codec SCALE is used for blockchain stuff but could be useful for your use case. Is very Rust centric but still usable in other languages(like JS). It comes with a "compact encoding" feature that is used mostly for unsigned integers of variable size. And with https://github.com/paritytech/scale-info you can generate type registries/schemas that can be serialized in SCALE it self(or JSON or anything) in case you have clients that don't know the structure of the binary data.
For example, look at the Postcard serializer for inspiration.
No, you still derive Serialize and Deserialize for your data types. Those traits are totally independent of the Serializer/Deserializer traits. When you perform the actual serialization/deserialization you specify which serializer/deserializer to use. See the docs for more info.
I would look at speedy which is, as the name suggests, pretty fast. It encodes varints in a way that's different from LEB128, and is much quicker to both encode and decode. The format they use is at the top of this file -- you can do it just with a couple of shifts and masks, and decoding is similarly fast. Speedy also hard-branches in the code with a switch statement based on how many bytes you need, which in my tests is something like 2x faster than the alternative, despite it being a branch (it's just turns into a lookup table in assembly).