Commit Graph

1498 Commits (30d5857fd400bfb3ac68b423f682e8392a1880a7)

Author SHA1 Message Date
Edd Robinson 954da31e83 test: fix tests 2021-01-08 16:19:19 +00:00
Edd Robinson 2178a6eae4 feat: hook up record batch -> chunk to store 2021-01-08 16:19:19 +00:00
Edd Robinson b1ab6a189d feat: record batch -> read buffer column 2021-01-08 16:19:19 +00:00
Edd Robinson 8382501440 refactor: validate column types 2021-01-08 16:19:19 +00:00
Dom bd226172f5
Merge pull request #547 from jeschkies/karsten/support-azure-blob-storage
feat: Azure support for object store
2021-01-08 16:09:43 +00:00
Karsten Jeschkies 2cd383af6f feat: Azure support for object store
Closes #528

This patch adds support for Microsfot Azure Blob storage. The
implementations requires an account, a key and container name. They can
be configured via the environment variables `AZURE_STORAGE_ACCOUNT`,
`AZURE_STORAGE_MASTER_KEY` and `AZURE_STORAGE_CONTAINER`.
2021-01-08 16:27:17 +01:00
Carol (Nichols || Goulding) 6c626e8279
Merge pull request #624 from influxdata/cn/osp 2021-01-08 09:12:07 -05:00
Carol (Nichols || Goulding) 93064e5fab
Merge branch 'main' into cn/osp 2021-01-08 09:00:09 -05:00
Andrew Lamb a4be6f74c7
refactor: Remove partition key from the Chunk trait (#622) 2021-01-08 06:11:07 -05:00
Carol (Nichols || Goulding) cef0bb7c98 feat: Implement starts_with on ObjectStorePath 2021-01-07 16:51:32 -05:00
Carol (Nichols || Goulding) 535e65c02a refactor: Use itertools' extend with the iter instead of collecting 2021-01-07 16:02:23 -05:00
Carol (Nichols || Goulding) 91c4e26628 feat: Disallow parts of paths to be only one or two dots 2021-01-07 16:02:20 -05:00
Carol (Nichols || Goulding) 23782dc9b7 test: Add some tests around path building and encoding 2021-01-07 16:02:10 -05:00
Carol (Nichols || Goulding) 164c0e7357 fix: Use DELIMITER to create DELIMITER_BYTE 2021-01-07 15:23:51 -05:00
Carol (Nichols || Goulding) 37056a1753 feat: Decode PathPart's values when Displaying 2021-01-07 15:23:32 -05:00
Carol (Nichols || Goulding) b421de77c4 feat: Encode characters GCS recommends avoiding 2021-01-07 14:58:58 -05:00
Andrew Lamb 8219403fab
feat: Instantiate ReadBuffer as part of server creation (#620)
* feat: Instantiate ReadBuffer as part of server creation

* refactor: remove Store from read_buffer
2021-01-07 13:25:42 -05:00
Andrew Lamb c672bb341d
feat: Extract SQL planning out of databases (#618) 2021-01-07 13:13:30 -05:00
Paul Dix d17ef800c5
feat: add create and get database to API (#619)
* feat: add create and get database to API

This commit is start of the IOx specific API. It puts everything under /iox/api/v1 as this is the beginning of the IOx API. Creating a database is done with a PUT and a GET request can retrieve the DatabaseRules details.

* feat: add defaults for DatabaseRules for create_database

* feat: add create and get database to API

This commit is start of the IOx specific API. It puts everything under /iox/api/v1 as this is the beginning of the IOx API. Creating a database is done with a PUT and a GET request can retrieve the DatabaseRules details.
2021-01-07 12:25:37 -05:00
Carol (Nichols || Goulding) 6f6631fad4
Merge pull request #611 from influxdata/pd-object-store 2021-01-07 10:56:53 -05:00
Carol (Nichols || Goulding) 18ee1b561b feat: Use ObjectStorePath everywhere to feel out the API needed 2021-01-07 10:48:22 -05:00
Carol (Nichols || Goulding) e58607f015 fix: Add more info to a test failure message
I had stuff in my Google storage from when I was manually testing out
how paths are handled; it was hard to see that was the problem without
this extra failure text.
2021-01-07 09:21:00 -05:00
Carol (Nichols || Goulding) 44fb5b2b72 fix: Un-nest test modules
Now that the code is separated into modules, we don't need the modules
inside the test modules. So before this commit, the test names looked
like this:

```
test aws::tests::amazon_s3::s3_test_put_nonexistent_bucket ... ok
test gcp::test::google_cloud_storage::gcs_test ... ok
test disk::tests::file::length_mismatch_is_an_error ... ok
test memory::tests::in_memory::length_mismatch_is_an_error ... ok
```

and after this commit, the test names look like this:

```
test aws::tests::s3_test_put_nonexistent_bucket ... ok
test gcp::test::gcs_test ... ok
test disk::tests::length_mismatch_is_an_error ... ok
test memory::tests::length_mismatch_is_an_error ... ok
```
2021-01-07 09:20:57 -05:00
Carol (Nichols || Goulding) 55d64182f6 fix: Use @domodwyer's macro trick instead of conditional compilation 2021-01-07 09:20:09 -05:00
Carol (Nichols || Goulding) 5387499888 refactor: Reorganize imports 2021-01-07 09:20:04 -05:00
Carol (Nichols || Goulding) e36a7d3595 fix: Get Google Cloud tests compiling again 2021-01-07 09:19:58 -05:00
Paul Dix cf56c1ba9e feat: Add object store path abstraction 2021-01-07 09:19:50 -05:00
Paul Dix c1f8e89bf0 feat: Add list_with_delimiter to in memory object store
This adds the list_with_delimiter function to the in-memory object store. It also updates the function signature to require a prefix since it will always only want to list either the objects in the dir or the common prefixes.
2021-01-07 09:19:22 -05:00
Paul Dix 4b40d11e60 feat: Add list_with_delimiter to object store
This adds a new function list_with_delimiter to the object store. This commit contains just the implementation for S3, leaving the others to be completed in follow on commits.

This has a fixed delimiter to ensure a directory structure is created. This delimiter should be dependent on platform and which object store is used. For any of the cloud object stores or in memory, the delimiter should be /. For the future disk based implementation it should be dependendent on if you're running on Windows or Linux.

I didn't use Stream for the return type because I found it difficult to work with and I don't think it actually added anything useful. The return ListResult struct has the next token and I prefer that the caller explicitly makes calls that go over the network so they're more aware of what's going on, where a Stream abstracts that away so it's hidden behind the scenes. We can easilsy add a Stream based version on top of this existing API if we want.
2021-01-07 09:19:15 -05:00
Paul Dix d1ab5c0ee9 chore: refactor object_store crate
This pulls the different backing implmenetations into their own modules. They're about to get more complex so it felt like it was time to separate them out rather than building towards a single multi-thousand line lib.rs. The error type is only defined in lib and imported by the individual modules, which I think makes it easier to work with.
2021-01-07 09:19:07 -05:00
Andrew Lamb 654b520005
feat: Interface for writing and querying mutable buffer, read buffer and parquet (#615)
* refactor: Create database with mutable buffer, read buffer and parquet files

* docs: Apply suggestions from code review

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>

* fix: rename planners to clarify what they are

* refactor: simplify traits

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>
2021-01-06 17:25:46 -05:00
Andrew Lamb b476afa8c5
feat: Script to scrape benchmark results into line protocol and automate gathering numbers (#605)
* feat: Script to scrape benchmark results into line protocol

* feat: script to run benchmark on a checkout

* fix: rename

* fix: Apply suggestions from code review

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>

* docs: update comments

* fix: use a single jq command invocation rather than 4

* fix: use one jq command rather than 2

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>

* fix: check for directory existence too

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>
2021-01-05 08:35:49 -05:00
Andrew Lamb 88a17f1575
fix: Avoid hours of time recreating packers (#614) 2021-01-05 06:40:58 -05:00
Andrew Lamb 3ab867447e
fix: remove spaces in bench name (#613) 2021-01-04 15:14:11 -05:00
Andrew Lamb 0de73ec341
refactor: consistently name open/closed chunks in mutable_buffer (#612)
* refactor: consistently name open/closed chunks in mutable_buffer

* docs: update some comments

* docs: more comment tweaks

* fix: fix test
2021-01-04 11:37:42 -05:00
Andrew Lamb 9f0ff678f1
feat: Formalizes the config system for IOx, including tests (#608)
* feat: Create configuration system, port IOx to use it

* docs: Apply suggestions from code review

Co-authored-by: Paul Dix <paul@influxdata.com>

* fix: fix test for setting values

Co-authored-by: Paul Dix <paul@influxdata.com>
2020-12-31 07:02:31 -05:00
Paul Dix db6ce0503c
chore: Benchmark ReplicatedWrite (#607)
This adds benchmarks to the data_types crate for ReplicatedWrite. This is the first in a series to test benchmarking Flatbuffers vs. JSON for the WAL Segment format.
2020-12-30 12:44:32 -05:00
Andrew Lamb 08d52ea043
feat: implement partition chunk rollover + ids and timestamps (#601)
* feat: implement partition chunk rollover + ids and timestamps

* feat: add last_write_timestamp

* refactor: Use DateTime<Utc> rather than Instant

* refactor: avoid use of structure to generate ids
2020-12-29 11:00:18 -05:00
Edd Robinson 02fbce7ef7
Merge pull request #604 from influxdata/er/refactor/read-chunk
refactor: rename partition to chunk
2020-12-28 21:26:56 +00:00
Edd Robinson 937442cfa0 refactor: update partition refs to chunk 2020-12-28 21:08:56 +00:00
Edd Robinson c46cf6fdcf refactor: rename partition to chunk 2020-12-28 21:08:56 +00:00
Edd Robinson c0dc93a8cb refactor: change partition to chunk 2020-12-28 21:08:56 +00:00
Andrew Lamb 0d0ec0ce69
chore: Upgrade arrow dependencies (#603)
* chore: Update arrow dependencies to latest

* refactor: Update code to conform to new arrow api
2020-12-28 16:08:09 -05:00
Andrew Lamb 5fa77c32cc
feat: Add "Chunks" to the Mutable Buffer (#596)
* refactor: Update docs, remove unused field

* refactor: rename partition -> chunk

* feat: Introduce new partition, which is a holder for Chunks

* refactor: Remove use of wal from mutable database

* refactor: cleanups, remove last direct use of chunks

* fix: delete old benchmarks

* fix: clippy sacrifice

* docs: tidy up comments

* refactor: remove unused error types

* chore: remove commented out tests
2020-12-28 07:10:25 -05:00
Paul Dix c4952fc58d
Merge pull request #584 from influxdata/pd-routerify-app
chore: move http API over to Routerify
2020-12-26 10:38:38 -05:00
Paul Dix b998a916b3 chore: update http API with more logging and better error hanlding 2020-12-24 16:45:23 -06:00
Paul Dix 1d200c5c77 chore: move http API over to Routerify
This moves the HTTP API over to Routerify, which has the basic route parsing logic that will enable the API design for IOx.

I had a little trouble with the error handling in Routerify so I ended up creating a macro for constructing error responses in the HTTP API. I'm not sure what I think of this pattern so I'm interested in what others think. Another option would be to have two functions for each API endpoint. One which is x_handler with a Routerify function signature. Then another which is just x that has the Result<Response<Body>, ApplicationError> return type, which would make using the ? operator work in those functions. That would eliminate the need for the return_err macro.

I'm happy to refactor to that if people prefer it.
2020-12-24 16:45:20 -06:00
Edd Robinson f7febf3797
Merge pull request #582 from influxdata/er/refactor/segment-rename
refactor: rename the Segment Store to the Read Buffer
2020-12-22 21:48:11 +00:00
Edd Robinson fa8afe845d refactor: fix benchmarks 2020-12-22 21:26:05 +00:00
Edd Robinson b1aabc14b2 refactor: rename Segment to RowGroup 2020-12-22 21:26:04 +00:00