29 std::cout <<
"=== Time Series Storage Example ===" << std::endl;
35 config.memtable_size_mb = 16;
38 auto engine = std::make_unique<timeseries_engine>(config);
41 std::cout <<
"\nWriting test metrics..." << std::endl;
42 auto now = std::chrono::steady_clock::now();
44 for (
int i = 0; i < 10; ++i) {
45 double value = 100.0 + i * 10;
46 auto timestamp = now - std::chrono::seconds(60 * (10 - i));
48 engine->write(
"cpu.usage", value, timestamp, {{
"host",
"server1"}});
49 engine->write(
"memory.usage", value * 0.8, timestamp, {{
"host",
"server1"}});
51 std::cout <<
" Written metric at t-" << (10 - i) <<
" minutes: " << value << std::endl;
55 std::cout <<
"\nQuerying CPU usage for last hour..." << std::endl;
56 auto results = engine->query(
"cpu.usage",
57 now - std::chrono::hours(1),
59 {{
"host",
"server1"}});
61 for (
const auto& series : results) {
62 std::cout <<
"Series: " << series.metric_name << std::endl;
63 std::cout <<
" Points: " << series.points.size() << std::endl;
64 std::cout <<
" Min: " << series.min_value << std::endl;
65 std::cout <<
" Max: " << series.max_value << std::endl;
66 std::cout <<
" Avg: " << series.average() << std::endl;
70 std::cout <<
"\n=== Metric Database Example ===" << std::endl;
72 database_config db_config;
73 db_config.data_directory =
"./metrics_test_db";
74 db_config.partition_strategy = partition_strategy::by_metric_name;
76 auto database = std::make_unique<metric_database>(db_config);
79 std::vector<metric> batch;
80 for (
int i = 0; i < 5; ++i) {
82 m.
name =
"test.metric";
84 m.
timestamp = std::chrono::system_clock::now();
85 m.
tags = {{
"env",
"test"}, {
"instance", std::to_string(i)}};
89 size_t written = database->write_batch(batch);
90 std::cout <<
"Written " << written <<
" metrics to database" << std::endl;
93 std::cout <<
"\n=== Query Engine Example ===" << std::endl;
95 auto query_engine = std::make_unique<metric_query_engine>(database.get());
98 std::string query_str =
"SELECT cpu.usage WHERE host='server1' FROM -1h";
99 std::cout <<
"Query: " << query_str << std::endl;
102 auto stats = database->get_stats();
103 std::cout <<
"\nDatabase Statistics:" << std::endl;
104 std::cout <<
" Total metrics: " << stats.total_metrics << std::endl;
105 std::cout <<
" Total points: " << stats.total_points << std::endl;
106 std::cout <<
" Total partitions: " << stats.total_partitions << std::endl;
108 std::cout <<
"\nStorage example completed successfully!" << std::endl;