This commit is contained in:
Hongze Cheng 2021-10-08 10:38:22 +08:00
parent 4e306a79cd
commit d89aae08a2
3 changed files with 98 additions and 72 deletions

View File

@ -20,52 +20,25 @@
extern "C" { extern "C" {
#endif #endif
typedef struct tkv_db_s tkv_db_t; // Types exported
typedef struct STkvDb STkvDb;
typedef struct STkvOptions STkvOptions;
typedef struct STkvCache STkvCache;
typedef struct { // DB operations
/* data */ STkvDb *tkvOpen(const STkvOptions *options, const char *path);
} tkv_key_t; void tkvClose(STkvDb *db);
void tkvPut(STkvDb *db, void * /*TODO*/);
typedef struct { // DB options
bool pinned; STkvOptions *tkvOptionsCreate();
int64_t ref; // TODO: use util library void tkvOptionsDestroy(STkvOptions *);
// TODO: add a RW latch here void tkvOptionsSetCache(STkvOptions *, STkvCache *);
uint64_t offset;
void * pObj;
} tkv_obj_t;
typedef int (*tkv_key_comp_fn_t)(const tkv_key_t *, const tkv_key_t *); // DB cache
typedef void (*tkv_get_key_fn_t)(const tkv_obj_t *, tkv_key_t *); typedef enum { TKV_LRU_CACHE = 0, TKV_LFU_CACHE = 1 } ETkvCacheType;
typedef int (*tkv_obj_encode_fn_t)(void **buf, void *pObj); STkvCache *tkvCacheCreate(size_t capacity, ETkvCacheType type);
typedef void *(*tkv_obj_decode_fn_t)(void *buf, void **pObj); void tkvCacheDestroy(STkvCache *);
typedef int (*tkv_obj_comp_fn_t)(const tkv_obj_t *, const tkv_obj_t *);
typedef void (*tkv_obj_destroy_fn_t)(void *);
typedef struct {
uint64_t memLimit;
tkv_get_key_fn_t getKey;
tkv_obj_encode_fn_t encode;
tkv_obj_decode_fn_t decode;
tkv_obj_comp_fn_t compare;
tkv_obj_destroy_fn_t destroy;
} tkv_db_option_t;
tkv_db_t * tkvOpenDB(char *dir, tkv_db_option_t *);
int tkvCloseDB(tkv_db_t *);
int tkvPut(tkv_db_t *, tkv_obj_t *);
int tkvPutBatch(tkv_db_t *, tkv_obj_t **, int); // TODO: use array here
const tkv_obj_t *tkvGet(tkv_key_t *);
int tkvGetBatch(tkv_db_t *, tkv_key_t **, int, tkv_obj_t **); // TODO: use array here
int tkvDrop(tkv_db_t *, tkv_key_t *);
int tkvDropBatch(tkv_db_t *, tkv_key_t **, int); // TODO: use array here
int tkvCommit(tkv_db_t *, void * /*TODO*/);
typedef struct {
} tkv_db_iter_t;
tkv_db_iter_t * tkvIterNew(tkv_db_t *);
void tkvIterFree(tkv_db_iter_t *);
const tkv_obj_t *tkvIterNext(tkv_db_iter_t *);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -18,16 +18,42 @@
#include "taosMsg.h" #include "taosMsg.h"
#include "os.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
typedef struct SMeta SMeta; typedef uint64_t tuid_t;
int metaCreateTable(SMeta *pMeta, SCreateTableReq *pReq); // Types exported
int metaDropTable(SMeta *pMeta, SDropTableReq *pReq); typedef struct SMeta SMeta;
int metaAlterTable(SMeta *pMeta, SAlterTableReq *pReq); typedef struct SMetaOptions SMetaOptions;
int metaCommit(SMeta *pMeta); typedef struct SMetaQueryHandle SMetaQueryHandle;
typedef struct SMetaQueryOptions SMetaQueryOptions;
// SMeta operations
int metaCreate(const char *path);
int metaDestroy(const char *path);
SMeta *metaOpen(SMetaOptions *);
void metaClose(SMeta *);
int metaCreateTable(SMeta *, void *);
int metaDropTable(SMeta *, uint64_t tuid_t);
int metaAlterTable(SMeta *, void *);
int metaCommit(SMeta *);
// Options
SMetaOptions *metaOptionsCreate();
void metaOptionsDestroy(SMetaOptions *);
void metaOptionsSetCache(SMetaOptions *, size_t capacity);
// SMetaQueryHandle
SMetaQueryHandle *metaQueryHandleCreate(SMetaQueryOptions *);
void metaQueryHandleDestroy(SMetaQueryHandle *);
// SMetaQueryOptions
SMetaQueryOptions *metaQueryOptionsCreate();
void metaQueryOptionsDestroy(SMetaQueryOptions *);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -23,33 +23,60 @@
extern "C" { extern "C" {
#endif #endif
typedef struct STsdb STsdb; // Types exported
typedef struct { typedef struct STsdb STsdb;
int32_t id; // TODO: use a global definition typedef struct STsdbOptions STsdbOptions;
int32_t days; typedef struct STsdbSMAOptions STsdbSMAOptions; // SMA stands for Small Materialized Aggregation
int32_t keep; typedef struct STsdbReadOptions STsdbReadOptions;
int32_t keep1; typedef struct STsdbSnapshot STsdbSnapshot;
int32_t keep2; typedef struct STsdbQueryHandle STsdbQueryHandle;
int32_t minRows;
int32_t maxRows;
int8_t precision;
int8_t update;
} STsdbCfg;
// Module init and clear // DB operations
int tsdbInit(); int tsdbCreate(const char *path);
int tsdbClear(); int tsdbDestroy(const char *path);
STsdb *tsdbOpen(const STsdbOptions *options);
void tsdbClose(STsdb *);
int tsdbReset(STsdb *, const STsdbOptions *);
int tsdbInsert(STsdb *, SSubmitReq *, SSubmitRsp *);
int tsdbCommit(STsdb *);
int tsdbCompact(STsdb *);
// Repository operations // Options
int tsdbCreateRepo(int id); STsdbOptions *tsdbOptionsCreate();
int tsdbDropRepo(int id); void tsdbOptionsDestroy(STsdbOptions *);
STsdb *tsdbOpenRepo(STsdbCfg *pCfg); void tsdbOptionsSetId(STsdbOptions *, int id);
int tsdbCloseRepo(STsdb *pTsdb); void tsdbOptionsSetHoursPerFile(STsdbOptions *, int hours);
int tsdbForceCloseRepo(STsdb *pTsdb); void tsdbOptionsSetRetention(STsdbOptions *, int keep, int keep1, int keep2);
void tsdbOptionsSetMinAndMaxRows(STsdbOptions *, int minRows, int maxRows);
void tsdbOptionsSetPrecision(STsdbOptions *, int);
void tsdbOptionsSetCache(STsdbOptions *, int);
typedef enum { TSDB_NO_UPDATE = 0, TSDB_WHOLE_ROW_UPDATE = 1, TSDB_PARTIAL_ROW_UPDATE = 2 } ETsdbUpdateType;
void tsdbOptionsSetUpdate(STsdbOptions *, ETsdbUpdateType);
void tsdbOptionsSetSMA(STsdbOptions *, STsdbSMAOptions *);
// Data commit // STsdbSMAOptions
int tsdbInsert(STsdb *pTsdb, SSubmitReq *pMsg); STsdbSMAOptions *tsdbSMAOptionsCreate();
int tsdbCommit(STsdb *pTsdb); void tsdbSMAOptionsDestroy(STsdbSMAOptions *);
void tsdbSMAOptionsSetFuncs(STsdbSMAOptions *, SArray * /*Array of function to perform on each block*/);
void tsdbSMAOptionsSetIntervals(STsdbSMAOptions *, SArray *);
void tsdbSMAOptionsSetColTypes(STsdbSMAOptions *, SArray *);
// STsdbQueryHandle
STsdbQueryHandle *tsdbQueryHandleCreate(STsdb *, STsdbReadOptions *);
void tsdbQueryHandleDestroy(STsdbQueryHandle *);
void tsdbResetQueryHandle(STsdbQueryHandle *, STsdbReadOptions *);
bool tsdbNextDataBlock(STsdbQueryHandle *);
void tsdbGetDataBlockInfo(STsdbQueryHandle *, SDataBlockInfo *);
void tsdbGetDataBlockStatisInfo(STsdbQueryHandle *, SDataStatis **);
// STsdbReadOptions
STsdbReadOptions *tsdbReadOptionsCreate();
void tsdbReadOptionsDestroy(STsdbReadOptions *);
void tsdbReadOptionsSetSnapshot(STsdbReadOptions *, STsdbSnapshot *);
// STsdbSnapshot
STsdbSnapshot *tsdbSnapshotCreate(STsdb *);
void tsdbSnapshotDestroy(STsdbSnapshot *);
#ifdef __cplusplus #ifdef __cplusplus
} }