An open source time-series database for fast ingest and SQL queries
APACHE-2.0 License
Bot releases are visible (Hide)
Published by bluestreak01 about 3 years ago
This release focuses on bug fixes and includes changes relating to out-of-order ingestion, InfluxDB line protocol, backups, and filesystem fixes. These fixes enhance the reliability of the system through error prevention and improved stability.
LATEST BY
column filter if it is indexed (#1327)long
to GeoHash
implementation (#1319)lt join
for equal timestamps (#1321)N + 1
entries with the last entry being the size of the variable-length columnsymbol.d
column on Windows where the order of closing files was incorrectPublished by bluestreak01 about 3 years ago
Release version 6.0.5 introduces support for geospatial data in QuestDB via the addition of geohash
types. Geohashes encode geographic areas as base-32 strings, and native support for this type allows for fast and efficient querying and storage of geodata. For more information on geospatial support in QuestDB, including examples and references, see the QuestDB geohash documentation.
Additional features are new timestamp_floor()
and timestamp_ceil()
functions, improvements on the performance of first()
and last()
functions, out-of-order parameter support via REST API, and multiple bug fixes. These fixes and features improve application stability and enhance the system's flexibility of use.
within
SQL operator - SIMD accelerated GeoHash prefix search with time-slicefirst()
and last()
aggregation functions for scanning indexmake_geohash()
function (#1265)timestamp_floor()
and timestamp_ceil()
implementations (#1300)commitLag
and maxUncommittedRows
to /imp
(#1203)Published by bluestreak01 over 3 years ago
Release version 6.0.4 focuses on community-driven topics raised with us recently by our users. The features included are performance improvements, increased parallelization of existing code, and calendar alignment for SAMPLE BY
queries. Also included is a framework for exposing Prometheus metrics by Piotr Rżysko. The addition of Prometheus metrics is an exciting feature that we expect will be continuously developed with more types of counters and gauges added as we get feedback on its use.
LATEST BY
queries with indexed symbol #1084 #1131
first()
and last()
functions optimized within SAMPLE BY
#1157
SAMPLE BY
can be aligned to calendar values #1133
LATEST BY
queries #1190
SAMPLE BY
without explicitly selecting timestamp columns #1189
null
values into columns #592
symbol
types are implicitly cast to strings in string functions #1056
SAMPLE BY
queries using JOIN
do not need explicit designated timestamp in subquery #867
txn-inflight
errors #1082
The addition of special handling for null
in #1179 introduces changes that enforce timestamps having only positive values. This means that timestamps cannot predate epoch 0 in UTC, disallowing pre-1970 values.
Published by bluestreak01 over 3 years ago
This release is focused primarily on stability of newly-implemented features. Particular attention is in the recently-implemented ingestion mechanism designed for out-of-order data. This release enhances the reliability of this feature and enhances the flexibility of the system.
-
(negation) implementation for all numeric types (#1070)to_timezone()
and to_utc()
timestamp functions (#1062)IN
with bind variables, i.e. IN ($1)
to work as with const literals (#1058)io.questdb.cairo.sql
packagenull
values in designated timestamp as select (#1066)Published by bluestreak01 over 3 years ago
This is a maintenance release to improve overall system stability. We also added several requested SQL functions.
log
and sqrt
implementations (#1050)latest by
implementation to do with incorrectly calculated column cross-indexes (#1038)Published by bluestreak01 over 3 years ago
Out-of-order (O3) performance is heavily reliant on correctly configured hysteresis values. In 6.0.0, it is very easy to reset these values to 0 with alter table
statements, causing ingest performance degradation. This version address fragility of the settings by fixing bugs in all affected alter table
variations.
Additionally we made an effort to make timestamp search more coherent. You will be able to search consistently on timestamp represented by string values.
Published by bluestreak01 over 3 years ago
The following changes are a delta of version 5.0.6.1 and therefore may include changes announced in 6.0.0 prereleases.
Version 6.0.0 adds support for out-of-order (O3) record ingestion on-the-fly, and as a result, does not enforce that records appear at QuestDB in strict chronological order. O3 support adds flexibility and efficiency of use to the system and provides compatibility with the Time Series Benchmark Suite (TSBS) which is used to reliably measure and compare the performance of time series databases. Also included with this version is a a massive internal revision of InfluxDB Line Protocol (ILP) ingestion which brings significant performance improvements, alongside multiple UI fixes for the Web Console and SQL features.
fileName
parameter can be specified for the /exp
endpoint for CSV exports (#830)getSQLKeywords
method (#836)12e-20
) (#957)LIMIT -1
returns last row as expected (#831)ORDER BY
query returns correct values on non-cached symbol
types (#877)-
underscore _
for compatibility with InfluxDB Line Protocol messages (#859)Users who wish to run QuestDB 6.0 in an embedded capacity in a Maven project may choose between JDK versions.
JDK11
<dependency>
<groupId>org.questdb</groupId>
<artifactId>questdb</artifactId>
<version>6.0.0</version>
</dependency>
JDK8
<dependency>
<groupId>org.questdb</groupId>
<artifactId>questdb-jdk8</artifactId>
<version>6.0.0</version>
</dependency>
Published by bluestreak01 over 3 years ago
Version 6.0.0-beta includes bug fixes relating to ingestion subsystems, SQL execution and type handling. This release adds support for out-of-order (O3) record ingestion on-the-fly and as a result, does not enforce that records appear at QuestDB in strict chronological order. O3 support adds flexibility and efficiency of use to the system and provides compatibility with the Time Series Benchmark Suite (TSBS) which is used to reliably measure and compare the performance of time series databases. Also included with this version is a a massive internal revision of InfluxDB Line Protocol (ILP) ingestion which brings significant performance improvements, alongside multiple UI fixes for the Web Console and SQL features.
fileName
parameter can be specified for the /exp
endpoint for CSV exports (#830)getSQLKeywords
method (#836)12e-20
) (#957)LIMIT -1
returns last row as expected (#831)ORDER BY
query returns correct values on non-cached symbol
types (#877)-
underscore _
for compatibility with InfluxDB Line Protocol messages (#859)Published by bluestreak01 over 3 years ago
SQL: timestamp operators support time range with modifier (#802) Piotr Rżysko
SQL: coalesce function (#799) Alex Pelagenko - Documentation
SQL: function factory cache automatically derives bool operators from '=', '>' etc. (#796) Piotr Rżysko
Web Console: remove google tag manager (#803)
SQL: make JoinRecordMetadata metadata case insensitive (#800)
SQL: wrong results / exception when latest by with filtering (#808)
SQL: correctly calculate vector frames when partition interval is used (#804)
Published by bluestreak01 over 3 years ago
Published by bluestreak01 almost 4 years ago
Published by bluestreak01 almost 4 years ago
Published by bluestreak01 about 4 years ago
Published by bluestreak01 about 4 years ago
group by
clause, fixed numerous SQL bugs and added set operations except
and intersect
.Published by bluestreak01 over 4 years ago
Migrated to Java 11 (#272). Fixed #154
SQL: vectorized group by hour(timestamp) (#398)
SQL: cancel active read-only queries on client disconnect; added resource constraints (#396)
SQL: vectorized count() execution (#382)
SQL: vector aggregation for time range searches (#380)
SQL: Add all_tables() and table_columns(...) functions (#337)
SQL: show tables
and show columns
(#334)
SQL: less than join implementation (lt join
)
SQL: implement negated and commutative boolean function factories (#266)
SQL: limiting impact of joins on hardware with configuration
SQL: Limit the number of rows returned in HTTP requests (http.security.max.response.rows) (#347)
SQL: improved accuracy of round() by more consistent use of tolerance. The latter is adjusted to be lower. JsonQueryProcessor now prints doubles up to scale of 12. (#301)
SQL: abs(double) implementation + unbranching (#318)
SQL: round() unbranching (#317)
Web console: introduce new color scheme and new layout
Web console: migrate code editor to React + overhaul query result experience (#376)
Web console: migrate grid/chart container to React (#386)
Web console: migrate Footer container to React (#339)
Web console: add custom layout for small screens (#389)
Web console: disable "Import" section when readOnly mode is on (#357)
Web console: add Saved Queries and support for new config file (#352)
Web console: new Schema component - fetch tables and columns from server + add tooltips (#340)
Web console: turn the logo in top left corner into a link (to questdb.io) (#328)
Web console: open documentation links in a new tab - #299 (#325)
Server: added all properties to release server.conf (#384)
Server: tracking requests and bytes per connection, tests for new configuration values, passing FD to execution context (#361)
Server: questdb can be configured to limit the number of in memory rows (#308)
Server: questdb can be configured as globally read-only
SQL: order by on column with function throws exception. #288 (#289)
SQL: order by does not validate columns correctly. #284 (#305)
SQL: order by timestamp descending bug. #287 (#306)
SQL: support single character symbol. #279 (#311)
SQL: asof join error unless timestamp is selected (#310)
SQL: support millis timestamp in import (#362)
SQL: support uppercase 'DROP', 'ADD', 'ALTER' in ALTER TABLE. #275 (#276)
SQL: GORM sends ';' after login, making sure we reply to that. (#388)
SQL: PSQL port in docker container and documentation (8892 -> 8812). (#271)
SQL: where clause outside of join sub-query was discarded (failed to properly move inside of sub-query) (#387)
SQL: alter table add column symbol does not respect cached flag - #374 (#385)
SQL: insert as select without nominating timestamp - #364 #349 (#365)
SQL: binary search scan for timestamps (#371)
SQL: avg() ksum() nsum() sum() handling of infinity #313 (#338)
SQL: microsecond timestamp (#335)
SQL: partial/short date in where clause >=, > ,<, <= #323 #265 (#333)
SQL: timestamp search issue with partial date. Equality fix #323 (#331)
SQL: problem with asof join with where clause. also dangling where statement fix. Fixed #307 (#326)
Web console: disable warning for end of line check (#324)
Web console: remove unused deps/assets which reduces the bundle from 2.1MB to 800KB
Web console: remove unnecessary comma when inserting code in the editor
Published by bluestreak01 over 4 years ago
where
clausewhere
clause in latest by
queryc5.metal
AWS instance, which has two Intel 8275CL 24-core CPUs and 192GB of memory. QuestDB was running on 16 threads pinned to NUMA zone 0. Clickhouse is using all threads (96 - hyperthreadin on)
Description | QuestDB | Clickhouse |
---|---|---|
DDL | CREATE TABLE test_double AS(SELECT rnd_double(2) FROM long_sequence(1000000000L); |
CREATE TABLE test_double (val Nullable(Float64)) Engine=Memory; |
Import | Not required | clickhouse-client --query="INSERT INTO test_double FORMAT CSVWithNames;" < test_double.csv |
Naive sum | SELECT sum(val) FROM test_double; |
SELECT sum(val) FROM test_double; |
Kahan sum | SELECT ksum(val) FROM test_double; |
SELECT sumKahan(val) FROM test_double; |
Description | QuestDB | Clickhouse |
---|---|---|
DDL | CREATE TABLE test_double AS(SELECT rnd_double() FROM long_sequence(1000000000L); |
CREATE TABLE test_double (val Float64) Engine=Memory; |
Import | Not required | clickhouse-client --query="INSERT INTO test_double FORMAT CSVWithNames;" < test_double.csv |
Naive sum | SELECT sum(val) FROM test_double; |
SELECT sum(val) FROM test_double; |
Kahan sum | SELECT ksum(val) FROM test_double; |
SELECT sumKahan(val) FROM test_double; |
Published by jaugsburger over 4 years ago
We have implemented SIMD-based vector execution of queries, such as
select sum(value) from table
This is around 100x faster than non-vector based execution. This is just the beginning. We are vectorising more operations.
Try our first implementation in this release and stay tuned for more features in the upcoming releases!
Metadata file format has been changed to include a new flag for columns of type symbol. It is necessary to convert existing tables to new format. Running the following sql: repair table myTable
, will update the table metadata.
Published by bluestreak01 over 4 years ago
Metadata file format has been changed to include version and more column flags. It is necessary to convert existing tables to new format. For more information please follow this guide.
select * from trades where ts>'2015-01-02T00:00:00.000Z' and ts<'2015-01-02T10:30:00.000Z' and sym in ('EEM', 'VXX', 'BCLI', ...) order by sym
SQL: double-to-string implementation parses IEEE number, performance is up 80% on simpler values and 30% on complex ones
SQL: aggregation without key, e.g. no 'group by' clause are 6x faster than before.
SQL: 'SAMPLE BY' queries are faster than before
SQL: 'COPY' is limited to picking up files only from configured location (documentation)
SQL: improved error reporting
UI: LONG256 0 is printed as '0x00'
UI: Double "inifinity" values (division by zero) used to corrupt JSON
Published by bluestreak01 almost 5 years ago
production ready version of Influx Line Protocol Receiver. It works well with existing line protocol publishers and is much faster than Influx's own implementation. Refer to this how-to
choice of transaction durability
Via Docker or cross-platform binary below: