README.md 5.4 KB
Newer Older
V
Vlad Ilyushchenko 已提交
1
<h4 align="center">
V
Vlad Ilyushchenko 已提交
2
  <img src="https://raw.githubusercontent.com/questdb/questdb/master/core/src/main/resources/site/public/images/logo-readme.jpg"/>
V
Vlad Ilyushchenko 已提交
3
</h4>
V
Vlad Ilyushchenko 已提交
4

V
Vlad Ilyushchenko 已提交
5
<p align="center">
V
Vlad Ilyushchenko 已提交
6 7 8 9 10 11 12 13 14
  <a href="https://github.com/questdb/questdb/blob/master/LICENSE.txt"><img src="https://img.shields.io/github/license/questdb/questdb"></a>
  <a href="https://www.codacy.com/app/bluestreak/nfsdb"><img src="https://api.codacy.com/project/badge/grade/83c6250bd9fc45a98c12c191af710754"></a>
  <a href="https://circleci.com/gh/questdb/questdb"><img src="https://img.shields.io/circleci/build/github/questdb/questdb/master?token=c019f9fac8d84c0fa4896447d6073504a830e099"></a>
  <a href="https://serieux-saucisson-79115.herokuapp.com/"><img src="https://serieux-saucisson-79115.herokuapp.com/badge.svg"></a>
  <a href="https://github.com/questdb/questdb/releases/download/4.0.0/questdb-4.0.0-bin.tar.gz"><img src="https://img.shields.io/github/downloads/questdb/questdb/total"></a>
  <a href="https://search.maven.org/search?q=g:org.questdb"><img src="https://img.shields.io/maven-central/v/org.questdb/core"></a>
</p
  
<p/>
V
Vlad Ilyushchenko 已提交
15 16

## What is QuestDB
V
Vlad Ilyushchenko 已提交
17

V
Vlad Ilyushchenko 已提交
18
QuestDB is a fast NewSQL database for Hybrid Transactional, Analytical and Time Series Processing workloads. QuestDB ingests 
T
Tancrede 已提交
19 20
data via HTTP, PostgresSQL wire protocol, Influx line protocol or directly from Java. Reading data is done using SQL via HTTP, 
PostgreSQL wire protocol or via Java API. The whole database and console fits in a 3.5Mb package.
21

V
Vlad Ilyushchenko 已提交
22
## Project goals
V
Vlad Ilyushchenko 已提交
23

T
Tancrede 已提交
24
- Treat time-series as first class citizen within a relational database.
V
Vlad Ilyushchenko 已提交
25

V
Vlad Ilyushchenko 已提交
26 27
- Be consistently economical and respectful of hardware resources. Don't waste CPU cycles, memory or storage.

T
Tancrede 已提交
28
- Be a reliable and trustworthy store of critical data.
V
Vlad Ilyushchenko 已提交
29 30 31

- Low friction operation. Empower with SQL. Simplify every database interaction.

T
Tancrede 已提交
32
- Operate efficiently at both extremes: allow users to prioritise performance over data loss, or no loss over performance.
V
Vlad Ilyushchenko 已提交
33 34

- Be both embedded and standalone.
V
Vlad Ilyushchenko 已提交
35

T
Tancrede 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
## Getting Started

[Install](https://www.questdb.io/docs/install) and [run](https://www.questdb.io/docs/run) QuestDB.
Then, the easiest way to get started is to play with our
web [console](https://www.questdb.io/docs/console). This will allow you to import
and query data using an intuitive interface.

You may also take a look at our [storage model](https://www.questdb.io/docs/storagemodel). In a nutshell,
we are a column-oriented database, which partitions data by time intervals.

You can find more documentation [here](https://www.questdb.io/docs/documentation)

## Support / Contact

- [Slack Channel](https://join.slack.com/t/questdb/shared_invite/enQtNzk4Nzg4Mjc2MTE2LTEzZThjMzliMjUzMTBmYzVjYWNmM2UyNWJmNDdkMDYyZmE0ZDliZTQxN2EzNzk5MDE3Zjc1ZmJiZmFiZTIwMGY)

T
Tancrede 已提交
52
## Roadmap
T
Tancrede 已提交
53 54 55 56 57 58 59 60 61 62 63 64 65 66

We have built the ultimate performance for read and write on a single-thread.
But we still have some work to do.
Elements on our roadmap include:

- Query and aggregates optimisation. Currently, we run aggregates through linear scans.
While our scans are highly efficient, our current implementations of aggregates are somehow naive.
Further optimisation will take performance to new levels.
- Multithreading. Currently, we use one single thread. While this is good for certain use cases
(you can limit QuestDB to one thread and leave resources for other programs), we will provide
the ability to distribute load/query work over several cores to benefit from parallelisation.
- High-availability. Working on providing out-of-the-box high-availability with extreme simplicity.


67 68 69 70
## Building from source

### Pre-requitites:

J
j1897OS 已提交
71
- Java 8 64-bit. We recommend Oracle Java 8, but OpenJDK8 will also work (although a little slower).
72 73 74 75 76
- Maven 3
- Compatible 64-bit Operating System: Windows, Linux, OSX or ARM Linux
- Configure JAVA_HOME environment variable
- Add Maven "bin" directory to PATH environment variable

V
Vlad Ilyushchenko 已提交
77
```
V
Vlad Ilyushchenko 已提交
78 79
Note: Java versions above 8 are not yet supported. It is possible to build QuestDB with Java 11,
but this requires backward incompatible source code changes.
V
Vlad Ilyushchenko 已提交
80 81
```

V
Vlad Ilyushchenko 已提交
82
### Building & Running
83 84

```
V
Vlad Ilyushchenko 已提交
85 86 87 88 89 90 91 92 93 94 95 96
git clone https://github.com/questdb/questdb.git
cd questdb

# check java version
# output should be similar to:
#
# java version "1.8.0_212"
# Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
# Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
#
# if you java version is above 8 you can download & install JDK8 and use absolute
# path to java executable instead of 'java'
97

V
Vlad Ilyushchenko 已提交
98
java -version
99

V
Vlad Ilyushchenko 已提交
100 101
# remove 'skipTests' if you would like to run all tests (3000+ unit tests, 3-5 mins)
mvn clean package -DskipTests
102

V
Vlad Ilyushchenko 已提交
103
# check contents of 'core/target' directory to find out QuestDB current version number
104

V
Vlad Ilyushchenko 已提交
105 106 107 108 109 110 111 112
# create QuestDB root directory if one does not exist
# replace <root_dir> with actual directory name
mkdir <root_dir>

# <version> is current QuestDB version from pom.xml
# <root_dir> is the root directory created at previous step
java -cp core/target/core-<version>.jar io.questdb.ServerMain -d <dir>
```
113

V
Vlad Ilyushchenko 已提交
114
QuestDB will start HTTP server on 0:9000, which you can visit from your browser: http://localhost:9000. HTTP server is constrained by directory specified as program argument (-d). Additionally QuestDB will start PostgreSQL server on 0:8812, default login credentials are admin/quest. Both HTTP and PostresSQL server reference database in `<root_directory>/db`
115

V
Vlad Ilyushchenko 已提交
116

T
Tancrede 已提交
117
## Contribution
V
Vlad Ilyushchenko 已提交
118

T
TheTanc 已提交
119 120
Feel free to contribute to the project by forking the repository and submitting pull requests.
Please make sure you have read our [contributing guide](https://github.com/questdb/questdb/blob/master/CONTRIBUTING.md).