Commit graph

587 commits

Author SHA1 Message Date
Ben Johnson
08659c350b optimize intersection count
This commit moves the computation of the intersection count to
the `roaring` package so that no allocations are required. The
implementation operates at the roaring container level and has
specialized functions for array-array, array-bitmap, and
bitmap-bitmap container pairs.
2016-06-02 16:03:21 -06:00
tgruben
64e3458e09 Merge pull request #84 from umbel/slow_import
Slow import optimization
2016-06-01 14:58:35 -05:00
Todd Gruben
228865cc35 code cleanup 2016-06-01 14:55:48 -05:00
Todd Gruben
3d4eaecac0 Import optimization 2016-06-01 14:10:34 -05:00
Todd Gruben
9c5b4829e5 patched in assembly routines for reference 2016-05-27 11:15:14 -05:00
Todd Gruben
ef2cbcdc4b merge 2016-05-25 09:18:57 -05:00
Todd Gruben
38c59dcc5b no alloc on search 2016-05-25 09:12:56 -05:00
tgruben
effb9b8b9c Merge pull request #82 from benbjohnson/bitmap-refactor
Refactor in-memory bitmap storage
2016-05-24 16:31:55 -05:00
Ben Johnson
722d697228 refactor in-memory bitmap storage
This commit changes the underlying storage for `Bitmap` from a
red-black tree to a roaring bitmap. It also removes bitmaps from
the cache and only stores the bitmap count.
2016-05-24 15:01:49 -06:00
tgruben
93efe624ce Merge pull request #81 from benbjohnson/pilosa-bench
pilosa-bench skeleton
2016-05-17 17:19:29 -05:00
Ben Johnson
91874bdaee pilosa-bench skeleton 2016-05-17 15:45:24 -06:00
Todd Gruben
cc7d0abe10 Merge branch 'master' of github.com:umbel/pilosa 2016-05-13 19:59:24 -05:00
Todd Gruben
a5b84e092a changed slicewidth 2016-05-13 19:59:14 -05:00
tgruben
00f4426970 Merge pull request #79 from benbjohnson/server
Refactor main into pilosa.Server
2016-05-13 16:56:24 -05:00
Ben Johnson
a0a519bfdf refactor main into pilosa.Server
This commit refactors most of the code in `cmd/pilosa` to
`pilosa.Server` so that it can be reused in long running cluster
testing.
2016-05-13 14:39:09 -06:00
tgruben
4d22338cf1 Merge pull request #78 from benbjohnson/import-cache
Fix import cache updates
2016-05-13 10:17:34 -05:00
Ben Johnson
c9edabb23d fix import cache updates
This commit fixes a bug in the import where the cache was not being
updated and the block checksum was not being invalidated.
2016-05-11 17:32:28 -06:00
tgruben
06b3e30a10 Merge pull request #77 from benbjohnson/consensus-block-merge
Consensus block merge
2016-05-09 14:01:29 -05:00
Ben Johnson
de698aa03e consensus block merge
This commit refactors the anti-entropy system to fetch data from
all replicated blocks and only set/clear bits which deviate from
the consensus between all blocks.

An example of this is if 3 nodes had the following bits set for
a single bitmap:

	Node A: 1 2 3
	Node B:   2   4
	Node C: 1 2   4

Then only bits which are set on a majority will be set. In this
case bits 1, 2, & 4 are set but 3 only exists on a single node.

The node performing the merge would then determine the following
set/clear diffs for each node:

	Node A: clear(3), set(4)
	Node B: set(1)
	Node C: none

Once the merge is performed and all nodes receive their diff
instructions then the nodes will be in sync:

	Node A: 1 2 4
	Node B: 1 2 4
	Node C: 1 2 4

There still exists situations where bits can be reset. If Node A
is up and Node B & C are down then Node A's bits will be reset
once B & C come back online. We should add write consistency
settings for incoming writes so that we can ensure that a quorum
is written to before returning a success. This is outside the
scope of this commit though.
2016-05-06 16:19:10 -06:00
Todd Gruben
616248707b Merge branch 'master' of github.com:umbel/pilosa 2016-04-26 14:41:48 -05:00
Todd Gruben
ee95aec91c check for iterator overflow 2016-04-26 14:41:37 -05:00
Travis Turner
db47b4fcde Merge pull request #75 from benbjohnson/godep
Add protobuf/testdata, fix Makefile
2016-04-26 10:09:01 -05:00
Ben Johnson
2756c5295b add protobuf/testdata, fix Makefile
This commit re-adds the `testdata` folder that godeps strips and
also updates the `Makefile` to add a `vendor` target that will
handle this in the future.
2016-04-26 08:48:04 -06:00
Todd Gruben
cd78dd6fd1 Merge branch 'master' of github.com:umbel/pilosa 2016-04-19 09:24:07 -05:00
tgruben
02a0148981 Merge pull request #73 from benbjohnson/anti-entropy-monitor
Anti-entropy monitor
2016-04-19 09:23:56 -05:00
Todd Gruben
b565271f94 made Bitmap SetBit method public 2016-04-19 09:22:42 -05:00
Ben Johnson
243c611cb4 Merge pull request #72 from travisturner/docs
fixed typos. changed -config flag to represent prefered Go format
2016-04-18 16:45:18 -06:00
Ben Johnson
f6bb605ee8 add anti-entropy monitor 2016-04-18 16:32:27 -06:00
travisturner
3995125011 fixed typos. changed -config flag to represent prefered Go format 2016-04-15 12:50:47 -05:00
tgruben
c904a919f0 Merge pull request #71 from benbjohnson/anti-entropy
Active Anti-Entropy (AAE)
2016-04-13 14:49:45 -05:00
tgruben
9697afda9b Merge pull request #70 from travisturner/docs
update the README file with config and query information
2016-04-13 10:18:05 -05:00
Ben Johnson
8f4d7d50c3 active anti-entropy
This commit adds active anti-entropy via a merkle tree structure.
2016-04-12 19:48:32 -06:00
travisturner
40274fe6b8 update the README file with config and query information 2016-04-11 22:28:50 -05:00
tgruben
f8da0b7448 Merge pull request #68 from benbjohnson/bench
Add 'pilosactl bench' command
2016-04-01 12:17:18 -05:00
Ben Johnson
26fd00ff3e add 'pilosactl bench' command
This commit adds a simple benchmarking utility to the `pilosactl`
binary. It currently only supports individual `SetBit()` commands
but it's a good start towards making a generic benchmarking
framework at the integration level.

