Ruihang Xia beb07fc895 feat: new datatypes subcrate based on the official arrow (#705)
* feat: Init datatypes2 crate

* chore: Remove some unimplemented types

* feat: Implements PrimitiveType and PrimitiveVector for datatypes2 (#633)

* feat: Implement primitive types and vectors

* feat: Implement a wrapper type

* feat: Remove VectorType from ScalarRef

* feat: Move some trait bound from NativeType to WrapperType

* feat: pub use  primitive vectors and builders

* feat: Returns error in try_from when type mismatch

* feat: Impl PartialEq for some vectors

* test: Pass vector tests

* chore: Add license header

* test: Pass more vector tests

* feat: Implement some methods of vector Helper

* test: Pass more tests

* style: Fix clippy

* chore: Add license header

* feat: Remove IntoValueRef trait

* feat: Add NativeType trait bound to WrapperType::Native

* docs: Explain what is wrapper type

* chore: Fix typos

* refactor: LogicalPrimitiveType::type_name returns str

* feat: Implements DateType and DateVector (#651)

* feat: Implement DateType and DateVector

* test: Pass more value and data type tests

* chore: Address CR comments

* test: Skip list value test

* feat: datatypes2 datetime (#661)

* feat: impl DateTime type and vector

* fix: add license header

* fix: CR comments and add more tests

* fix: customized serialization for wrapper type

* feat: Implements NullType and NullVector (#658)

* feat: Implements NullType and NullVector

* chore: Address CR comment

Co-authored-by: Ruihang Xia <waynestxia@gmail.com>

* chore: Address CR comment

Co-authored-by: Ruihang Xia <waynestxia@gmail.com>

* feat: Implements StringType and StringVector (#659)

* feat: implement string vector

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* add more test and from

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix clippy

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* cover NUL

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* feat: impl datatypes2/timestamp (#686)

* feat: add timestamp datatype and vectors

* fix: cr comments and reformat code

* chore: add some tests

* feat: Implements ListType and ListVector (#681)

* feat: Implement ListType and ListVector

* test: Pass more tests

* style: Fix clippy

* chore: Fix comment

* chore: Address CR comments

* feat: impl constant vector (#680)

* feat: impl constant vector

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix tests

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* Apply suggestions from code review

Co-authored-by: Yingwen <realevenyag@gmail.com>

* rename fn names

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* remove println

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
Co-authored-by: Yingwen <realevenyag@gmail.com>

* feat: Implements Validity (#684)

* feat: Implements Validity

* chore: remove pub from sub mod in vectors

* feat: Implements schema for datatypes2 (#695)

* feat: Add is_timestamp_compatible to DataType

* feat: Implement ColumnSchema and Schema

* feat: Impl RawSchema

* chore: Remove useless codes and run more tests

* chore: Fix clippy

* feat: Impl from_arrow_time_unit and pass schema tests

* chore: add more tests for timestamp (#702)

* chore: add more tests for timestamp

* chore: add replicate test for timestamps

* feat: Implements helper methods for vectors/values (#703)

* feat: Implement helper methods for vectors/values

* chore: Address CR comments

* chore: add more test for timestamp

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
Co-authored-by: evenyag <realevenyag@gmail.com>
Co-authored-by: Lei, HUANG <6406592+v0y4g3r@users.noreply.github.com>
Co-authored-by: Lei, HUANG <mrsatangel@gmail.com>
2022-12-05 19:59:23 +08:00
2022-11-21 14:07:45 +08:00
2022-11-15 17:52:43 +08:00
2022-12-02 19:22:37 +08:00
2022-12-01 10:59:14 +08:00
2022-12-01 10:59:14 +08:00
2022-11-10 14:21:24 +08:00

GreptimeDB Logo

The next-generation hybrid timeseries/analytics processing database in the cloud

  CI  

 

What is GreptimeDB

GreptimeDB is an open-source time-series database with a special focus on scalability, analytical capabilities and efficiency. It's designed to work on infrastructure of the cloud era, and users benefit from its elasticity and commodity storage.

Our core developers have been building time-series data platform for years. Based on their best-practices, GreptimeDB is born to give you:

  • A standalone binary that scales to highly-available distributed cluster, providing a transparent experience for cluster users
  • Optimized columnar layout for handling time-series data; compacted, compressed, stored on various storage backends
  • Flexible index options, tackling high cardinality issues down
  • Distributed, parallel query execution, leveraging elastic computing resource
  • Native SQL, and Python scripting for advanced analytical scenarios
  • Widely adopted database protocols and APIs
  • Extensible table engine architecture for extensive workloads

Quick Start

Build

Build from Source

To compile GreptimeDB from source, you'll need:

  • C/C++ Toolchain: provides basic tools for compiling and linking. This is available as build-essential on ubuntu and similar name on other platforms.
  • Rust: the easiest way to install Rust is to use rustup, which will check our rust-toolchain file and install correct Rust version for you.
  • Protobuf: protoc is required for compiling .proto files. protobuf is available from major package manager on macos and linux distributions. You can find an installation instructions here. Note that protoc version needs to be >= 3.15 because we have used the optional keyword. You can check it with protoc --version.

Build with Docker

A docker image with necessary dependencies is provided:

docker build --network host -f docker/Dockerfile -t greptimedb .

Run

Start GreptimeDB from source code, in standalone mode:

cargo run -- standalone start

Or if you built from docker:

docker run -p 4002:4002 -v "$(pwd):/tmp/greptimedb" greptime/greptimedb standalone start

For more startup options, greptimedb's distributed mode and information about Kubernetes deployment, check our docs.

Connect

  1. Connect to GreptimeDB via standard MySQL client:

    # The standalone instance listen on port 4002 by default.
    mysql -h 127.0.0.1 -P 4002
    
  2. Create table:

    CREATE TABLE monitor (
      host STRING,
      ts TIMESTAMP,
      cpu DOUBLE DEFAULT 0,
      memory DOUBLE,
      TIME INDEX (ts),
      PRIMARY KEY(host)) ENGINE=mito WITH(regions=1);
    
  3. Insert some data:

    INSERT INTO monitor(host, cpu, memory, ts) VALUES ('host1', 66.6, 1024, 1660897955000);
    INSERT INTO monitor(host, cpu, memory, ts) VALUES ('host2', 77.7, 2048, 1660897956000);
    INSERT INTO monitor(host, cpu, memory, ts) VALUES ('host3', 88.8, 4096, 1660897957000);
    
  4. Query the data:

    SELECT * FROM monitor;
    
    +-------+---------------------+------+--------+
    | host  | ts                  | cpu  | memory |
    +-------+---------------------+------+--------+
    | host1 | 2022-08-19 08:32:35 | 66.6 |   1024 |
    | host2 | 2022-08-19 08:32:36 | 77.7 |   2048 |
    | host3 | 2022-08-19 08:32:37 | 88.8 |   4096 |
    +-------+---------------------+------+--------+
    3 rows in set (0.01 sec)
    

You can always cleanup test database by removing /tmp/greptimedb.

Resources

Installation

Documentation

SDK

Project Status

This project is in its early stage and under heavy development. We move fast and break things. Benchmark on development branch may not represent its potential performance. We release pre-built binaries constantly for functional evaluation. Do not use it in production at the moment.

For future plans, check out GreptimeDB roadmap.

Community

Our core team is thrilled too see you participate in any ways you like. When you are stuck, try to ask for help by filling an issue with a detailed description of what you were trying to do and what went wrong. If you have any questions or if you would like to get involved in our community, please check out:

In addition, you may:

License

GreptimeDB uses the Apache 2.0 license to strike a balance between open contributions and allowing you to use the software however you want.

Contributing

Please refer to contribution guidelines for more information.

Acknowledgement

Description
Languages
Rust 99.6%
Shell 0.1%