From 779d60a5331db64e5b505aeb5527f558b9af73df Mon Sep 17 00:00:00 2001 From: huangsimin Date: Fri, 6 Mar 2020 09:55:58 +0800 Subject: [PATCH] Table upload --- rocksdb.go | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/rocksdb.go b/rocksdb.go index 8824225..37573e7 100644 --- a/rocksdb.go +++ b/rocksdb.go @@ -4,11 +4,16 @@ import ( "fmt" "log" "os" + "sync/atomic" "time" "github.com/tecbot/gorocksdb" ) +// EDB 全局操作的edb对象 +var EDB *EasyDataBase + +// OpenLog 初始化日志设置 func OpenLog() { f, err := os.OpenFile("./rocksdb.log", os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0660) if err != nil { @@ -19,8 +24,65 @@ func OpenLog() { func init() { OpenLog() + + EDB = NewEasyDataBase() } +func NewEasyDataBase() *EasyDataBase { + edb := &EasyDataBase{} + db, cfs := OpenDataBase() + edb.DB = db + edb.CFS = cfs + return edb +} + +type EasyDataBase struct { + DB *gorocksdb.DB + CFS gorocksdb.ColumnFamilyHandles + + Tables map[uint32]*Table + TableDict map[string]uint32 + + Metadata +} + +type Metadata struct { + tidCount uint32 // int16 +} + +type Field struct { + Name string + Type int + ID int + IsIndex bool + IsUnique bool +} + +type Table struct { + Name string + Type int + ID uint32 // uint16 + + IsAllKey bool + Fields []*Field + + fidCount uint16 // uint16 + idxCount uint64 + rawCount uint64 + delCount uint64 +} + +func CreateTable(name string, field []*Field) { + if _, ok := EDB.TableDict[name]; !ok { + ntid := atomic.AddUint32(&EDB.Metadata.tidCount, 1) + table := &Table{Name: name, ID: ntid, Type: 1} + } else { + log.Println("table name is exists") + } + +} + +// {tableid(2)}{fieldid(2)}{value}{indexid(8)} = {rowid(8)} {rowid} = {values} func OpenDataBase() (*gorocksdb.DB, []*gorocksdb.ColumnFamilyHandle) { bbto := gorocksdb.NewDefaultBlockBasedTableOptions()