Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
112ebc58
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
112ebc58
编写于
3月 04, 2020
作者:
H
hzcheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add more
上级
9fa0685b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
122 addition
and
12 deletion
+122
-12
src/vnode/tsdb/inc/tsdb.h
src/vnode/tsdb/inc/tsdb.h
+11
-0
src/vnode/tsdb/src/tsdbMain.c
src/vnode/tsdb/src/tsdbMain.c
+106
-10
src/vnode/tsdb/src/tsdbMeta.c
src/vnode/tsdb/src/tsdbMeta.c
+5
-2
未找到文件。
src/vnode/tsdb/inc/tsdb.h
浏览文件 @
112ebc58
...
...
@@ -98,6 +98,17 @@ typedef struct {
int64_t
tableTotalDiskSize
;
// In bytes
}
STableInfo
;
/**
* Create a configuration for TSDB default
* @return a pointer to a configuration. the configuration must call tsdbFreeCfg to free memory after usage
*/
STsdbCfg
*
tsdbCreateDefaultCfg
();
/**
* Free
*/
void
tsdbFreeCfg
(
STsdbCfg
*
pCfg
);
/**
* Create a new TSDB repository
* @param rootDir the TSDB repository root directory
...
...
src/vnode/tsdb/src/tsdbMain.c
浏览文件 @
112ebc58
#include <
stdio
.h>
#include <
dirent
.h>
#include <fcntl.h>
#include <limits.h>
#include <pthread.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h>
// #include "taosdef.h"
// #include "disk.h"
...
...
@@ -16,6 +17,29 @@
#include "tsdbFile.h"
#include "tsdbMeta.h"
#define TSDB_DEFAULT_PRECISION TSDB_PRECISION_MILLI // default precision
#define IS_VALID_PRECISION(precision) (((precision) >= TSDB_PRECISION_MILLI) && ((precision) <= TSDB_PRECISION_NANO))
#define TSDB_MIN_ID 0
#define TSDB_MAX_ID INT_MAX
#define TSDB_MIN_TABLES 10
#define TSDB_MAX_TABLES 100000
#define TSDB_DEFAULT_TABLES 1000
#define TSDB_DEFAULT_DAYS_PER_FILE 10
#define TSDB_MIN_DAYS_PER_FILE 1
#define TSDB_MAX_DAYS_PER_FILE 60
#define TSDB_DEFAULT_MIN_ROW_FBLOCK 100
#define TSDB_MIN_MIN_ROW_FBLOCK 10
#define TSDB_MAX_MIN_ROW_FBLOCK 1000
#define TSDB_DEFAULT_MAX_ROW_FBLOCK 4096
#define TSDB_MIN_MAX_ROW_FBLOCK 200
#define TSDB_MAX_MAX_ROW_FBLOCK 10000
#define TSDB_DEFAULT_KEEP 3650
#define TSDB_MIN_KEEP 1
#define TSDB_MAX_KEEP INT_MAX
#define TSDB_DEFAULT_CACHE_SIZE (16 * 1024 * 1024) // 16M
#define TSDB_MIN_CACHE_SIZE (4 * 1024 * 1024) // 4M
#define TSDB_MAX_CACHE_SIZE (1024 * 1024 * 1024) // 1G
enum
{
TSDB_REPO_STATE_ACTIVE
,
TSDB_REPO_STATE_CLOSED
,
TSDB_REPO_STATE_CONFIGURING
};
typedef
struct
_tsdb_repo
{
...
...
@@ -55,11 +79,31 @@ static int tsdbRecoverRepo(int fd, STsdbCfg *pCfg);
#define TSDB_IS_REPO_ACTIVE(pRepo) ((pRepo)->state == TSDB_REPO_STATE_ACTIVE)
#define TSDB_IS_REPO_CLOSED(pRepo) ((pRepo)->state == TSDB_REPO_STATE_CLOSED)
tsdb_repo_t
*
tsdbCreateRepo
(
char
*
rootDir
,
STsdbCfg
*
pCfg
,
void
*
limiter
)
{
STsdbCfg
*
tsdbCreateDefaultCfg
()
{
STsdbCfg
*
pCfg
=
(
STsdbCfg
*
)
malloc
(
sizeof
(
STsdbCfg
));
if
(
pCfg
==
NULL
)
return
NULL
;
pCfg
->
precision
=
-
1
;
pCfg
->
tsdbId
=
0
;
pCfg
->
maxTables
=
-
1
;
pCfg
->
daysPerFile
=
-
1
;
pCfg
->
minRowsPerFileBlock
=
-
1
;
pCfg
->
maxRowsPerFileBlock
=
-
1
;
pCfg
->
keep
=
-
1
;
pCfg
->
maxCacheSize
=
-
1
;
return
pCfg
;
}
void
tsdbFreeCfg
(
STsdbCfg
*
pCfg
)
{
if
(
pCfg
!=
NULL
)
free
(
pCfg
);
}
tsdb_repo_t
*
tsdbCreateRepo
(
char
*
rootDir
,
STsdbCfg
*
pCfg
,
void
*
limiter
)
{
if
(
rootDir
==
NULL
)
return
NULL
;
if
(
access
(
rootDir
,
F_OK
|
R_OK
|
W_OK
)
==
-
1
)
return
NULL
;
if
(
access
(
rootDir
,
F_OK
|
R_OK
|
W_OK
)
==
-
1
)
return
NULL
;
if
(
tsdbCheckAndSetDefaultCfg
(
pCfg
)
<
0
)
{
return
NULL
;
...
...
@@ -200,9 +244,7 @@ int32_t tsdbAlterTable(tsdb_repo_t *pRepo, STableCfg *pCfg) {
return
0
;
}
int32_t
tsdbDropTable
(
tsdb_repo_t
*
pRepo
,
STableId
tid
)
{
return
0
;
}
int32_t
tsdbDropTable
(
tsdb_repo_t
*
pRepo
,
STableId
tid
)
{
return
0
;
}
STableInfo
*
tsdbGetTableInfo
(
tsdb_repo_t
*
pRepo
,
STableId
tid
)
{
// TODO
...
...
@@ -219,14 +261,68 @@ int32_t tsdbInsertData(tsdb_repo_t *repo, STableId tableId, char *pData) {
// Check the configuration and set default options
static
int32_t
tsdbCheckAndSetDefaultCfg
(
STsdbCfg
*
pCfg
)
{
// TODO
// Check precision
if
(
pCfg
->
precision
==
-
1
)
{
pCfg
->
precision
=
TSDB_DEFAULT_PRECISION
;
}
else
{
if
(
!
IS_VALID_PRECISION
(
pCfg
->
precision
))
return
-
1
;
}
// Check tsdbId
if
(
pCfg
->
tsdbId
<
0
)
return
-
1
;
// Check MaxTables
if
(
pCfg
->
maxTables
==
-
1
)
{
pCfg
->
maxTables
=
TSDB_DEFAULT_TABLES
;
}
else
{
if
(
pCfg
->
maxTables
<
TSDB_MIN_TABLES
||
pCfg
->
maxTables
>
TSDB_MAX_TABLES
)
return
-
1
;
}
// Check daysPerFile
if
(
pCfg
->
daysPerFile
==
-
1
)
{
pCfg
->
daysPerFile
=
TSDB_DEFAULT_DAYS_PER_FILE
;
}
else
{
if
(
pCfg
->
daysPerFile
<
TSDB_MIN_DAYS_PER_FILE
||
pCfg
->
daysPerFile
>
TSDB_MAX_DAYS_PER_FILE
)
return
-
1
;
}
// Check minRowsPerFileBlock and maxRowsPerFileBlock
if
(
pCfg
->
minRowsPerFileBlock
==
-
1
)
{
pCfg
->
minRowsPerFileBlock
=
TSDB_DEFAULT_MIN_ROW_FBLOCK
;
}
else
{
if
(
pCfg
->
minRowsPerFileBlock
<
TSDB_MIN_MIN_ROW_FBLOCK
||
pCfg
->
minRowsPerFileBlock
>
TSDB_MAX_MIN_ROW_FBLOCK
)
return
-
1
;
}
if
(
pCfg
->
maxRowsPerFileBlock
==
-
1
)
{
pCfg
->
maxRowsPerFileBlock
=
TSDB_DEFAULT_MAX_ROW_FBLOCK
;
}
else
{
if
(
pCfg
->
maxRowsPerFileBlock
<
TSDB_MIN_MAX_ROW_FBLOCK
||
pCfg
->
maxRowsPerFileBlock
>
TSDB_MAX_MAX_ROW_FBLOCK
)
return
-
1
;
}
if
(
pCfg
->
minRowsPerFileBlock
>
pCfg
->
maxRowsPerFileBlock
)
return
-
1
;
// Check keep
if
(
pCfg
->
keep
==
-
1
)
{
pCfg
->
keep
=
TSDB_DEFAULT_KEEP
;
}
else
{
if
(
pCfg
->
keep
<
TSDB_MIN_KEEP
||
pCfg
->
keep
>
TSDB_MAX_KEEP
)
return
-
1
;
}
// Check maxCacheSize
if
(
pCfg
->
maxCacheSize
==
-
1
)
{
pCfg
->
maxCacheSize
=
TSDB_DEFAULT_CACHE_SIZE
;
}
else
{
if
(
pCfg
->
maxCacheSize
<
TSDB_MIN_CACHE_SIZE
||
pCfg
->
maxCacheSize
>
TSDB_MAX_CACHE_SIZE
)
return
-
1
;
}
return
0
;
}
static
int32_t
tsdbSetRepoEnv
(
STsdbRepo
*
pRepo
)
{
char
*
metaFname
=
tsdbGetFileName
(
pRepo
->
rootDir
,
"tsdb"
,
TSDB_FILE_TYPE_META
);
int
fd
=
open
(
metaFname
,
O_WRONLY
|
O_CREAT
);
int
fd
=
open
(
metaFname
,
O_WRONLY
|
O_CREAT
);
if
(
fd
<
0
)
{
return
-
1
;
}
...
...
src/vnode/tsdb/src/tsdbMeta.c
浏览文件 @
112ebc58
...
...
@@ -10,6 +10,8 @@
#define TSDB_MAX_TABLES 100000
#define TSDB_DEFAULT_NSTABLES 10
#define TSDB_SUPER_TABLE_SL_LEVEL 5 // TODO: may change here
#define IS_VALID_MAX_TABLES(maxTables) (((maxTables) >= TSDB_MIN_TABLES) && ((maxTables) <= TSDB_MAX_TABLES))
static
int
tsdbFreeTable
(
STable
*
pTable
);
...
...
@@ -90,7 +92,8 @@ int32_t tsdbCreateTableImpl(STsdbMeta *pMeta, STableCfg *pCfg) {
pSTable
->
stableUid
=
-
1
;
pSTable
->
numOfCols
=
pCfg
->
numOfCols
;
pSTable
->
pSchema
=
tdDupSchema
(
pCfg
->
schema
);
// pSTable->content.pIndex = tSkipListCreate(5, 0, 10); // TODO: change here
pSTable
->
content
.
pIndex
=
tSkipListCreate
(
TSDB_SUPER_TABLE_SL_LEVEL
,
0
,
8
,
0
,
0
,
NULL
);
// TODO: change here
tsdbAddTable
(
pMeta
,
pSTable
);
}
else
{
if
(
pSTable
->
type
!=
TSDB_SUPER_TABLE
)
return
NULL
;
...
...
@@ -113,7 +116,7 @@ int32_t tsdbCreateTableImpl(STsdbMeta *pMeta, STableCfg *pCfg) {
pTable
->
stableUid
=
-
1
;
pTable
->
pSchema
=
tdDupSchema
(
pCfg
->
schema
);
}
// pTable->content.pData = tSkipListCreate(5, 0, 10); // TODO: change here
pTable
->
content
.
pData
=
tSkipListCreate
(
TSDB_SUPER_TABLE_SL_LEVEL
,
0
,
8
,
0
,
0
,
NULL
);
tsdbAddTable
(
pMeta
,
pTable
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录