Commit graph

47 commits

Author SHA1 Message Date
Travis Turner
c9886b049b
Merge branch 'master' into cluster-resize working branch. 2017-12-04 22:18:57 -06:00
Yuce Tekol
8fdaea5777
fixed tests 2017-11-14 20:41:00 +03:00
Yuce Tekol
83be24f4d2
Removes column/row labels for input definition. Resolves #810 2017-11-10 18:00:45 +03:00
Travis Turner
fee1b55838
replace test ErrRangeCacheNotAllowed with ErrRangeCacheAllowed 2017-11-06 16:03:23 -06:00
Travis Turner
7e797efdc2
Allow CacheType to be set for a RangeEnabled frame (to apply to the standard frame) 2017-11-06 14:32:20 -06:00
Travis Turner
cd8542ca30
Remove FrameSchema. Move Fields to the Frame struct. 2017-10-26 11:11:05 -05:00
Travis
b91da2d0a4
Merge branch 'master' into input-definition 2017-07-26 14:44:31 -05:00
Linh Vo
326a162094 fixed review 2017-07-24 22:09:31 -05:00
Linh Vo
4aa487daac check range with CacheTypeNone 2017-07-21 13:28:20 -05:00
Michael Baird
a2ad3925d0 refactor input definition tests to use test utility package 2017-06-29 15:07:40 -05:00
Michael Baird
504d25b36f Merge remote-tracking branch 'origin/master' into input-definition
Conflicts:
	handler_test.go
	index_test.go
2017-06-29 14:32:50 -05:00
Michael Baird
56f8705407 return an error if the definition does not exist 2017-06-29 08:51:29 -05:00
Michael Baird
7cbe679640 handle input nil bit 2017-06-27 16:30:59 -05:00
Linh Vo
8653154dee merge handleAction 2017-06-27 16:29:10 -05:00
Linh Vo
1407a25008 fix reviews, more input definition tests 2017-06-27 12:36:02 -05:00
Cody Soyland
85b1a73b73 Refactor test utilities into importable package.
Remove duplicate instances of test utilities from pilosa.ctl.
Now subpackages such as pilosa.ctl may import test utilities.
2017-06-23 09:10:15 -05:00
Linh Vo
7a3baed3ac resolve proto conflict 2017-06-22 15:20:18 -05:00
Linh Vo
aa2cc13a9c change Action to InputDefinitionAction in proto 2017-06-22 14:55:29 -05:00
Linh Vo
9fd1de8f29 handle nil rowID 2017-06-21 14:38:04 -05:00
Ben Johnson
0107ddffea
BSI range-encoding schema support. 2017-06-21 08:53:30 -06:00
Linh Vo
568320ec6d fix reviews and add more test 2017-06-19 11:37:01 -05:00
Michael Baird
64b51f3bc3 Use the internal.inputdefinition object for broadcasting to other nodes. Create encoding methods to translate the JSON request to create a definition. 2017-06-15 23:45:19 -05:00
Linh Vo
2d3f244a7b couple more tests 2017-06-13 13:56:08 -05:00
Linh Vo
5ce6b5d684 CreateInputDefinition tests 2017-06-13 10:14:14 -05:00
Linh Vo
ea53216ff2 expose input definition frames, fields 2017-06-12 23:43:03 -05:00
Ben Johnson
d93ad0530a Merge pull request #503 from benbjohnson/prevent-matching-labels
Prevent row labels that match the column label.
2017-05-03 11:20:37 -06:00
Cody Soyland
3996b56b88 Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
Ben Johnson
0276c13cea
Prevent row labels that match the column label. 2017-04-28 12:59:39 -06:00
Ben Johnson
a7fdf95d04
Allow explicit time quantum during frame creation.
Changes the `Index.CreateFrame()` function to use the `TimeQuantum`
field in the options. If it is blank then it is defaulted to the
time quantum of the index.
2017-04-25 14:01:33 -06:00
Travis
2ad322c2c7
Rename DB to Index
Rename `db.go` to `index.go` and `db_test.go` to `index_test.go`
2017-04-23 21:49:27 -05:00
Travis
2cacff8e09
Rename Index to Holder
Rename `index.go` to `holder.go` and `index_test.go` to `holder_test.go`
2017-04-23 15:59:20 -05:00
Ben Johnson
d34687121f
Rename bitmap/profile to row/column. 2017-04-21 21:23:24 -06:00
Ben Johnson
eff08af112 Separate physical data layout with views.
Previously, multiple frames with different prefixes were used to separate
different data layouts. This included separating standard row/column
layouts from inverted column/row layouts as well as storing aggregate
information for timestamp data.