The subcommands and usage/help messages were also cleaned up to
output correctly.
2016-03-31 15:49:57 -06:00
tgruben
9b8a81ca4a Merge pull request #67 from benbjohnson/op-n
Snapshot after op threshold
2016-03-31 09:28:03 -05:00
Ben Johnson
c753052f78 snapshot after op threshold
This commit changes `SetBit()` and `ClearBit()` to issue a
snapshot after a certain number of calls are made on a given
fragment.

Fixes #66
2016-03-30 15:28:42 -06:00
tgruben
43aef87104 Merge pull request #65 from benbjohnson/schema
Add schema endpoint
2016-03-28 16:15:16 -05:00
Ben Johnson
c51a17cfc6 add schema endpoint
This commit adds a new HTTP handler to return a list of all databases
and frames in the index:

	GET /schema

This returns JSON in the following format:

	{
	  "dbs":[
	    {
	      "name":"d0",
	      "frames":[
	        {"name":"f0"},
	        {"name":"f1"}
	      ]
	    }
	  ]
	}

Fixes #61
2016-03-22 11:25:52 -06:00
tgruben
169c3691eb Merge pull request #64 from benbjohnson/backup-restore-cache
Add cache to fragment backup/restore
2016-03-18 09:47:38 -05:00
Ben Johnson
ab3358ae77 add cache to fragment backup/restore
This commit changes the backup format of a fragment from a
simple file stream to a tar archive which combines the data file
and the cache file.

Fixes #63
2016-03-17 15:48:48 -06:00
tgruben
7080cae2f1 Merge pull request #62 from benbjohnson/frame-restore
Add frame restore for cluster transfer
2016-03-16 09:25:01 -05:00
Ben Johnson
0ab4ee6f07 add frame restore for cluster transfer
This commit adds an endpoint to restore an entire frame from
another cluster. Multiple hosts can use this endpoint to copy
and rebalance a cluster to a new cluster.
2016-03-15 14:42:42 -06:00
tgruben
4dde1d6589 Merge pull request #60 from benbjohnson/multi-call
Add bulk call support to the query endpoint
2016-03-09 10:53:07 -06:00
Ben Johnson
569bafdc7d add bulk call support to the query endpoint
This commit changes the `pql.Query` so that it can accept one or more
top-level calls instead of only one.

The query request format change because a query with a single call is
still valid. However, the result format now returns a `results` field
that has one result for each top-level call. The `profiles` field is
still the same, however, it combines all profiles from all bitmap
responses into one return so that there's not duplicate attributes.

Fixes #59
2016-03-08 14:34:37 -07:00
tgruben
f57b9d9d6e Merge pull request #58 from benbjohnson/top-n-2
Refetch full counts for TopN()
2016-03-03 14:43:56 -06:00
Ben Johnson
5a63a14742 refetch full counts for TopN()
This commits adds refetching to get the actual TopN() count
after the top bitmaps are determined.

Fixes #57
2016-03-03 13:03:20 -07:00
tgruben
a58468fc7a Merge pull request #56 from benbjohnson/backup
Add backup/restore to pilosactl
2016-02-29 10:49:58 -06:00
Todd Gruben
24260e9d0c test for topn fill 2016-02-29 10:18:57 -06:00
Ben Johnson
5d79555d3e add backup/restore to pilosactl
This commit adds two commands:

    pilosactl backup
    pilosactl restore

The `Client` implementations have also been added to support these
commands:

    func (c *Client) BackupTo(w io.Writer, db, frame string) error
    func (c *Client) RestoreFrom(r io.Reader, db, frame string) error

Backups occur on a per-frame basis and all slices from the cluster
are packed into a single tar file. The backup tool attempts to
read from owner nodes in a random order and will retry against
the next owner if one fails.

During restore, the slices are restored to all owner nodes. This
allows users to backup a frame from one cluster and restore it
to a different one -- even if the topology of the new cluster is
different.
2016-02-29 08:38:24 -07:00