No description
Find a file
Seebs e167f1c7fa fancier shard-sorting
This is a rework of Nia's radix sort. Still using stdlib sort for the
tail ends of things, and should probably replace it at some point
because it's still woefully inefficient, but this gets decent
performance, and lets us do the fancy thing of doing quick partial
sorting by record-key-only to get to shards, then deciding whether
to sort by value-then-record (as for a set field) or just by record
(as for int fields), which lets us reduce the amount of re-sorting
the same data by different criteria we do.

We also use a messy code-duplication basically-bubblesort for the
inner loops because it's much cheaper for small N.

This also lets us use field-aware sorting for shards, sorting them
correctly for a corresponding field type, and add corresponding API
support and fragment support for an option to tell the fragment
code that we already ordered things in the order that's most
efficient there, to avoid a second sort that we don't otherwise
need.
2021-08-19 09:50:59 -05:00
.circleci Add apt-get update flag 2021-08-17 07:21:40 -06:00
.github FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
api/client FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
boltdb FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
client need to create rowCache lock at the top... otherwise it does nothing 2021-07-20 12:15:35 -05:00
cmd Merge branch 'master' into ma/cloud-109 2021-07-19 14:42:36 -07:00
ctl Disable /ui/usage endpoint completely when usage-duty-cycle is set to 0 2021-08-04 16:22:55 -05:00
debugstats introduce storage.Config 2021-01-20 22:05:38 -06:00
disco replace roaring.Bitmap by [][]byte 2021-05-10 18:45:23 +02:00
encoding/proto Add max memory limit to Extract() to prevent OOM 2021-08-02 08:20:12 -06:00
etcd FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
gcnotify FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
generator Address TODOs in roaring tests 2020-05-21 13:28:54 -05:00
gopsutil FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
hash FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
http Prototype ingest API 2021-08-19 09:50:59 -05:00
ingest fancier shard-sorting 2021-08-19 09:50:59 -05:00
internal Merge branch 'master' into ma/cloud-109 2021-07-19 14:42:36 -07:00
lattice Update aggregate label to cardinality 2021-08-02 19:01:37 -05:00
logger FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
lru so much lint 2019-04-16 12:07:18 -05:00
mock FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
net Address PR comments 2021-03-24 18:09:01 +01:00
pb Add max memory limit to Extract() to prevent OOM 2021-08-02 08:20:12 -06:00
pg FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
pql FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
prometheus FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
proto FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
rbf differentiate error messages between opening file and mapping it 2021-08-09 11:42:25 -05:00
roaring Prototype ingest API 2021-08-19 09:50:59 -05:00
scripts Fix benchmark file naming 2021-05-21 14:51:08 -06:00
server Disable /ui/usage endpoint completely when usage-duty-cycle is set to 0 2021-08-04 16:22:55 -05:00
shardwidth make "subdivide list by shardwidth" available for reuse 2021-08-18 13:45:20 -05:00
short_txkey pilosa: only open views with data 2020-12-19 00:03:31 +00:00
sql FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
sql2 Implement basic SQL COUNT(*) query 2021-08-13 10:41:39 -06:00
statik FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
stats FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
statsd FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
storage change default backend to RBF, remove separate RBF race target 2021-03-02 17:50:56 -06:00
synthload FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
syswrap avoid race on max count reads and writes 2020-02-21 16:38:36 -06:00
test don't use nil qcx 2021-08-18 13:45:36 -05:00
testdata Test cases for Store(Distinct) 2020-09-14 14:15:29 -05:00
testhook FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
toml Add license headers to files missing them and CI check to verify they are present. Fixes #1633 2019-04-12 11:30:41 -05:00
topology FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
tracing FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
txkey pilosa: only open views with data 2020-12-19 00:03:31 +00:00
vprint Move vprint to separate pakage 2021-03-29 14:29:19 +02:00
.dockerignore Add new Docker build process and continuous delivery 2021-02-26 14:34:14 -06:00
.gitignore add .idea to .gitignore 2021-05-24 12:18:56 -07:00
.golangci.yml fix golangci-lint complaints 2019-11-10 17:58:46 -06:00
api.go fancier shard-sorting 2021-08-19 09:50:59 -05:00
api_test.go Prototype ingest API 2021-08-19 09:50:59 -05:00
apimethod_string.go remove attributes 2021-05-14 10:28:08 -04:00
audit.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
audit_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
audit_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
barrier.go Remove lmdb dependency and references, vendor Barrier 2020-12-09 08:43:23 -06:00
barrier_test.go Remove lmdb dependency and references, vendor Barrier 2020-12-09 08:43:23 -06:00
bluegreentx.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
bluegreentx_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
bolt.go fix error formatting/spelling 2021-08-18 13:45:36 -05:00
bolt_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
broadcast.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
bsi.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
bsi_test.go introduce "fields" directory between index and field 2021-03-05 16:56:44 -06:00
cache.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
cache_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
catcher.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
CHANGELOG.md Fix typo 2019-09-17 16:01:21 -05:00
client.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
cluster.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
cluster_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
cmd.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
const_amd64.go remove lmdb as a Tx backend 2020-12-04 23:17:59 +00:00
const_other.go remove lmdb as a Tx backend 2020-12-04 23:17:59 +00:00
CONTRIBUTING.md simplify contributing instructions by removing weird upstream thing 2019-05-01 17:37:52 -05:00
dbshard.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
dbshard_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
dbshard_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
delete_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
diagnostics.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
diagnostics_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
doc.go Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
docker-compose-3.yml multi-node to single backup check 2021-07-01 14:02:16 -05:00
Dockerfile Fix incorrect build flags 2021-03-01 17:01:06 -06:00
Dockerfile-clustertests Merge branch 'master' into ma/cloud-109 2021-07-19 14:42:36 -07:00
Dockerfile.pilosa CI test for backup restore 2021-06-30 14:52:15 -05:00
Dockerfile.runner Use -y for apt-get command 2021-07-27 10:21:08 -05:00
event.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
executor.go mapperLocal: actually leave loop on read from done channel 2021-08-18 13:45:36 -05:00
executor_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
executor_test.go make import correctly reflect that it needs a single shard always 2021-08-18 13:45:36 -05:00
field.go Prototype ingest API 2021-08-19 09:50:59 -05:00
field_internal_test.go make import correctly reflect that it needs a single shard always 2021-08-18 13:45:36 -05:00
field_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
filesystem.go Add missing file 2020-08-31 09:02:46 -05:00
fragment.go fancier shard-sorting 2021-08-19 09:50:59 -05:00
fragment_internal_test.go make import correctly reflect that it needs a single shard always 2021-08-18 13:45:36 -05:00
gc.go fix some lint warnings raised in VS-Code 2019-04-17 18:10:05 -05:00
gendebug_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
generation.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
generation_debug.go testhook: leak auditing infrastructure 2020-08-24 11:26:39 -05:00
generation_nodebug.go Sources and Generations: tracking mmapped files 2019-11-12 12:14:29 -06:00
generation_test.go Tx integration milestone 2020-07-27 19:29:46 -04:00
gid.go database per shard, HolderConfig, rbf bit-wise import speedups. 2020-09-04 13:00:33 -05:00
go.mod Prototype ingest API 2021-08-19 09:50:59 -05:00
go.sum Prototype ingest API 2021-08-19 09:50:59 -05:00
hack.go fix build issue 2021-07-19 13:47:47 -07:00
handler.go make import correctly reflect that it needs a single shard always 2021-08-18 13:45:36 -05:00
holder.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
holder_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
holder_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
idalloc.go restore idalloc 2021-05-21 09:27:08 -05:00
idalloc_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
index.go make import correctly reflect that it needs a single shard always 2021-08-18 13:45:36 -05:00
index_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
index_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
iterator.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
iterator_internal_test.go rename internal_tests. fix license header 2018-07-04 10:59:08 -05:00
LICENSE Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
license.exceptions update license header check exceptions 2021-05-14 10:45:46 -04:00
like.go execute like queries on the primary's key translation database 2021-05-27 14:45:10 -04:00
like_test.go execute like queries on the primary's key translation database 2021-05-27 14:45:10 -04:00
main_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
Makefile allow Molecula copyrights 2021-08-17 15:23:31 -05:00
metrics.go remove attributes 2021-05-14 10:28:08 -04:00
mmap_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
NOTES rename slice to shard 2018-06-28 14:07:07 -05:00
NOTICE Remove a few more enterprise references 2020-06-26 15:57:21 -05:00
pilosa.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
pilosa_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
pilosa_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
pjobs.go run migration in parallel 2020-11-05 18:31:27 +00:00
pjobs_test.go run migration in parallel 2020-11-05 18:31:27 +00:00
planner.go Refactor SQL planner to inside Server 2021-08-16 13:12:16 -06:00
planner_test.go Refactor SQL planner to inside Server 2021-08-16 13:12:16 -06:00
pprof.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
rbf.go fix error formatting/spelling 2021-08-18 13:45:36 -05:00
README.md FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
row.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
row_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
rrtx.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
rrtx_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
serializer.go add a gob-encoding Serializer implementation for tests 2021-02-23 10:09:55 -06:00
server.go Refactor SQL planner to inside Server 2021-08-16 13:12:16 -06:00
server_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
snapshotqueue.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
stattx.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
testBackupRestore.sh multi-node to single backup check 2021-07-01 14:02:16 -05:00
time.go Prototype ingest API 2021-08-19 09:50:59 -05:00
time_internal_test.go avoid allocations in viewsByTime 2021-08-18 13:45:36 -05:00
tournament.sh remove instances of os.Getenv("PILOSA_TXSRC") 2021-01-21 21:18:46 -06:00
tracker.go Add 'ns' units to query history runtime json 2021-04-22 15:26:15 -05:00
tracker_test.go Update tests 2021-01-20 10:48:35 -06:00
transaction.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
transaction_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
translate.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
translator_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
tx.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
tx_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
tx_test.go make import correctly reflect that it needs a single shard always 2021-08-18 13:45:36 -05:00
txfactory.go fix error formatting/spelling 2021-08-18 13:45:36 -05:00
txfactory_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
util.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
utils_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
version.go FeatureBase renaming: version info in server log 2021-07-12 12:25:43 -07:00
view.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00
view_internal_test.go FeatureBase Renaming: changing go.mod module name for featurebase 2021-07-19 09:20:30 -07:00

FeatureBase, a distributed bitmap index

See our internal documentation, which includes all external documentation, plus many internal-only pages, listed under the "Internal" heading in the main navigation bar.

Follow along with the Sample Project to get a better understanding of FeatureBase's capabilities.