mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
No description
Changes the behavior of `AttrStore.SetAttrs()` to first verify that the attributes haven't changed using a read-only lock before obtaining a write lock to update the attributes. Since the write lock serializes access, the previous insert time sufferred lock contention when inserting a lot of duplicate attributes. With the `RWMutex`, reads can be done in parallel so multiple requests don't block each other. Below is a simple benchmark showing the performance at 1, 5, & 10 goroutines: BenchmarkAttrStore_Duplicate 100000 137120 ns/op 8428 B/op 76 allocs/op BenchmarkAttrStore_Duplicate-5 100000 417459 ns/op 8431 B/op 76 allocs/op BenchmarkAttrStore_Duplicate-10 100000 139466 ns/op 8433 B/op 76 allocs/op BenchmarkAttrStore_Duplicate 20000000 703 ns/op 368 B/op 5 allocs/op BenchmarkAttrStore_Duplicate-5 100000000 213 ns/op 368 B/op 5 allocs/op BenchmarkAttrStore_Duplicate-10 100000000 223 ns/op 368 B/op 5 allocs/op |
||
|---|---|---|
| .github | ||
| cmd | ||
| ctl | ||
| datadog | ||
| gossip | ||
| httpbroadcast | ||
| internal | ||
| pql | ||
| roaring | ||
| server | ||
| statik | ||
| webui | ||
| .dockerignore | ||
| .gitignore | ||
| .travis.yml | ||
| attr.go | ||
| attr_test.go | ||
| bitmap.go | ||
| broadcast.go | ||
| broadcast_test.go | ||
| cache.go | ||
| client.go | ||
| client_test.go | ||
| cluster.go | ||
| cluster_test.go | ||
| cmd.go | ||
| config.go | ||
| CONTRIBUTING.md | ||
| doc.go | ||
| Dockerfile | ||
| executor.go | ||
| executor_test.go | ||
| fragment.go | ||
| fragment_test.go | ||
| frame.go | ||
| frame_test.go | ||
| glide.lock | ||
| glide.yaml | ||
| handler.go | ||
| handler_internal_test.go | ||
| handler_test.go | ||
| holder.go | ||
| holder_test.go | ||
| index.go | ||
| index_test.go | ||
| iterator.go | ||
| iterator_test.go | ||
| LICENSE | ||
| Makefile | ||
| NOTES | ||
| pilosa.go | ||
| README-dev.md | ||
| README.md | ||
| server.go | ||
| stats.go | ||
| time.go | ||
| time_test.go | ||
| view.go | ||
| view_test.go | ||
An open source, distributed bitmap index.
Docs
See our Documentation for information about installing and working with Pilosa.
Getting Started
-
Start Pilosa with the default configuration:
pilosa serverand verify that it's running:
curl localhost:10101/nodes -
Follow along with the Sample Project to get a better understanding of Pilosa's capabilities.
Data Model
Check out how the Pilosa Data Model works.
Query Language
You can interact with Pilosa directly in the console using the Pilosa Query Language (PQL).
Client Libraries
There are supported libraries for the following languages:
Get Support
There are several channels available for you to reach out to us for support.
Contributing
Pilosa is an open source project. Please see our Contributing Guide for information about how to get involved.