提交 4428d566 编写于 作者: X Xu Peng

refactor(db): trait for engine and dbimpl


Former-commit-id: c42d9f4d7168b4d8e374ddb5ed0499ea1394a306
上级 b36a5247
/*******************************************************************************
* Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
#include "DBImpl.h"
#include "DBMetaImpl.h"
#include "Env.h"
/* #include "FaissExecutionEngine.h" */
/* #include "Traits.h" */
#include "Factories.h"
namespace zilliz {
namespace vecwise {
namespace engine {
DB::~DB() {}
void DB::Open(const Options& options, DB** dbptr) {
*dbptr = nullptr;
/* *dbptr = new DBImpl<FaissExecutionEngine<IVFIndexTrait>>(options); */
*dbptr = DBFactory::Build(options);
return;
}
} // namespace engine
} // namespace vecwise
} // namespace zilliz
......@@ -3,6 +3,8 @@
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
#ifndef DBIMPL_CPP__
#define DBIMPL_CPP__
#include <assert.h>
#include <chrono>
......@@ -16,8 +18,6 @@
#include "DBImpl.h"
#include "DBMetaImpl.h"
#include "Env.h"
#include "FaissExecutionEngine.h"
#include "Traits.h"
namespace zilliz {
namespace vecwise {
......@@ -408,18 +408,8 @@ DBImpl<EngineT>::~DBImpl() {
_env->Stop();
}
/*
* DB
*/
DB::~DB() {}
void DB::Open(const Options& options, DB** dbptr) {
*dbptr = nullptr;
*dbptr = new DBImpl<FaissExecutionEngine<IVFIndexTrait>>(options);
return;
}
} // namespace engine
} // namespace vecwise
} // namespace zilliz
#endif
......@@ -12,6 +12,8 @@
#include "DB.h"
#include "MemManager.h"
#include "Types.h"
#include "FaissExecutionEngine.h"
#include "Traits.h"
namespace zilliz {
namespace vecwise {
......@@ -90,6 +92,9 @@ private:
}; // DBImpl
} // namespace engine
} // namespace vecwise
} // namespace zilliz
#include "DBImpl.cpp"
......@@ -6,8 +6,15 @@
#include <stdlib.h>
#include <time.h>
#include <sstream>
#include <iostream>
#include <vector>
#include <assert.h>
#include <easylogging++.h>
#include "Factories.h"
#include "DBImpl.h"
#include "FaissExecutionEngine.h"
#include "Traits.h"
namespace zilliz {
......@@ -39,6 +46,30 @@ std::shared_ptr<meta::DBMetaImpl> DBMetaImplFactory::Build() {
return std::shared_ptr<meta::DBMetaImpl>(new meta::DBMetaImpl(options));
}
std::shared_ptr<DB> DBFactory::Build(const std::string& db_type) {
auto options = OptionsFactory::Build();
auto db = DBFactory::Build(options, db_type);
return std::shared_ptr<DB>(db);
}
DB* DBFactory::Build(const Options& options, const std::string& db_type) {
std::stringstream ss(db_type);
std::string token;
std::vector<std::string> tokens;
while (std::getline(ss, token, ',')) {
tokens.push_back(token);
}
assert(tokens.size()==2);
assert(tokens[0]=="Faiss");
if (tokens[1] == "IVF") {
return new DBImpl<FaissExecutionEngine<IVFIndexTrait>>(options);
} else if (tokens[1] == "IDMap") {
return new DBImpl<FaissExecutionEngine<IDMapIndexTrait>>(options);
}
return nullptr;
}
} // namespace engine
} // namespace vecwise
} // namespace zilliz
......@@ -8,8 +8,9 @@
#include <string>
#include <memory>
#include "db/DB.h"
#include "DB.h"
#include "DBMetaImpl.h"
#include "Options.h"
namespace zilliz {
namespace vecwise {
......@@ -27,6 +28,11 @@ struct DBMetaImplFactory {
static std::shared_ptr<meta::DBMetaImpl> Build();
};
struct DBFactory {
static std::shared_ptr<DB> Build(const std::string& db_type = "Faiss,IVF");
static DB* Build(const Options&, const std::string& db_type = "Faiss,IVF");
};
} // namespace engine
} // namespace vecwise
} // namespace zilliz
......@@ -33,12 +33,11 @@ void DBTest::SetUp() {
InitLog();
auto options = engine::OptionsFactory::Build();
options.meta.path = "/tmp/vecwise_test";
engine::DB::Open(options, &db_);
db_ = engine::DBFactory::Build(options, "Faiss,IDMap");
}
void DBTest::TearDown() {
delete db_;
db_ = nullptr;
auto options = engine::OptionsFactory::Build();
boost::filesystem::remove_all("/tmp/vecwise_test");
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册