Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
cb470d7a
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cb470d7a
编写于
12月 02, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-11760]: use sqlite to store suid to uid list
上级
4e647ab0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
54 addition
and
32 deletion
+54
-32
deps/CMakeLists.txt
deps/CMakeLists.txt
+3
-2
source/dnode/vnode/meta/CMakeLists.txt
source/dnode/vnode/meta/CMakeLists.txt
+1
-0
source/dnode/vnode/meta/inc/metaDB.h
source/dnode/vnode/meta/inc/metaDB.h
+2
-1
source/dnode/vnode/meta/src/metaDB.c
source/dnode/vnode/meta/src/metaDB.c
+48
-29
未找到文件。
deps/CMakeLists.txt
浏览文件 @
cb470d7a
...
@@ -82,7 +82,7 @@ endif(${BUILD_WITH_NURAFT})
...
@@ -82,7 +82,7 @@ endif(${BUILD_WITH_NURAFT})
# BDB
# BDB
if
(
${
BUILD_WITH_BDB
}
)
if
(
${
BUILD_WITH_BDB
}
)
add_library
(
bdb STATIC IMPORTED
)
add_library
(
bdb STATIC IMPORTED
GLOBAL
)
set_target_properties
(
bdb PROPERTIES
set_target_properties
(
bdb PROPERTIES
IMPORTED_LOCATION
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/bdb/libdb.a"
IMPORTED_LOCATION
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/bdb/libdb.a"
INTERFACE_INCLUDE_DIRECTORIES
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/bdb"
INTERFACE_INCLUDE_DIRECTORIES
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/bdb"
...
@@ -93,8 +93,9 @@ if(${BUILD_WITH_BDB})
...
@@ -93,8 +93,9 @@ if(${BUILD_WITH_BDB})
endif
(
${
BUILD_WITH_BDB
}
)
endif
(
${
BUILD_WITH_BDB
}
)
# SQLite
# SQLite
# see https://stackoverflow.com/questions/8774593/cmake-link-to-external-library#comment58570736_10550334
if
(
${
BUILD_WITH_SQLITE
}
)
if
(
${
BUILD_WITH_SQLITE
}
)
add_library
(
sqlite STATIC IMPORTED
)
add_library
(
sqlite STATIC IMPORTED
GLOBAL
)
set_target_properties
(
sqlite PROPERTIES
set_target_properties
(
sqlite PROPERTIES
IMPORTED_LOCATION
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/sqlite/.libs/libsqlite3.a"
IMPORTED_LOCATION
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/sqlite/.libs/libsqlite3.a"
INTERFACE_INCLUDE_DIRECTORIES
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/sqlite"
INTERFACE_INCLUDE_DIRECTORIES
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/sqlite"
...
...
source/dnode/vnode/meta/CMakeLists.txt
浏览文件 @
cb470d7a
...
@@ -7,6 +7,7 @@ target_include_directories(
...
@@ -7,6 +7,7 @@ target_include_directories(
)
)
target_link_libraries
(
target_link_libraries
(
meta
meta
PUBLIC sqlite
PUBLIC common
PUBLIC common
PUBLIC tkv
PUBLIC tkv
)
)
...
...
source/dnode/vnode/meta/inc/metaDB.h
浏览文件 @
cb470d7a
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#define _TD_META_DB_H_
#define _TD_META_DB_H_
#include "rocksdb/c.h"
#include "rocksdb/c.h"
#include "sqlite3.h"
#include "meta.h"
#include "meta.h"
...
@@ -29,7 +30,7 @@ typedef struct {
...
@@ -29,7 +30,7 @@ typedef struct {
rocksdb_t
*
nameDb
;
// name -> uid
rocksdb_t
*
nameDb
;
// name -> uid
rocksdb_t
*
tagDb
;
// uid -> tag
rocksdb_t
*
tagDb
;
// uid -> tag
rocksdb_t
*
schemaDb
;
// uid+version -> schema
rocksdb_t
*
schemaDb
;
// uid+version -> schema
rocksdb_t
*
mapDb
;
// suid -> uid_list
sqlite3
*
mapDb
;
// suid -> uid_list
}
meta_db_t
;
}
meta_db_t
;
int
metaOpenDB
(
SMeta
*
pMeta
);
int
metaOpenDB
(
SMeta
*
pMeta
);
...
...
source/dnode/vnode/meta/src/metaDB.c
浏览文件 @
cb470d7a
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
static
void
metaSaveSchemaDB
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
STSchema
*
pSchema
);
static
void
metaSaveSchemaDB
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
STSchema
*
pSchema
);
static
void
metaGetSchemaDBKey
(
char
key
[],
tb_uid_t
uid
,
int
sversion
);
static
void
metaGetSchemaDBKey
(
char
key
[],
tb_uid_t
uid
,
int
sversion
);
static
int
metaSaveMapDB
(
SMeta
*
pMeta
,
tb_uid_t
suid
,
tb_uid_t
uid
);
//
static int metaSaveMapDB(SMeta *pMeta, tb_uid_t suid, tb_uid_t uid);
#define SCHEMA_KEY_LEN (sizeof(tb_uid_t) + sizeof(int))
#define SCHEMA_KEY_LEN (sizeof(tb_uid_t) + sizeof(int))
...
@@ -65,8 +65,14 @@ int metaOpenDB(SMeta *pMeta) {
...
@@ -65,8 +65,14 @@ int metaOpenDB(SMeta *pMeta) {
META_OPEN_DB_IMPL
(
pMeta
->
pDB
->
schemaDb
,
options
,
dir
,
err
);
META_OPEN_DB_IMPL
(
pMeta
->
pDB
->
schemaDb
,
options
,
dir
,
err
);
// mapDb
// mapDb
sprintf
(
dir
,
"%s/map_db"
,
pMeta
->
path
);
sprintf
(
dir
,
"%s/meta.db"
,
pMeta
->
path
);
META_OPEN_DB_IMPL
(
pMeta
->
pDB
->
mapDb
,
options
,
dir
,
err
);
if
(
sqlite3_open
(
dir
,
&
(
pMeta
->
pDB
->
mapDb
))
!=
SQLITE_OK
)
{
// TODO
}
// // set read uncommitted
sqlite3_exec
(
pMeta
->
pDB
->
mapDb
,
"PRAGMA read_uncommitted=true;"
,
0
,
0
,
0
);
sqlite3_exec
(
pMeta
->
pDB
->
mapDb
,
"BEGIN;"
,
0
,
0
,
0
);
rocksdb_options_destroy
(
options
);
rocksdb_options_destroy
(
options
);
return
0
;
return
0
;
...
@@ -82,7 +88,12 @@ int metaOpenDB(SMeta *pMeta) {
...
@@ -82,7 +88,12 @@ int metaOpenDB(SMeta *pMeta) {
void
metaCloseDB
(
SMeta
*
pMeta
)
{
void
metaCloseDB
(
SMeta
*
pMeta
)
{
if
(
pMeta
->
pDB
)
{
if
(
pMeta
->
pDB
)
{
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
mapDb
);
if
(
pMeta
->
pDB
->
mapDb
)
{
sqlite3_exec
(
pMeta
->
pDB
->
mapDb
,
"COMMIT;"
,
0
,
0
,
0
);
sqlite3_close
(
pMeta
->
pDB
->
mapDb
);
pMeta
->
pDB
->
mapDb
=
NULL
;
}
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
schemaDb
);
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
schemaDb
);
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
tagDb
);
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
tagDb
);
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
nameDb
);
META_CLOSE_DB_IMPL
(
pMeta
->
pDB
->
nameDb
);
...
@@ -97,6 +108,7 @@ int metaSaveTableToDB(SMeta *pMeta, const STbCfg *pTbOptions) {
...
@@ -97,6 +108,7 @@ int metaSaveTableToDB(SMeta *pMeta, const STbCfg *pTbOptions) {
char
*
err
=
NULL
;
char
*
err
=
NULL
;
size_t
size
;
size_t
size
;
char
pBuf
[
1024
];
// TODO
char
pBuf
[
1024
];
// TODO
char
sql
[
128
];
rocksdb_writeoptions_t
*
wopt
=
rocksdb_writeoptions_create
();
rocksdb_writeoptions_t
*
wopt
=
rocksdb_writeoptions_create
();
...
@@ -124,8 +136,12 @@ int metaSaveTableToDB(SMeta *pMeta, const STbCfg *pTbOptions) {
...
@@ -124,8 +136,12 @@ int metaSaveTableToDB(SMeta *pMeta, const STbCfg *pTbOptions) {
// save schemaDB
// save schemaDB
metaSaveSchemaDB
(
pMeta
,
uid
,
pTbOptions
->
stbCfg
.
pSchema
);
metaSaveSchemaDB
(
pMeta
,
uid
,
pTbOptions
->
stbCfg
.
pSchema
);
// save mapDB (really need?)
// // save mapDB (really need?)
rocksdb_put
(
pMeta
->
pDB
->
mapDb
,
wopt
,
(
char
*
)(
&
uid
),
sizeof
(
uid
),
""
,
0
,
&
err
);
// rocksdb_put(pMeta->pDB->mapDb, wopt, (char *)(&uid), sizeof(uid), "", 0, &err);
sprintf
(
sql
,
"create table st_%"
PRIu64
" (uid BIGINT);"
,
uid
);
if
(
sqlite3_exec
(
pMeta
->
pDB
->
mapDb
,
sql
,
NULL
,
NULL
,
&
err
)
!=
SQLITE_OK
)
{
// fprintf(stderr, "Failed to create table, since %s\n", err);
}
break
;
break
;
case
META_CHILD_TABLE
:
case
META_CHILD_TABLE
:
// save tagDB
// save tagDB
...
@@ -133,7 +149,10 @@ int metaSaveTableToDB(SMeta *pMeta, const STbCfg *pTbOptions) {
...
@@ -133,7 +149,10 @@ int metaSaveTableToDB(SMeta *pMeta, const STbCfg *pTbOptions) {
kvRowLen
(
pTbOptions
->
ctbCfg
.
pTag
),
&
err
);
kvRowLen
(
pTbOptions
->
ctbCfg
.
pTag
),
&
err
);
// save mapDB
// save mapDB
metaSaveMapDB
(
pMeta
,
pTbOptions
->
ctbCfg
.
suid
,
uid
);
sprintf
(
sql
,
"insert into st_%"
PRIu64
" values (%"
PRIu64
");"
,
pTbOptions
->
ctbCfg
.
suid
,
uid
);
if
(
sqlite3_exec
(
pMeta
->
pDB
->
mapDb
,
sql
,
NULL
,
NULL
,
&
err
)
!=
SQLITE_OK
)
{
fprintf
(
stderr
,
"failed to insert data, since %s
\n
"
,
err
);
}
break
;
break
;
default:
default:
ASSERT
(
0
);
ASSERT
(
0
);
...
@@ -172,32 +191,32 @@ static void metaGetSchemaDBKey(char *key, tb_uid_t uid, int sversion) {
...
@@ -172,32 +191,32 @@ static void metaGetSchemaDBKey(char *key, tb_uid_t uid, int sversion) {
*
(
int
*
)
POINTER_SHIFT
(
key
,
sizeof
(
tb_uid_t
))
=
sversion
;
*
(
int
*
)
POINTER_SHIFT
(
key
,
sizeof
(
tb_uid_t
))
=
sversion
;
}
}
static
int
metaSaveMapDB
(
SMeta
*
pMeta
,
tb_uid_t
suid
,
tb_uid_t
uid
)
{
//
static int metaSaveMapDB(SMeta *pMeta, tb_uid_t suid, tb_uid_t uid) {
size_t
vlen
;
//
size_t vlen;
char
*
val
;
//
char * val;
char
*
err
=
NULL
;
//
char * err = NULL;
rocksdb_readoptions_t
*
ropt
=
rocksdb_readoptions_create
();
//
rocksdb_readoptions_t *ropt = rocksdb_readoptions_create();
val
=
rocksdb_get
(
pMeta
->
pDB
->
mapDb
,
ropt
,
(
char
*
)(
&
suid
),
sizeof
(
suid
),
&
vlen
,
&
err
);
//
val = rocksdb_get(pMeta->pDB->mapDb, ropt, (char *)(&suid), sizeof(suid), &vlen, &err);
rocksdb_readoptions_destroy
(
ropt
);
//
rocksdb_readoptions_destroy(ropt);
void
*
nval
=
malloc
(
vlen
+
sizeof
(
uid
));
//
void *nval = malloc(vlen + sizeof(uid));
if
(
nval
==
NULL
)
{
//
if (nval == NULL) {
return
-
1
;
//
return -1;
}
//
}
if
(
vlen
)
{
//
if (vlen) {
memcpy
(
nval
,
val
,
vlen
);
//
memcpy(nval, val, vlen);
}
//
}
memcpy
(
POINTER_SHIFT
(
nval
,
vlen
),
(
void
*
)(
&
uid
),
sizeof
(
uid
));
//
memcpy(POINTER_SHIFT(nval, vlen), (void *)(&uid), sizeof(uid));
rocksdb_writeoptions_t
*
wopt
=
rocksdb_writeoptions_create
();
//
rocksdb_writeoptions_t *wopt = rocksdb_writeoptions_create();
rocksdb_writeoptions_disable_WAL
(
wopt
,
1
);
//
rocksdb_writeoptions_disable_WAL(wopt, 1);
rocksdb_put
(
pMeta
->
pDB
->
mapDb
,
wopt
,
(
char
*
)(
&
suid
),
sizeof
(
suid
),
nval
,
vlen
+
sizeof
(
uid
),
&
err
);
//
rocksdb_put(pMeta->pDB->mapDb, wopt, (char *)(&suid), sizeof(suid), nval, vlen + sizeof(uid), &err);
rocksdb_writeoptions_destroy
(
wopt
);
//
rocksdb_writeoptions_destroy(wopt);
free
(
nval
);
//
free(nval);
return
0
;
// return 0;
}
// }
\ No newline at end of file
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录