Commit graph

115 commits

Author SHA1 Message Date
Travis
f1e3ac90d4
Determine cluster membership via gossip.
Handle resize cluster events.
Add Toplogy support.
Refactor FrameOptions.
Add tests.
2017-10-25 00:27:30 -05:00
Yuce Tekol
197e05b04a
Adds scheme to the node status 2017-10-24 01:37:41 +03:00
Travis
27921564c0
Make sure Fields gets encoded with FrameOptions 2017-09-27 12:27:45 -05:00
Travis
01fa368c6a
Import FieldValues
This PR adds the ability to import field values into RangeEnabled frames
using the `pilosa import` command.

Example:
```
pilosa import -i i -f f --field foo sample-vals.csv
```
imports data from sample-vals.csv, which contains data in the format:
```
[ColumnID, Value]
```

Also fixes a bug where `frame.rangeEnabled` was not being set on frame creation.
2017-09-27 11:43:10 -05:00
Michael Baird
62791e7a2f Merge pull request #785 from raskle/613-delete-view
Delete view API
2017-08-28 13:38:07 -05:00
Yuce Tekol
3367c69959
merged with master 2017-08-25 23:59:40 +03:00
Yuce Tekol
e89ffcccbd
Renamed inhibit* to exclude* 2017-08-23 04:57:22 +03:00
Michael Baird
ff3190e0d3 Broadcast and handle the DeleteViewMessage 2017-08-22 11:39:00 -05:00
Ben Johnson
562fba9de1
Sum() and Average() field queries. 2017-08-22 08:27:52 -06:00
Yuce Tekol
dec9893044
Adds suprressing attributes and bits for Bitmap queries 2017-08-22 15:18:10 +03:00
Linh Vo
55fac363e8 resolve proto conflict 2017-07-07 10:35:53 -05:00
Travis
9282618993
Removes QueryRequest.Quantum since it is no longer used.
This was populated by the `time_granularity` query argument, but that isn't being used either.
I believe this is left over from an early version of Pilosa prior to `Range()` query support.
2017-06-28 17:26:44 -05:00
Linh Vo
1407a25008 fix reviews, more input definition tests 2017-06-27 12:36:02 -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
Ben Johnson
0107ddffea
BSI range-encoding schema support. 2017-06-21 08:53:30 -06:00
Michael Baird
428b94dd05 Broadcast Delete InputDefinition Messages and handle on remote nodes. 2017-06-16 14:06:46 -05:00
Michael Baird
00dec45e58 Input definition "Fields" parameter name is consistent throughout now. 2017-06-14 14:23:25 -05:00
Michael Baird
1db97b9312 CreateInputDefinitionMessage now contains the definition and not just the name. 2017-06-14 14:12:07 -05:00
Linh Vo
fdacca3147 save inputdefinition as protobuf to file 2017-06-12 00:11:20 -05:00
Linh Vo
7c28e2c3f3 InputFrame struct 2017-06-09 10:27:11 -05:00
Linh Vo
8ca7c3b229 create input-defintion file 2017-06-08 15:48:00 -05:00
Linh Vo
c80bedb402 create input-definiton 2017-06-08 14:23:46 -05:00
Travis
eb47458783
Add LICENSE to internal/ folder.
Because the *pb.go files get auto-generated, we can't easily
keep the license block on the top of the *.pb.go files.
Instead, we keep a copy of the LICENSE file in the same directory
as the generated *.pb.go files.
2017-05-01 20:32:04 -05:00
Cody Soyland
3996b56b88 Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
Travis
7246e1e00d
Broadcast CreateSliceMessage when a new max slice is created 2017-04-27 11:44:13 -05:00
Michael Baird
6a8e205769 Use OwnsSlice to determine the slice list per node and index for the Cluster Node Status. 2017-04-26 16:19:59 -05:00
Travis
74bf4731f5
WIP: Implement NodeState as an attribute of *Node
NodeState is shared among nodes in the cluster (via gossip
in a gossip implementation) and cached locally in Cluster.Nodes
in order to be available to the /status endpoint.
2017-04-24 12:33:43 -05: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
Ben Johnson
d34687121f
Rename bitmap/profile to row/column. 2017-04-21 21:23:24 -06:00
Travis
95bd4913c8
adjusted DBOptions/FrameOptions logic and removed some unused tests 2017-04-20 10:41:17 -05:00
Travis
26b524a60e fix some tests and update glide.lock 2017-04-19 11:35:02 -05:00
Travis
95a546e138 adjust tests and client to comply with the new HTTP endpoints 2017-04-18 14:19:36 -05:00
Matt Jaffee
6f443f447a add signed int support
this affects the scanner/parser and makes it produce signed ints rather than
uints, and so it affects all code that is expecting unsighed ints to come out of
the parser.
2017-04-18 12:50:26 -05:00
Ben Johnson
d32edb5329 Add cacheType to frame options.
Previously the cache type (`lru` or `ranked`) was determined by
checking the ending suffix of the frame. If it ended with a `.n`
then it was ranked. Otherwise it was an LRU.

This commit changes frames so that a `cacheType` option can be
passed in during creation to set either `lru` or `ranked`.
2017-04-18 08:24:58 -06:00
Travis
4c16101a5a split internal.proto into public.proto and private.proto.
this allows us to share `public.proto` with the client libraries without needing to share
those that we only use internally.
2017-04-17 10:27:36 -05:00
Ben Johnson
306cc0b64e Opt-in to inverse storage. 2017-04-12 08:34:31 -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
Matt Jaffee
0202c9b849 add float support to proto format
floating point attrs are now fully supported
2017-03-07 15:40:50 -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
767a77294f generate internal.pb.go using standard version of protoc-gen-gofast 2017-02-08 13:02:14 -06:00
Yuce Tekol
0582508d73 Temporarily removing internal.pb.go 2017-02-08 21:50:03 +03:00
Yuce Tekol
0a76d4cb29 Using gogo protobuf v0.3 2017-02-08 21:29:42 +03:00
Yuce Tekol
1eff86f78b Moved timestamp from HTTP query to PQL 2017-02-08 16:04:19 +03:00
Ben Johnson
7a91cbdd6d Add timestamps to import/sort.
The HTTP API, client, and `pilosactl` have been updated to allow
for a timestamp formatted using the pilosa date format of
`YYYY-MM-DDTHH:MM`.
2016-12-20 10:36:33 -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
b6f0a62fdd changes MaxSlices logic to be DB-specific 2016-11-21 16:12:30 -06: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
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