Commit Graph

438 Commits (a3b88d55067c3b022e242ebc641cb563f04c4e4e)

Author SHA1 Message Date
Andrew Lamb 8399d2a159
refactor: rename delorean_table to packers () 2020-11-05 08:52:22 -05:00
Andrew Lamb 075ba0d8d1
refactor: remove delorean_table_schema crate and fold it into data_types () 2020-11-05 06:17:20 -05:00
Andrew Lamb c1abc90672
feat: Add support for gRPC tag and field references () 2020-11-05 06:04:01 -05:00
Andrew Lamb 525e34bde9
feat: Support non utf8 tag keys, and pattern matching for InfluxQL generated predicates ()
* feat: Allow binary tag references in gRPC, predicate matching patterns

* feat: New predicate format and builder

* fix: Update to work with branches

* test: Add test coverage for rpc predicate conversion

* refactor: use From trait

* refactor: make logic more idomatic

* refactor: remove spurious log message

* fix: Apply suggestions from code review

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

* refactor: use TryFrom trait

* fix: make it compile again

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>
2020-11-04 17:09:04 -05:00
Andrew Lamb 9f36914351
chore: Upgrade version of Arrow / DataFusion (3 of 3) + update code for new interfaces () 2020-11-02 11:20:44 -05:00
Andrew Lamb 6623ce9f65
feat: Add more logging for rpc, reduce low level hyper logging () 2020-10-27 11:24:44 -04:00
Andrew Lamb 2083b41a24
refactor: rename write_buffer* to take its rightful place () 2020-10-26 16:31:34 -04:00
Andrew Lamb ef501871bb
feat: remove partition_store () 2020-10-26 14:39:38 -04:00
Andrew Lamb 4e1e8dbf79
chore: Upgrade version of Arrow/DataFusion (2 of 3) ()
* chore: Upgrade version of Arrow/DataFusion (2 of 3)

* fix: Fixup error type usage and use async stream interface

* fix: post merge fixups
2020-10-26 13:49:16 -04:00
Andrew Lamb 880958d9c7
feat: switch end-to-end test to use write_buffer implementation rather than partitioned store ()
* feat: switch end-to-end test to use write_buffer implementation rather than partitioned store

* fix: Apply PR suggestions
2020-10-26 13:42:38 -04:00
Andrew Lamb a66bd4a738
feat: Implement measurement_fields gRPC route ()
* feat: Implement measurement_fields gRPC route

* fix: Apply suggestions from code review in github

Co-authored-by: Jake Goulding <jake.goulding@integer32.com>

* fix: apply code review comments locally

* fix: fix based on code review

Co-authored-by: Jake Goulding <jake.goulding@integer32.com>
2020-10-23 14:01:46 -04:00
Andrew Lamb 0b443fdb12
feat: add --num-threads CLI argument, allow single threaded operation () 2020-10-21 17:12:32 -04:00
Andrew Lamb 53b529fe19
refactor: Remove some uses of pub use ()
* refactor: Remove some uses of pub use

* fix: remove bad comment
2020-10-21 06:38:38 -04:00
Andrew Lamb b0f0f2743b
feat: Convert GroupedSeriesSetItems to GroupFrame () 2020-10-21 06:13:37 -04:00
Andrew Lamb bfb966b1f1
feat: basic read_group plumbing ()
* feat: basic read_group plumbing

* fix: Update delorean_storage/src/exec.rs
2020-10-19 11:45:46 -04:00
Andrew Lamb 6a0de3a4c9
fix: add logging to read_filter rpc route () 2020-10-16 09:37:49 -04:00
Andrew Lamb dc4898e1e4
feat: conversion between SeriesSets and ReadResponses ()
* feat: conversion between SeriesSets and ReadResponses

* fix: Address PR review comments 1

* fix: Address PR review comments 1
2020-10-16 06:37:50 -04:00
Andrew Lamb 0ef76db208
feat: implement series_query for write buffer database, tests for same ()
* feat: implement series_query for write buffer database, tests for same

