skiplist
roaring
skiplist | roaring | |
---|---|---|
1 | 5 | |
274 | 2,366 | |
- | 1.6% | |
0.0 | 7.7 | |
over 1 year ago | 17 days ago | |
Go | Go | |
MIT License | Apache License 2.0 |
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.
skiplist
-
Skipfilter
Each subscriber is stored in a skip list. As subscribers are added, they are assigned an autoincrementing ID and the skip list grows. Skip lists are preferred over slices here due to their discontinuous nature. Subscribers can be added and removed at random and the memory usage will remain bounded.
roaring
-
I have some questions about defining a series of bits in Golang
For (3), and if you’re interested in checking if specific bits are set or not, take a look at https://github.com/bits-and-blooms/bitset and https://github.com/RoaringBitmap/roaring.
- Bitmasks - how and why to use?
-
Skipfilter
Each topic has a roaring bitmap. Each bit corresponds to a subscriber in the skip list. For each topic, head and tail cursors are also maintained to ensure that newly added subscriptions are always tested and deleted subscriptions are always evicted. Roaring bitmaps are compressed and discontinuous so memory usage again remains bounded as subscribers come and go.
-
Bit shifting blew my mind
Definitely take a look at a roaring bitmap. https://github.com/RoaringBitmap/roaring
-
Protocol buffers database, a Key-Value database on the wire
Roaring bitmaps + btrees are a rock solid indexing approach. Alternatively, bleve has a lot out of the box but that's introducing a new datastore, basically.
What are some alternatives?
treemap - Generic sorted map for Go with red-black tree under the hood
skiplist - skiplist for golang
skipfilter - An inverted bitmap index written in Go.
boomfilters - Probabilistic data structures for processing continuous, unbounded streams.
zset - ZSet is an in-memory Redis like sorted set datastructure
bitset - Go package implementing bitsets
bit - Bitset data structure
hyperloglog - HyperLogLog with lots of sugar (Sparse, LogLog-Beta bias correction and TailCut space reduction) brought to you by Axiom
golang-set - A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.
Bloomfilter
gostl - Data structure and algorithm library for go, designed to provide functions similar to C++ STL
cuckoo-filter - Cuckoo Filter go implement, better than Bloom Filter, configurable and space optimized 布谷鸟过滤器的Go实现,优于布隆过滤器,可以定制化过滤器参数,并进行了空间优化