提交 e940d3c4 编写于 作者: J jinhai

Merge branch 'branch-0.4.0' into 'branch-0.4.0'

refine code

See merge request megasearch/milvus!473

Former-commit-id: 9cf729c16944ec29956944a88b4578fd9795b6c9
/*******************************************************************************
* Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
#include "DBImpl.h"
#include "Factories.h"
namespace zilliz {
namespace milvus {
namespace engine {
DB::~DB() = default;
void DB::Open(const Options& options, DB** dbptr) {
*dbptr = DBFactory::Build(options);
}
} // namespace engine
} // namespace milvus
} // namespace zilliz
...@@ -20,7 +20,11 @@ class Env; ...@@ -20,7 +20,11 @@ class Env;
class DB { class DB {
public: public:
static void Open(const Options& options, DB** dbptr); DB() = default;
DB(const DB&) = delete;
DB& operator=(const DB&) = delete;
virtual ~DB() = default;
virtual Status Start() = 0; virtual Status Start() = 0;
virtual Status Stop() = 0; virtual Status Stop() = 0;
...@@ -55,11 +59,6 @@ public: ...@@ -55,11 +59,6 @@ public:
virtual Status DropAll() = 0; virtual Status DropAll() = 0;
DB() = default;
DB(const DB&) = delete;
DB& operator=(const DB&) = delete;
virtual ~DB() = 0;
}; // DB }; // DB
} // namespace engine } // namespace engine
......
...@@ -35,6 +35,7 @@ class DBImpl : public DB { ...@@ -35,6 +35,7 @@ class DBImpl : public DB {
using MetaPtr = meta::Meta::Ptr; using MetaPtr = meta::Meta::Ptr;
explicit DBImpl(const Options &options); explicit DBImpl(const Options &options);
~DBImpl();
Status Start() override; Status Start() override;
Status Stop() override; Status Stop() override;
...@@ -91,8 +92,6 @@ class DBImpl : public DB { ...@@ -91,8 +92,6 @@ class DBImpl : public DB {
Status DropIndex(const std::string& table_id) override; Status DropIndex(const std::string& table_id) override;
~DBImpl() override;
private: private:
Status QueryAsync(const std::string &table_id, Status QueryAsync(const std::string &table_id,
const meta::TableFilesSchema &files, const meta::TableFilesSchema &files,
......
...@@ -29,17 +29,34 @@ class Metrics { ...@@ -29,17 +29,34 @@ class Metrics {
private: private:
static MetricsBase &CreateMetricsCollector(); static MetricsBase &CreateMetricsCollector();
}; };
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectMetricsBase {
protected:
CollectMetricsBase() {
start_time_ = METRICS_NOW_TIME;
}
virtual ~CollectMetricsBase() = default;
double TimeFromBegine() {
auto end_time = METRICS_NOW_TIME;
return METRICS_MICROSECONDS(start_time_, end_time);
}
protected:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
};
class CollectInsertMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectInsertMetrics : CollectMetricsBase {
public: public:
CollectInsertMetrics(size_t n, engine::Status& status) : n_(n), status_(status) { CollectInsertMetrics(size_t n, engine::Status& status) : n_(n), status_(status) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectInsertMetrics() { ~CollectInsertMetrics() {
if(n_ > 0) { if(n_ > 0) {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
double avg_time = total_time / n_; double avg_time = total_time / n_;
for (int i = 0; i < n_; ++i) { for (int i = 0; i < n_; ++i) {
Metrics::GetInstance().AddVectorsDurationHistogramOberve(avg_time); Metrics::GetInstance().AddVectorsDurationHistogramOberve(avg_time);
...@@ -57,22 +74,19 @@ public: ...@@ -57,22 +74,19 @@ public:
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
size_t n_; size_t n_;
engine::Status& status_; engine::Status& status_;
}; };
class CollectQueryMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectQueryMetrics : CollectMetricsBase {
public: public:
CollectQueryMetrics(size_t nq) : nq_(nq) { CollectQueryMetrics(size_t nq) : nq_(nq) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectQueryMetrics() { ~CollectQueryMetrics() {
if(nq_ > 0) { if(nq_ > 0) {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
for (int i = 0; i < nq_; ++i) { for (int i = 0; i < nq_; ++i) {
server::Metrics::GetInstance().QueryResponseSummaryObserve(total_time); server::Metrics::GetInstance().QueryResponseSummaryObserve(total_time);
} }
...@@ -83,112 +97,90 @@ public: ...@@ -83,112 +97,90 @@ public:
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
size_t nq_; size_t nq_;
}; };
class CollectMergeFilesMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectMergeFilesMetrics : CollectMetricsBase {
public: public:
CollectMergeFilesMetrics() { CollectMergeFilesMetrics() {
start_time_ = METRICS_NOW_TIME;
} }
~CollectMergeFilesMetrics() { ~CollectMergeFilesMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
server::Metrics::GetInstance().MemTableMergeDurationSecondsHistogramObserve(total_time); server::Metrics::GetInstance().MemTableMergeDurationSecondsHistogramObserve(total_time);
} }
private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
}; };
class CollectBuildIndexMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectBuildIndexMetrics : CollectMetricsBase {
public: public:
CollectBuildIndexMetrics() { CollectBuildIndexMetrics() {
start_time_ = METRICS_NOW_TIME;
} }
~CollectBuildIndexMetrics() { ~CollectBuildIndexMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
server::Metrics::GetInstance().BuildIndexDurationSecondsHistogramObserve(total_time); server::Metrics::GetInstance().BuildIndexDurationSecondsHistogramObserve(total_time);
} }
private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
}; };
class CollectExecutionEngineMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectExecutionEngineMetrics : CollectMetricsBase {
public: public:
CollectExecutionEngineMetrics(double physical_size) : physical_size_(physical_size) { CollectExecutionEngineMetrics(double physical_size) : physical_size_(physical_size) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectExecutionEngineMetrics() { ~CollectExecutionEngineMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
server::Metrics::GetInstance().FaissDiskLoadDurationSecondsHistogramObserve(total_time); server::Metrics::GetInstance().FaissDiskLoadDurationSecondsHistogramObserve(total_time);
server::Metrics::GetInstance().FaissDiskLoadSizeBytesHistogramObserve(physical_size_); server::Metrics::GetInstance().FaissDiskLoadSizeBytesHistogramObserve(physical_size_);
server::Metrics::GetInstance().FaissDiskLoadIOSpeedGaugeSet(physical_size_ / double(total_time)); server::Metrics::GetInstance().FaissDiskLoadIOSpeedGaugeSet(physical_size_ / double(total_time));
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
double physical_size_; double physical_size_;
}; };
class CollectSerializeMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectSerializeMetrics : CollectMetricsBase {
public: public:
CollectSerializeMetrics(size_t size) : size_(size) { CollectSerializeMetrics(size_t size) : size_(size) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectSerializeMetrics() { ~CollectSerializeMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
server::Metrics::GetInstance().DiskStoreIOSpeedGaugeSet((double) size_ / total_time); server::Metrics::GetInstance().DiskStoreIOSpeedGaugeSet((double) size_ / total_time);
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
size_t size_; size_t size_;
}; };
class CollectAddMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectAddMetrics : CollectMetricsBase {
public: public:
CollectAddMetrics(size_t n, uint16_t dimension) : n_(n), dimension_(dimension) { CollectAddMetrics(size_t n, uint16_t dimension) : n_(n), dimension_(dimension) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectAddMetrics() { ~CollectAddMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
server::Metrics::GetInstance().AddVectorsPerSecondGaugeSet(static_cast<int>(n_), server::Metrics::GetInstance().AddVectorsPerSecondGaugeSet(static_cast<int>(n_),
static_cast<int>(dimension_), static_cast<int>(dimension_),
total_time); total_time);
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
size_t n_; size_t n_;
uint16_t dimension_; uint16_t dimension_;
}; };
class CollectDurationMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectDurationMetrics : CollectMetricsBase {
public: public:
CollectDurationMetrics(int index_type) : index_type_(index_type) { CollectDurationMetrics(int index_type) : index_type_(index_type) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectDurationMetrics() { ~CollectDurationMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
switch (index_type_) { switch (index_type_) {
case engine::meta::TableFileSchema::RAW: { case engine::meta::TableFileSchema::RAW: {
server::Metrics::GetInstance().SearchRawDataDurationSecondsHistogramObserve(total_time); server::Metrics::GetInstance().SearchRawDataDurationSecondsHistogramObserve(total_time);
...@@ -205,20 +197,17 @@ public: ...@@ -205,20 +197,17 @@ public:
} }
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
int index_type_; int index_type_;
}; };
class CollectSearchTaskMetrics { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CollectSearchTaskMetrics : CollectMetricsBase {
public: public:
CollectSearchTaskMetrics(int index_type) : index_type_(index_type) { CollectSearchTaskMetrics(int index_type) : index_type_(index_type) {
start_time_ = METRICS_NOW_TIME;
} }
~CollectSearchTaskMetrics() { ~CollectSearchTaskMetrics() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
switch(index_type_) { switch(index_type_) {
case engine::meta::TableFileSchema::RAW: { case engine::meta::TableFileSchema::RAW: {
server::Metrics::GetInstance().SearchRawDataDurationSecondsHistogramObserve(total_time); server::Metrics::GetInstance().SearchRawDataDurationSecondsHistogramObserve(total_time);
...@@ -236,27 +225,20 @@ public: ...@@ -236,27 +225,20 @@ public:
} }
private: private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
int index_type_; int index_type_;
}; };
class MetricCollector { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class MetricCollector : CollectMetricsBase {
public: public:
MetricCollector() { MetricCollector() {
server::Metrics::GetInstance().MetaAccessTotalIncrement(); server::Metrics::GetInstance().MetaAccessTotalIncrement();
start_time_ = METRICS_NOW_TIME;
} }
~MetricCollector() { ~MetricCollector() {
auto end_time = METRICS_NOW_TIME; auto total_time = TimeFromBegine();
auto total_time = METRICS_MICROSECONDS(start_time_, end_time);
server::Metrics::GetInstance().MetaAccessDurationSecondsHistogramObserve(total_time); server::Metrics::GetInstance().MetaAccessDurationSecondsHistogramObserve(total_time);
} }
private:
using TIME_POINT = std::chrono::system_clock::time_point;
TIME_POINT start_time_;
}; };
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "DBWrapper.h" #include "DBWrapper.h"
#include "ServerConfig.h" #include "ServerConfig.h"
#include "db/Factories.h"
#include "utils/CommonUtil.h" #include "utils/CommonUtil.h"
#include "utils/Log.h" #include "utils/Log.h"
#include "utils/StringHelpFunctions.h" #include "utils/StringHelpFunctions.h"
...@@ -95,8 +96,7 @@ ServerError DBWrapper::StartService() { ...@@ -95,8 +96,7 @@ ServerError DBWrapper::StartService() {
//create db instance //create db instance
std::string msg = opt.meta.path; std::string msg = opt.meta.path;
try { try {
engine::DB* db = nullptr; engine::DB* db = engine::DBFactory::Build(opt);
zilliz::milvus::engine::DB::Open(opt, &db);
db_.reset(db); db_.reset(db);
} catch(std::exception& ex) { } catch(std::exception& ex) {
msg = ex.what(); msg = ex.what();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册