quick-protobuf
pebble
quick-protobuf | pebble | |
---|---|---|
3 | 11 | |
438 | 4,559 | |
- | 2.4% | |
6.3 | 9.8 | |
4 months ago | 3 days ago | |
Rust | Go | |
MIT License | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
quick-protobuf
-
Fivefold Slower Compared to Go? Optimizing Rust's Protobuf Decoding Performance
[quick-protobuf]: https://github.com/tafia/quick-protobuf
-
Add extra stuff to a “standard” encoding? Sure, why not
I actually went through all projects listed in [1] because I remember this very quirk. It turns out that there are many such libraries that have two variants of encode/decode functions, where the second variant prepends a varint length. In my brief inspection there do exist a few libraries with only the second variant (e.g. Rust quick-protobuf), which is legitimately problematic [2].
But if the project in question was indeed protobuf.js (see loeg's comments), it clearly distinguishes encode/decode vs. encodeDelimited/decodeDelimited. So I believe the project should not be blamed, and the better question would be why so many people chose to add this exact helper. Well, because Google itself also had the same helper [3]! So at this point protobuf should just standardize this simple framing format (with an explicitly different name though), instead of claiming that protobuf has no obligation to define one.
[1] https://github.com/protocolbuffers/protobuf/blob/main/docs/t...
[2] https://github.com/tafia/quick-protobuf/issues/130
[3] https://protobuf.dev/reference/java/api-docs/com/google/prot...
[4] https://github.com/protocolbuffers/protobuf/blob/main/src/go...
pebble
- Fivefold Slower Compared to Go? Optimizing Rust's Protobuf Decoding Performance
-
Hummock: A Storage Engine Designed for Stream Processing
To improve the compacting speed of L0 files, we took inspiration from the design of the CockroachDB storage engine pebble.
- RocksDB/LevelDB inspired key-value database in Go
-
Is there a lightweight, stable and embedded database library?
https://github.com/cockroachdb/pebble ?
-
Understanding Fantoms Underlying Tech & Lachesis Consensus Algorithm + The Most Recent Developments
Pebble is a LevelDB/RocksDB-inspired key-value database focused on performance. PebbleDB is replacing Fantom’s previous RPC software to match Fantom’s sheer throughput. PebbleDB is consistently faster than previous options and it has helped the Fantom network to consistently reach synchronization with the network quicker while reducing the duration of API requests.
-
Looking for fast, space-efficient key-lookup
https://github.com/cockroachdb/pebble Pure go SSD native key-value store. You could think of it as map[[]byte][]byte on persistent storage.
-
Open Source Databases in Go
Genji is a document-oriented, embedded, SQL database. It is build over Pebble which is a port of RocksDB in Go, by the authors of CockroachDB.
-
CockroachDB: The Resilient Geo-Distributed SQL Database
Out of curiosity, why write https://github.com/cockroachdb/pebble and not just use https://github.com/dgraph-io/badger?
- Recommendation for Key/Value storage
-
CGo-free sqlite database/sql driver 1.8.0 for darwin/amd64 released
There's the semi-recent pebble from the folks that make cockroach db. Haven't used it, but seems promising: https://github.com/cockroachdb/pebble
What are some alternatives?
riegeli - Riegeli/records is a file format for storing a sequence of string records, typically serialized protocol buffers.
LevelDB - LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
protobuf - Protocol Buffers for JavaScript & TypeScript.
bolthold - BoltHold is an embeddable NoSQL store for Go types built on BoltDB
nix-init - Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more [maintainer=@figsoda]
badger - Fast key-value DB in Go.
imstr - Immutable strings, in Rust.
pogreb - Embedded key-value store for read-heavy workloads written in Go
msgpack - MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small.
Redis - Redis Go client
flapigen-rs - Tool for connecting programs or libraries written in Rust with other languages
goleveldb - LevelDB key/value database in Go.