LocalMetaImpl.h 3.0 KB
Newer Older
X
Xu Peng 已提交
1 2 3 4 5 6
////////////////////////////////////////////////////////////////////////////////
// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
// Unauthorized copying of this file, via any medium is strictly prohibited.
// Proprietary and confidential.
////////////////////////////////////////////////////////////////////////////////
#pragma once
X
Xu Peng 已提交
7 8 9 10 11 12 13 14 15 16 17

#include "Meta.h"
#include "Options.h"

namespace zilliz {
namespace vecwise {
namespace engine {
namespace meta {

class LocalMetaImpl : public Meta {
public:
X
Xu Peng 已提交
18
    const size_t INDEX_TRIGGER_SIZE = 1024*1024*500;
X
Xu Peng 已提交
19 20
    LocalMetaImpl(const DBMetaOptions& options_);

21 22
    virtual Status add_group(GroupSchema& group_info_) override;
    virtual Status get_group(GroupSchema& group_info_) override;
X
Xu Peng 已提交
23 24
    virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override;

X
Xu Peng 已提交
25 26 27
    virtual Status add_group_file(GroupFileSchema& group_file_info) override;
    /* virtual Status delete_group_partitions(const std::string& group_id, */
    /*         const meta::DatesT& dates) override; */
X
Xu Peng 已提交
28 29 30 31 32 33 34

    virtual Status has_group_file(const std::string& group_id_,
                                  const std::string& file_id_,
                                  bool& has_or_not_) override;
    virtual Status get_group_file(const std::string& group_id_,
                                  const std::string& file_id_,
                                  GroupFileSchema& group_file_info_) override;
35
    virtual Status update_group_file(GroupFileSchema& group_file_) override;
X
Xu Peng 已提交
36 37 38 39 40

    virtual Status get_group_files(const std::string& group_id_,
                                   const int date_delta_,
                                   GroupFilesSchema& group_files_info_) override;

41
    virtual Status update_files(GroupFilesSchema& files) override;
X
Xu Peng 已提交
42

X
Xu Peng 已提交
43 44
    virtual Status cleanup() override;

X
Xu Peng 已提交
45 46 47 48 49
    virtual Status files_to_merge(const std::string& group_id,
            DatePartionedGroupFilesSchema& files) override;

    virtual Status files_to_index(GroupFilesSchema&) override;

X
Xu Peng 已提交
50 51
    virtual Status cleanup_ttl_files(uint16_t seconds) override;

X
Xu Peng 已提交
52 53
    virtual Status count(const std::string& group_id, long& result) override;

X
Xu Peng 已提交
54 55
    virtual Status drop_all() override;

X
Xu Peng 已提交
56 57
private:

X
Xu Peng 已提交
58 59 60 61 62 63
    Status GetGroupMetaInfoByPath(const std::string& path, GroupSchema& group_info);
    std::string GetGroupMetaPathByGroupPath(const std::string& group_path);
    Status GetGroupMetaInfo(const std::string& group_id, GroupSchema& group_info);
    std::string GetNextGroupFileLocationByPartition(const std::string& group_id, DateT& date,
        GroupFileSchema::FILE_TYPE file_type);
    std::string GetGroupDatePartitionPath(const std::string& group_id, DateT& date);
X
Xu Peng 已提交
64 65 66 67
    std::string GetGroupPath(const std::string& group_id);
    std::string GetGroupMetaPath(const std::string& group_id);

    Status CreateGroupMeta(const GroupSchema& group_schema);
X
Xu Peng 已提交
68
    long GetFileSize(const std::string& filename);
X
Xu Peng 已提交
69 70 71 72 73 74 75 76 77 78 79

    Status initialize();

    const DBMetaOptions _options;

}; // LocalMetaImpl

} // namespace meta
} // namespace engine
} // namespace vecwise
} // namespace zilliz