* fix: fixup comments

* fix: sort field columns too
2020-10-15 17:23:14 -04:00
Andrew Lamb 206df6a325
feat: implement data fusion execution and conversion to series sets () 2020-10-13 16:53:00 -04:00
Andrew Lamb 80088ffe37
feat: gRPC plumbing + interface structures for read_filter ()
* feat: gRPC plumbing + support structures for read_filter

* fix: cleanup comments
2020-10-12 14:12:53 -04:00
Andrew Lamb 3d670fb556
feat: Implement gRPC routes tag_values and measurement_tag_values () 2020-10-06 17:07:03 -04:00
Andrew Lamb 45c4f1e24e
refactor: make table_names API consistent with tag_keys API, other cleanups () 2020-10-02 09:42:06 -04:00
Andrew Lamb 0a48c04a9b
refactor: improve predicate conversion code () 2020-10-01 17:26:39 -04:00
Andrew Lamb 2b98da593b
feat: write_database support for predicates ()
* feat: write_database support for predicates

* fix: temporarily pull in arrow fork to pick up fix for ARROW-10136

* fix: Update mutex usage based on PR feedback

* fix: more mutex polish and use OptionExt

* fix: update comments

* fix: rust-fu the table lookup

* fix: update docs

* fix: more idomatic rust types

* fix: better usage of reference types
2020-10-01 14:34:53 -04:00
Andrew Lamb 0976498dd9
feat: gRPC Predicate --> DataFusion Predicate conversion () 2020-09-30 08:19:30 -04:00
Andrew Lamb d606a1f1cd
refactor: split delorean_write_buffer/src/database.rs into multiple modules () 2020-09-28 06:20:59 -04:00
Andrew Lamb 0236522dfa
feat: Send panic information to tracing events ()
* feat: Send panic information to tracing events

* fix: PR Review improvements

* fix: PR comments

* fix: Apply suggestions from code review

Co-authored-by: Jake Goulding <jake.goulding@integer32.com>

* fix: more fixes

* fix: clarify /cleanup drop more

Co-authored-by: Jake Goulding <jake.goulding@integer32.com>
2020-09-25 14:55:58 -04:00
Andrew Lamb cbbcbd9196
refactor: remove lib.rs () 2020-09-25 10:21:11 -04:00
Andrew Lamb 77f58efca7
chore: update Arrow/Parquet/DataFusion versions, consolidate references into new crate ()
* chore: consolidate all arrow/parquet/datafusion dependencies

* chore: update datafusion version
2020-09-24 08:46:54 -04:00
Andrew Lamb 498478c066
refactor: rename delorean_storage_interface to delorean_storage () 2020-09-22 17:18:53 -04:00
Andrew Lamb d0f2902c8d
feat: implement tag_keys and measurement_tag_keys ()
* feat: implement tag_keys and measurement_tag_keys

* fix: fix timestamp bound evaluation
2020-09-22 16:42:45 -04:00
alamb 2418ee5ab0 refactor: move partitioned_store into its own module 2020-09-18 08:12:19 -04:00
Andrew Lamb 642b1b4370
refactor: move write_buffer to delorean_write_buffer crate () 2020-09-18 08:11:48 -04:00
Andrew Lamb d2c24ef7af
refactor: pull storage interface into delorean_storage_interface () 2020-09-18 07:58:19 -04:00
Andrew Lamb 5fe3bfd53c
refactor: extract WalDetails into delorean_wal_writer crate () 2020-09-18 07:47:37 -04:00
Andrew Lamb 9cb63f47ff
feat: Implement timestamp range in measurement_names gRPC call + tests () 2020-09-18 06:40:03 -04:00
Andrew Lamb d0350b9aac
refactor: move test specific database code to its own module () 2020-09-17 12:31:29 -04:00
Andrew Lamb 881c2961f6
feat: [WriteBuffer][gRPC] support for measurement_names ()
* refactor: move GrpcInputs to its own module so I can reuse it