Unfortunately, this caused frame meta data to be copied between multiple
frames and it made it difficult to keep these frames in sync.

This commit separates these different physical layouts into `Views`.
A `Frame` now has one or more views which represent each layout.
Fragments have been moved from under the `Frame` to be contained
within the `View`.

There are two primary views:

- `standard`
- `inverse`

If a frame has a time quantum, then views are generated for these
each of the standard/inverse views. For example a time quantum
of `YMDH` for the date `2000-01-02T00:00:00Z` would create the
following views:

- `standard_2000`
- `inverse_2000`
- `standard_200001`
- `inverse_200001`
- `standard_20000102`
- `inverse_20000102`

From the user's perspective, nothing should change in PQL. Different
PQL statements will handle the appropriate view automatically. For
example, `Bitmap()` and `Profile()` will fetch using the `standard`
view or the `inverse` view, respectively. The `Range()` statement
will lookup the appropriate time-based views automatically.
2017-03-24 13:57:02 -06:00
Ben Johnson
7de0293034 Add basic schema support.
Databases and frames now require explicit creation and have the
option of setting row & column labels. If no labels are provided
then the default `id` and `profileID` labels are used.
2017-02-20 13:55:03 -07:00
Travis
659db70a57 Fixes merge conflicts related to MaxSlices.
Merge branch 'time' of github.com:benbjohnson/pilosa into benbjohnson-time
2016-12-12 09:04:23 -06:00
Ben Johnson
c6e2b1294b Add time-based frames and Range() support. 2016-12-08 12:29:49 -07:00
Travis
78666d6bba Merge branch 'master' into db-specific-slices 2016-11-29 11:59:41 -06:00
Cody Soyland
5206461d51 Migrate from Umbel to Pilosa organization on Github 2016-11-28 15:21:11 -06:00
Travis
b6f0a62fdd changes MaxSlices logic to be DB-specific 2016-11-21 16:12:30 -06:00
Ben Johnson
8f78f854dd Add context to Client, Executor, & Handler.
This changes the API of the types but does not alter the functionality
since only the `context.Background()` is currently being used. Adding
`Context` will help handle fault tolerance in the future by allowing
timeouts to be propagated across calls to different nodes.
2016-11-10 13:37:00 -07:00
Ben Johnson
56aea09ce1 Add endpoint for database deletion.
Executing a request against `DELETE /db` will now delete a database.

	curl -X DELETE "http://localhost:15000/db" -d '{"db":"d"}'
2016-10-04 09:40:59 -06:00
Ben Johnson
a063421467 serialize cache flush
This commit moves the cache flush to the `Index` and only serializes
a single fragment at a time.

Also included in this commit is the `inspect` command for the
`pilsoactl` binary. This provides insight into pilosa data files.
2016-08-05 14:58:37 -06: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
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
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
Ben Johnson
320e9811d8 bulk importer
This commit adds the pilosactl binary with a single `import` command.
The import allows users to bulk import data from a CSV file.
2016-01-02 15:10:17 -07:00
Ben Johnson
784beb074e roaring storage
This commit attaches the mmap-backed roaring bitmaps as storage
to the fragments. Currently snapshotting is not supported from
Pilosa so the WAL will grow indefinitely, however, it is not a
difficult change to make.
2015-12-17 20:35:33 -07:00