README.md 14.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
<p>
<p align="center">
  <a href="https://tdengine.com" target="_blank">
  <img
    src="docs/assets/tdengine.svg"
    alt="TDengine"
    width="500"
  />
  </a>
</p>
<p>

L
liuyq-617 已提交
13
[![Build Status](https://cloud.drone.io/api/badges/taosdata/TDengine/status.svg?ref=refs/heads/master)](https://cloud.drone.io/taosdata/TDengine)
14
[![Build status](https://ci.appveyor.com/api/projects/status/kf3pwh2or5afsgl9/branch/master?svg=true)](https://ci.appveyor.com/project/sangshuduo/tdengine-2n8ge/branch/master)
15
[![Coverage Status](https://coveralls.io/repos/github/taosdata/TDengine/badge.svg?branch=develop)](https://coveralls.io/github/taosdata/TDengine?branch=develop)
S
Shuduo Sang 已提交
16
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4201/badge)](https://bestpractices.coreinfrastructure.org/projects/4201)
sangshuduo's avatar
sangshuduo 已提交
17
[![tdengine](https://snapcraft.io//tdengine/badge.svg)](https://snapcraft.io/tdengine)
18

19
English | [简体中文](README-CN.md) | We are hiring, check [here](https://tdengine.com/careers)
涛思数据(TDengine)'s avatar
涛思数据(TDengine) 已提交
20

H
hzcheng 已提交
21 22
# What is TDengine?

23
TDengine is an open source, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, and Industrial IoT. It enables efficient, real-time data ingestion, processing, and monitoring of TB and even PB scale data per day, generated by billions of sensors and data collectors. Below are the most outstanding advantages of TDengine:
24

25
- High-Performance: TDengine is the only time-series database to solve the high cardinality issue to support billions of data collection points while out performing other time-series databases for data ingestion, querying and data compression.
26

27
- Simplified Solution: Through built-in caching, stream processing and data subscription features, TDengine provides a simplified solution for time-series data processing. It reduces system design complexity and operation costs significantly.
H
hzcheng 已提交
28

29
- Cloud Native: Through native distributed design, sharding and partitioning, separation of compute and storage, RAFT, support for kubernetes deployment and full observability, TDengine can be deployed on public, private or hybrid clouds.
H
hzcheng 已提交
30

31
- Open Source: TDengine’s core modules, including cluster feature, are all available under open source licenses. It has gathered 18.7k stars on GitHub, an active developer community, and over 137k running instances worldwide.
H
hzcheng 已提交
32

33
- Ease of Use: For administrators, TDengine significantly reduces the effort to deploy and maintain. For developers, it provides a simple interface, simplified solution and seamless integrations for third party tools. For data users, it gives easy data access. 
H
hzcheng 已提交
34

35
- Easy Data Analytics: Through super tables, storage and compute separation, data partitioning by time interval, pre-computation and other means, TDengine makes it easy to explore, format, and get access to data in a highly efficient way. 
H
hzcheng 已提交
36 37

# Documentation
38

39
For user manual, system design and architecture, engineering blogs, refer to [TDengine Documentation](https://docs.tdengine.com)(中文版请点击[这里](https://docs.taosdata.com))
H
hzcheng 已提交
40 41

# Building
H
hzcheng 已提交
42

43 44 45
At the moment, TDengine server only supports running on Linux systems. You can choose to [install from packages](https://www.taosdata.com/en/getting-started/#Install-from-Package) or build it from the source code. This quick guide is for installation from the source only.

To build TDengine, use [CMake](https://cmake.org/) 3.0.2 or higher versions in the project directory.
46

47 48
## Install build dependencies

wafwerar's avatar
wafwerar 已提交
49
### Ubuntu 18.04 and above or Debian
50 51

```bash
52
sudo apt-get install -y gcc cmake build-essential git libssl-dev
53 54
```

55 56
To compile and package the JDBC driver source code, you should have a Java jdk-8 or higher and Apache Maven 2.7 or higher installed.

57
To install openjdk-8:
58

59 60 61 62 63
```bash
sudo apt-get install -y openjdk-8-jdk
```

To install Apache Maven:
64

65
```bash
66
sudo apt-get install -y maven
67 68
```

69 70 71 72 73 74 75
#### Install build dependencies for taosTools

We provide a few useful tools such as taosBenchmark (was named taosdemo) and taosdump. They were part of TDengine. From TDengine 2.4.0.0, taosBenchmark and taosdump were not released together with TDengine.
By default, TDengine compiling does not include taosTools. You can use 'cmake .. -DBUILD_TOOLS=true' to make them be compiled with TDengine.

To build the [taosTools](https://github.com/taosdata/taos-tools) on Ubuntu/Debian, the following packages need to be installed.

76
```bash
77 78 79
sudo apt install build-essential libjansson-dev libsnappy-dev liblzma-dev libz-dev pkg-config
```

wafwerar's avatar
wafwerar 已提交
80
### CentOS 7.9
81 82 83 84 85 86

```bash
sudo yum install epel-release
sudo yum update
sudo yum install -y gcc gcc-c++ make cmake3 git openssl-devel
sudo ln -sf /usr/bin/cmake3 /usr/bin/cmake
87 88 89
```

To install openjdk-8:
90

91 92 93 94 95
```bash
sudo yum install -y java-1.8.0-openjdk
```

To install Apache Maven:
96

97 98
```bash
sudo yum install -y maven
J
johnnyhou327 已提交
99
```
100

101 102
### CentOS 8 & Fedora

103
```bash
104
sudo dnf install -y gcc gcc-c++ make cmake epel-release git openssl-devel
J
johnnyhou327 已提交
105
```
106 107

To install openjdk-8:
108

109 110
```bash
sudo dnf install -y java-1.8.0-openjdk
J
johnnyhou327 已提交
111
```
112 113

To install Apache Maven:
114

115 116
```bash
sudo dnf install -y maven
J
johnnyhou327 已提交
117 118
```

119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
#### Install build dependencies for taosTools on CentOS

To build the [taosTools](https://github.com/taosdata/taos-tools) on CentOS, the following packages need to be installed.

```bash
sudo yum install zlib-devel xz-devel snappy-devel jansson jansson-devel pkgconfig libatomic libstdc++-static openssl-devel
```

Note: Since snappy lacks pkg-config support (refer to [link](https://github.com/google/snappy/pull/86)), it lead a cmake prompt libsnappy not found. But snappy will works well.

### Setup golang environment

TDengine includes few components developed by Go language. Please refer to golang.org official documentation for golang environment setup.

Please use version 1.14+. For the user in China, we recommend using a proxy to accelerate package downloading.

```
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
```

### Setup rust environment

TDengine includees few compoments developed by Rust language. Please refer to rust-lang.org official documentation for rust environment setup.

144 145
## Get the source codes

146
First of all, you may clone the source codes from github:
147

148 149
```bash
git clone https://github.com/taosdata/TDengine.git
B
Bison "goldeagle" Fan 已提交
150
cd TDengine
L
lihui 已提交
151
```
152

wafwerar's avatar
wafwerar 已提交
153
The connectors for go & Grafana and some tools have been moved to separated repositories.
154

155 156 157 158 159 160 161
You can modify the file ~/.gitconfig to use ssh protocol instead of https for better download speed. You need to upload ssh public key to GitHub first. Please refer to GitHub official documentation for detail.

```
[url "git@github.com:"]
    insteadOf = https://github.com/
```

162 163
## Build TDengine

164 165
### On Linux platform

166 167
You can run the bash script `build.sh` to build both TDengine and taosTools including taosBenchmark and taosdump as below:

168
```bash
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
./build.sh
```

It equals to execute following commands:

```bash
mkdir debug
cd debug
cmake .. -DBUILD_TOOLS=true
make
```

Note TDengine 2.3.x.0 and later use a component named 'taosAdapter' to play http daemon role by default instead of the http daemon embedded in the early version of TDengine. The taosAdapter is programmed by go language. If you pull TDengine source code to the latest from an existing codebase, please execute 'git submodule update --init --recursive' to pull taosAdapter source code. Please install go language version 1.14 or above for compiling taosAdapter. If you meet difficulties regarding 'go mod', especially you are from China, you can use a proxy to solve the problem.

```
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
```

The embedded http daemon still be built from TDengine source code by default. Or you can use the following command to choose to build taosAdapter.

```
cmake .. -DBUILD_HTTP=false
H
hzcheng 已提交
192
```
J
John Zhuang 已提交
193

sangshuduo's avatar
sangshuduo 已提交
194
You can use Jemalloc as memory allocator instead of glibc:
195

sangshuduo's avatar
sangshuduo 已提交
196 197 198 199 200
```
apt install autoconf
cmake .. -DJEMALLOC_ENABLED=true
```

wafwerar's avatar
wafwerar 已提交
201 202
TDengine build script can detect the host machine's architecture on X86-64, X86, arm64 platform.
You can also specify CPUTYPE option like aarch64 too if the detection result is not correct:
L
lihui 已提交
203

H
huili 已提交
204
aarch64:
205

206
```bash
H
huili 已提交
207
cmake .. -DCPUTYPE=aarch64 && cmake --build .
H
huili 已提交
208
```
H
huili 已提交
209

210 211
### On Windows platform

212
If you use the Visual Studio 2013, please open a command window by executing "cmd.exe".
213
Please specify "amd64" for 64 bits Windows or specify "x86" is for 32 bits Windows when you execute vcvarsall.bat.
214

215
```cmd
216
mkdir debug && cd debug
217
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" < amd64 | x86 >
218 219 220 221
cmake .. -G "NMake Makefiles"
nmake
```

222
If you use the Visual Studio 2019 or 2017:
223 224

please open a command window by executing "cmd.exe".
225
Please specify "x64" for 64 bits Windows or specify "x86" is for 32 bits Windows when you execute vcvarsall.bat.
226 227

```cmd
228 229 230 231 232 233
mkdir debug && cd debug
"c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" < x64 | x86 >
cmake .. -G "NMake Makefiles"
nmake
```

234
Or, you can simply open a command window by clicking Windows Start -> "Visual Studio < 2019 | 2017 >" folder -> "x64 Native Tools Command Prompt for VS < 2019 | 2017 >" or "x86 Native Tools Command Prompt for VS < 2019 | 2017 >" depends what architecture your Windows is, then execute commands as follows:
235

236
```cmd
237 238 239 240 241
mkdir debug && cd debug
cmake .. -G "NMake Makefiles"
nmake
```

242
### On macOS platform
243 244 245 246 247 248 249 250

Please install XCode command line tools and cmake. Verified with XCode 11.4+ on Catalina and Big Sur.

```shell
mkdir debug && cd debug
cmake .. && cmake --build .
```

H
Hongze Cheng 已提交
251
# Installing
252

253 254 255 256
## On Linux platform

After building successfully, TDengine can be installed by

257
```bash
258
sudo make install
H
Hongze Cheng 已提交
259
```
260

261
Users can find more information about directories installed on the system in the [directory and files](https://www.taosdata.com/en/documentation/administrator/#Directory-and-Files) section. Since version 2.0, installing from source code will also configure service management for TDengine.
H
Hongze Cheng 已提交
262
Users can also choose to [install from packages](https://www.taosdata.com/en/getting-started/#Install-from-Package) for it.
H
hzcheng 已提交
263

H
Hongze Cheng 已提交
264
To start the service after installation, in a terminal, use:
265

266 267
```bash
sudo systemctl start taosd
H
hzcheng 已提交
268 269
```

J
Jeff Tao 已提交
270
Then users can use the [TDengine shell](https://www.taosdata.com/en/getting-started/#TDengine-Shell) to connect the TDengine server. In a terminal, use:
271

272
```bash
H
hzcheng 已提交
273 274 275
taos
```

J
Jeff Tao 已提交
276
If TDengine shell connects the server successfully, welcome messages and version info are printed. Otherwise, an error message is shown.
H
hzcheng 已提交
277

278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324
### Install TDengine by apt-get

If you use Debian or Ubuntu system, you can use 'apt-get' command to install TDengine from official repository. Please use following commands to setup:

```
wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add -
echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | sudo tee /etc/apt/sources.list.d/tdengine-stable.list
[Optional] echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-beta beta main" | sudo tee /etc/apt/sources.list.d/tdengine-beta.list
sudo apt-get update
apt-cache policy tdengine
sudo apt-get install tdengine
```

## On Windows platform

After building successfully, TDengine can be installed by:

```cmd
nmake install
```

## On macOS platform

After building successfully, TDengine can be installed by:

```bash
sudo make install
```

To start the service after installation, config `.plist` file first, in a terminal, use:

```bash
sudo cp ../packaging/macOS/com.taosdata.tdengine.plist /Library/LaunchDaemons
```

To start the service, in a terminal, use:

```bash
sudo launchctl load /Library/LaunchDaemons/com.taosdata.tdengine.plist
```

To stop the service, in a terminal, use:

```bash
sudo launchctl unload /Library/LaunchDaemons/com.taosdata.tdengine.plist
```

325 326
## Quick Run

327
If you don't want to run TDengine as a service, you can run it in current shell. For example, to quickly start a TDengine server after building, run the command below in terminal: (We take Linux as an example, command on Windows will be `taosd.exe`)
328

329 330 331 332 333
```bash
./build/bin/taosd -c test/cfg
```

In another terminal, use the TDengine shell to connect the server:
334

335 336 337 338
```bash
./build/bin/taos -c test/cfg
```

339
option "-c test/cfg" specifies the system configuration file directory.
340

H
hzcheng 已提交
341
# Try TDengine
342

J
Jeff Tao 已提交
343
It is easy to run SQL commands from TDengine shell which is the same as other SQL databases.
344

H
hzcheng 已提交
345
```sql
346 347 348 349 350 351 352 353 354 355 356
CREATE DATABASE demo;
USE demo;
CREATE TABLE t (ts TIMESTAMP, speed INT);
INSERT INTO t VALUES('2019-07-15 00:00:00', 10);
INSERT INTO t VALUES('2019-07-15 01:00:00', 20);
SELECT * FROM t;
          ts          |   speed   |
===================================
 19-07-15 00:00:00.000|         10|
 19-07-15 01:00:00.000|         20|
Query OK, 2 row(s) in set (0.001700s)
H
hzcheng 已提交
357 358 359
```

# Developing with TDengine
360 361

## Official Connectors
362 363

TDengine provides abundant developing tools for users to develop on TDengine. Follow the links below to find your desired connectors and relevant documentation.
H
hzcheng 已提交
364

365 366 367 368 369 370 371
- [Java](https://www.taosdata.com/en/documentation/connector/java)
- [C/C++](https://www.taosdata.com/en/documentation/connector#c-cpp)
- [Python](https://www.taosdata.com/en/documentation/connector#python)
- [Go](https://www.taosdata.com/en/documentation/connector#go)
- [RESTful API](https://www.taosdata.com/en/documentation/connector#restful)
- [Node.js](https://www.taosdata.com/en/documentation/connector#nodejs)
- [Rust](https://www.taosdata.com/en/documentation/connector/rust)
H
hzcheng 已提交
372

373
## Third Party Connectors
374 375 376

The TDengine community has also kindly built some of their own connectors! Follow the links below to find the source code for them.

377
- [Rust Bindings](https://github.com/songtianyi/tdengine-rust-bindings/tree/master/examples)
378
- [.Net Core Connector](https://github.com/maikebing/Maikebing.EntityFrameworkCore.Taos)
379
- [Lua Connector](https://github.com/taosdata/TDengine/tree/develop/tests/examples/lua)
380

381 382 383 384
# How to run the test cases and how to add a new test case

TDengine's test framework and all test cases are fully open source.
Please refer to [this document](https://github.com/taosdata/TDengine/blob/develop/tests/How-To-Run-Test-And-How-To-Add-New-Test-Case.md) for how to run test and develop new test case.
sangshuduo's avatar
sangshuduo 已提交
385

W
winshining 已提交
386
# Contribute to TDengine
H
hzcheng 已提交
387 388

Please follow the [contribution guidelines](CONTRIBUTING.md) to contribute to the project.
L
lihui 已提交
389 390 391 392 393

# Join TDengine WeChat Group

Add WeChat “tdengine” to join the group,you can communicate with other users.

涛思数据(TDengine)'s avatar
涛思数据(TDengine) 已提交
394 395
# [User List](https://github.com/taosdata/TDengine/issues/2432)

E
Elias Soong 已提交
396
If you are using TDengine and feel it helps or you'd like to do some contributions, please add your company to [user list](https://github.com/taosdata/TDengine/issues/2432) and let us know your needs.