* feat: Basic gRPC support for listing measurements, tests for same

* fix: move Fixture definition, rename client

* fix: remove confusing doc comment
2020-09-16 17:45:28 -04:00
Andrew Lamb 565e2909ea
docs: Add some additional context to write_buffer_routes.rs () 2020-09-16 07:56:10 -04:00
Andrew Lamb 358a548a0a
feat: implement skeleton Storage gRPC interface () 2020-09-15 15:30:57 -04:00
Andrew Lamb 2d55076c48
feat: Basic gRPC server tests ()
* refactor: move TestDatabaseStore to test_fixtures

* feat: Basic gRPC server tests
2020-09-15 15:11:02 -04:00
Andrew Lamb 11e16c78d9
feat: initial WriteBuffer gRPC implementation ()
* feat: initial WriteBuffer gRPC implementation

* fix: remove spurious comments found in code review
2020-09-14 15:35:41 -04:00
Andrew Lamb f9fe6cdd31
test: add test for gzip content-encoding () 2020-09-14 15:23:51 -04:00
Andrew Lamb 90eba702ca
refactor: Remove org/bucket from WriteBufferDatabase interface () 2020-09-13 06:09:19 -04:00
alamb c4a738dfbe Revert "refactor: Remove org/bucket from WriteBufferDatabase interface"
This reverts commit f7ad7afc4f.
2020-09-12 07:06:33 -04:00
alamb f7ad7afc4f refactor: Remove org/bucket from WriteBufferDatabase interface 2020-09-12 07:05:54 -04:00
Andrew Lamb 82d5f485c3
test: traits for database and tests for http handler ()
* test: traits for database and tests for http handler

* refactor: Use generics and trait bounds instead of trait objects

* refactor: Replace trait objects with an associated type

* refactor: Extract an associated Error type on the Database traits

* refactor: Remove some explicit conversions to_string that Snafu takes care of

* docs: add comments

* refactor: move traits into storage module

Co-authored-by: Carol (Nichols || Goulding) <carol.nichols@integer32.com>
2020-09-11 17:42:00 -04:00
alamb e55899f73b feat: support gzip content-encoding for api/v2/write endpoing 2020-09-10 11:49:50 -04:00
alamb 3275fc8846 docs: add comments, adjust logging levels, proper error reporting for line protcol parse errors 2020-09-10 11:10:09 -04:00
Paul Dix 8ed3a1b440
feat: Initial prototype of WriteBuffer and WAL ()
This is the initial prototype of the WriteBuffer and WAL. This does the following:

* accepts a slice of ParsedLine into the DB
* writes those into an in memory structure with tags represented as u32 dictionaries and all field types supported
* persists those writes into the WAL as Flatbuffer blobs (one WAL entry per slice of lines written, or WriteBatch)
* has a method to return a table from the buffer as an Arrow RecordBatch
* recovers the WAL after the database is closed and opened back up again
* has a single test that covers the end-to-end from the DB side
* It doesn't include partitioning yet. Although the write_lines method does actually try to do partitions on time. That'll get changed to be something more general defined by a per database configuration.
* hooked up to the v2 HTTP write API
* hooked up to a read API which will execute a SQL query against the data in the buffer

This includes a refactor of the WAL:

Refactors the WAL to remove async and threading so that it can be moved higher up. This simplifies the API while keeping just about the same amount of code in ParitionStore to handle the asynchronous writes.

This also modifies the WAL to remove the SideFile implementation, which was causing significant performance problems and write amplification. The downside is that WAL writes are no longer guarranteed atomic.

Further, this modifies the WAL to keep the active segement file handle open. Appends now don't have to list the directory contents and look for the latest file and open the file handle to do appends, which should also improve performance and reduce iops.
2020-09-08 14:12:16 -04:00